[M108 Migration][HBBTV] Implement ewk_context_register_jsplugin_mime_types API
[platform/framework/web/chromium-efl.git] / courgette / versioning_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 "courgette/base_test_unittest.h"
6
7 #include <stddef.h>
8
9 #include <string>
10
11 #include "courgette/courgette.h"
12 #include "courgette/streams.h"
13 #include "courgette/third_party/bsdiff/bsdiff.h"
14
15 class VersioningTest : public BaseTest {
16  public:
17   void TestApplyingOldBsDiffPatch(const char* src_file,
18                                   const char* patch_file,
19                                   const char* expected_file) const;
20 };
21
22 void VersioningTest::TestApplyingOldBsDiffPatch(
23     const char* src_file,
24     const char* patch_file,
25     const char* expected_file) const {
26   std::string old_buffer = FileContents(src_file);
27   std::string new_buffer = FileContents(patch_file);
28   std::string expected_buffer = FileContents(expected_file);
29
30   courgette::SourceStream old_stream;
31   courgette::SourceStream patch_stream;
32   old_stream.Init(old_buffer);
33   patch_stream.Init(new_buffer);
34
35   courgette::SinkStream generated_stream;
36
37   bsdiff::BSDiffStatus status = bsdiff::ApplyBinaryPatch(
38       &old_stream, &patch_stream, &generated_stream);
39
40   EXPECT_EQ(status, bsdiff::OK);
41
42   size_t expected_length = expected_buffer.size();
43   size_t generated_length = generated_stream.Length();
44
45   EXPECT_EQ(generated_length, expected_length);
46   EXPECT_EQ(0, memcmp(generated_stream.Buffer(),
47                       expected_buffer.c_str(),
48                       expected_length));
49 }
50
51 TEST_F(VersioningTest, BsDiff) {
52   TestApplyingOldBsDiffPatch("setup1.exe", "setup1-setup2.v1.bsdiff",
53                              "setup2.exe");
54   TestApplyingOldBsDiffPatch("chrome64_1.exe", "chrome64-1-2.v1.bsdiff",
55                              "chrome64_2.exe");
56
57   // We also need a way to test that newly generated patches are appropriately
58   // applicable by older clients... not sure of the best way to do that.
59 }