[M108 Migration][VD] Provide ewk_settings_clipboard_enabled_set api
[platform/framework/web/chromium-efl.git] / courgette / ensemble_unittest.cc
1 // Copyright 2011 The Chromium Authors
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "build/build_config.h"
6 #include "courgette/base_test_unittest.h"
7 #include "courgette/courgette.h"
8 #include "courgette/streams.h"
9
10 #if BUILDFLAG(IS_WIN) && !defined(NDEBUG)
11 // Ensemble tests still take too long on Debug Windows so disabling for now
12 // TODO(dgarrett) http://code.google.com/p/chromium/issues/detail?id=101614
13 #define MAYBE_PE DISABLED_PE
14 #define MAYBE_PE64 DISABLED_PE64
15 #define MAYBE_Elf32 DISABLED_Elf32
16 #else
17 #define MAYBE_PE PE
18 #define MAYBE_PE64 PE64
19 #define MAYBE_Elf32 Elf32
20 #endif
21
22 class EnsembleTest : public BaseTest {
23  public:
24   void TestEnsemble(const std::string& src_bytes,
25                     const std::string& tgt_bytes) const;
26
27   void PeEnsemble() const;
28   void Pe64Ensemble() const;
29   void Elf32Ensemble() const;
30 };
31
32 void EnsembleTest::TestEnsemble(const std::string& src_bytes,
33                                 const std::string& tgt_bytes) const {
34   courgette::SourceStream source;
35   courgette::SourceStream target;
36
37   source.Init(src_bytes);
38   target.Init(tgt_bytes);
39
40   courgette::SinkStream patch_sink;
41
42   courgette::Status status;
43
44   status = courgette::GenerateEnsemblePatch(&source, &target, &patch_sink);
45   EXPECT_EQ(courgette::C_OK, status);
46
47   courgette::SourceStream patch_source;
48   patch_source.Init(patch_sink.Buffer(), patch_sink.Length());
49
50   courgette::SinkStream patch_result;
51
52   status = courgette::ApplyEnsemblePatch(&source, &patch_source, &patch_result);
53   EXPECT_EQ(courgette::C_OK, status);
54
55   EXPECT_EQ(target.OriginalLength(), patch_result.Length());
56   EXPECT_FALSE(memcmp(target.Buffer(),
57                       patch_result.Buffer(),
58                       target.OriginalLength()));
59 }
60
61 void EnsembleTest::Elf32Ensemble() const {
62   std::list<std::string> src_ensemble;
63   std::list<std::string> tgt_ensemble;
64
65   src_ensemble.push_back("elf-32-1");
66
67   tgt_ensemble.push_back("elf-32-2");
68
69   std::string src_bytes = FilesContents(src_ensemble);
70   std::string tgt_bytes = FilesContents(tgt_ensemble);
71
72   src_bytes = "aaabbbccc" + src_bytes + "dddeeefff";
73   tgt_bytes = "aaagggccc" + tgt_bytes + "dddeeefff";
74
75   TestEnsemble(src_bytes, tgt_bytes);
76 }
77
78 void EnsembleTest::PeEnsemble() const {
79   std::list<std::string> src_ensemble;
80   std::list<std::string> tgt_ensemble;
81
82   src_ensemble.push_back("en-US.dll");
83   src_ensemble.push_back("setup1.exe");
84
85   tgt_ensemble.push_back("en-US.dll");
86   tgt_ensemble.push_back("setup2.exe");
87
88   std::string src_bytes = FilesContents(src_ensemble);
89   std::string tgt_bytes = FilesContents(tgt_ensemble);
90
91   src_bytes = "aaabbbccc" + src_bytes + "dddeeefff";
92   tgt_bytes = "aaagggccc" + tgt_bytes + "dddeeefff";
93
94   TestEnsemble(src_bytes, tgt_bytes);
95 }
96
97 void EnsembleTest::Pe64Ensemble() const {
98   std::list<std::string> src_ensemble;
99   std::list<std::string> tgt_ensemble;
100
101   src_ensemble.push_back("en-US-64.dll");
102   src_ensemble.push_back("chrome64_1.exe");
103   src_ensemble.push_back("pe-64.exe");
104
105   tgt_ensemble.push_back("en-US-64.dll");
106   tgt_ensemble.push_back("chrome64_2.exe");
107   tgt_ensemble.push_back("pe-64.exe");
108
109   std::string src_bytes = FilesContents(src_ensemble);
110   std::string tgt_bytes = FilesContents(tgt_ensemble);
111
112   src_bytes = "aaabbbccc" + src_bytes + "dddeeefff";
113   tgt_bytes = "aaagggccc" + tgt_bytes + "dddeeefff";
114
115   TestEnsemble(src_bytes, tgt_bytes);
116 }
117
118 TEST_F(EnsembleTest, MAYBE_PE) {
119   PeEnsemble();
120 }
121
122 TEST_F(EnsembleTest, MAYBE_PE64) {
123   Pe64Ensemble();
124 }
125
126 TEST_F(EnsembleTest, MAYBE_Elf32) {
127   Elf32Ensemble();
128 }