blob: d35622fffda6ca7adaf490493094aab0d7c70618 [file] [log] [blame]
[email protected]c678e65ed2011-10-19 05:31:591// Copyright (c) 2011 The Chromium Authors. All rights reserved.
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#include "courgette/courgette.h"
7#include "courgette/streams.h"
8
9class EnsembleTest : public BaseTest {
10 public:
11
12 void TestEnsemble(std::string src_bytes, std::string tgt_bytes) const;
13
14 void PeEnsemble() const;
15};
16
17void EnsembleTest::TestEnsemble(std::string src_bytes,
18 std::string tgt_bytes) const {
19
20 courgette::SourceStream source;
21 courgette::SourceStream target;
22
23 source.Init(src_bytes);
24 target.Init(tgt_bytes);
25
26 courgette::SinkStream patch_sink;
27
28 courgette::Status status;
29
30 status = courgette::GenerateEnsemblePatch(&source, &target, &patch_sink);
31 EXPECT_EQ(courgette::C_OK, status);
32
33 courgette::SourceStream patch_source;
34 patch_source.Init(patch_sink.Buffer(), patch_sink.Length());
35
36 courgette::SinkStream patch_result;
37
38 status = courgette::ApplyEnsemblePatch(&source, &patch_source, &patch_result);
39 EXPECT_EQ(courgette::C_OK, status);
40
41 EXPECT_EQ(target.OriginalLength(), patch_result.Length());
42 EXPECT_FALSE(memcmp(target.Buffer(),
43 patch_result.Buffer(),
44 target.OriginalLength()));
45}
46
47void EnsembleTest::PeEnsemble() const {
48 std::list<std::string> src_ensemble;
49 std::list<std::string> tgt_ensemble;
50
51 src_ensemble.push_back("en-US.dll");
52 src_ensemble.push_back("setup1.exe");
53 src_ensemble.push_back("elf-32-1");
54 src_ensemble.push_back("pe-64.exe");
55
56 tgt_ensemble.push_back("en-US.dll");
57 tgt_ensemble.push_back("setup2.exe");
58 tgt_ensemble.push_back("elf-32-2");
59 tgt_ensemble.push_back("pe-64.exe");
60
61 std::string src_bytes = FilesContents(src_ensemble);
62 std::string tgt_bytes = FilesContents(tgt_ensemble);
63
64 src_bytes = "aaabbbccc" + src_bytes + "dddeeefff";
65 tgt_bytes = "aaagggccc" + tgt_bytes + "dddeeefff";
66
67 TestEnsemble(src_bytes, tgt_bytes);
68}
69
[email protected]6f45ef342011-10-26 02:35:0870TEST_F(EnsembleTest, DISABLED_All) {
71 // TODO(dgarrett) http://code.google.com/p/chromium/issues/detail?id=101614
[email protected]c678e65ed2011-10-19 05:31:5972 PeEnsemble();
73}