Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(64)

Side by Side Diff: courgette/encode_decode_unittest.cc

Issue 1650013002: Revert of [Courgette] Refactor: Manage AssemblyProgram and EncodedProgram with scoped_ptr. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « courgette/disassembler.cc ('k') | courgette/encoded_program.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <stddef.h> 5 #include <stddef.h>
6 6
7 #include "base/memory/scoped_ptr.h"
8 #include "courgette/assembly_program.h"
9 #include "courgette/base_test_unittest.h" 7 #include "courgette/base_test_unittest.h"
10 #include "courgette/courgette.h" 8 #include "courgette/courgette.h"
11 #include "courgette/encoded_program.h"
12 #include "courgette/program_detector.h"
13 #include "courgette/streams.h" 9 #include "courgette/streams.h"
14 10
15 class EncodeDecodeTest : public BaseTest { 11 class EncodeDecodeTest : public BaseTest {
16 public: 12 public:
17 void TestAssembleToStreamDisassemble(std::string file, 13 void TestAssembleToStreamDisassemble(std::string file,
18 size_t expected_encoded_lenth) const; 14 size_t expected_encoded_lenth) const;
19 }; 15 };
20 16
21 void EncodeDecodeTest::TestAssembleToStreamDisassemble( 17 void EncodeDecodeTest::TestAssembleToStreamDisassemble(
22 std::string file, 18 std::string file,
23 size_t expected_encoded_lenth) const { 19 size_t expected_encoded_lenth) const {
24 const void* original_buffer = file.c_str(); 20 const void* original_buffer = file.c_str();
25 size_t original_length = file.length(); 21 size_t original_length = file.length();
26 22
27 scoped_ptr<courgette::AssemblyProgram> program; 23 courgette::AssemblyProgram* program = NULL;
28 const courgette::Status parse_status = 24 const courgette::Status parse_status =
29 courgette::ParseDetectedExecutable(original_buffer, 25 courgette::ParseDetectedExecutable(original_buffer,
30 original_length, 26 original_length,
31 &program); 27 &program);
32 EXPECT_EQ(courgette::C_OK, parse_status); 28 EXPECT_EQ(courgette::C_OK, parse_status);
33 29
34 scoped_ptr<courgette::EncodedProgram> encoded; 30 courgette::EncodedProgram* encoded = NULL;
35 const courgette::Status encode_status = Encode(*program, &encoded); 31
32 const courgette::Status encode_status = Encode(program, &encoded);
36 EXPECT_EQ(courgette::C_OK, encode_status); 33 EXPECT_EQ(courgette::C_OK, encode_status);
37 34
38 program.reset(); 35 DeleteAssemblyProgram(program);
39 36
40 courgette::SinkStreamSet sinks; 37 courgette::SinkStreamSet sinks;
41 const courgette::Status write_status = 38 const courgette::Status write_status = WriteEncodedProgram(encoded, &sinks);
42 WriteEncodedProgram(encoded.get(), &sinks);
43 EXPECT_EQ(courgette::C_OK, write_status); 39 EXPECT_EQ(courgette::C_OK, write_status);
44 40
45 encoded.reset(); 41 DeleteEncodedProgram(encoded);
46 42
47 courgette::SinkStream sink; 43 courgette::SinkStream sink;
48 bool can_collect = sinks.CopyTo(&sink); 44 bool can_collect = sinks.CopyTo(&sink);
49 EXPECT_TRUE(can_collect); 45 EXPECT_TRUE(can_collect);
50 46
51 const void* buffer = sink.Buffer(); 47 const void* buffer = sink.Buffer();
52 size_t length = sink.Length(); 48 size_t length = sink.Length();
53 49
54 EXPECT_EQ(expected_encoded_lenth, length); 50 EXPECT_EQ(expected_encoded_lenth, length);
55 51
56 courgette::SourceStreamSet sources; 52 courgette::SourceStreamSet sources;
57 bool can_get_source_streams = sources.Init(buffer, length); 53 bool can_get_source_streams = sources.Init(buffer, length);
58 EXPECT_TRUE(can_get_source_streams); 54 EXPECT_TRUE(can_get_source_streams);
59 55
60 scoped_ptr<courgette::EncodedProgram> encoded2; 56 courgette::EncodedProgram *encoded2 = NULL;
61 const courgette::Status read_status = ReadEncodedProgram(&sources, &encoded2); 57 const courgette::Status read_status = ReadEncodedProgram(&sources, &encoded2);
62 EXPECT_EQ(courgette::C_OK, read_status); 58 EXPECT_EQ(courgette::C_OK, read_status);
63 59
64 courgette::SinkStream assembled; 60 courgette::SinkStream assembled;
65 const courgette::Status assemble_status = 61 const courgette::Status assemble_status = Assemble(encoded2, &assembled);
66 Assemble(encoded2.get(), &assembled);
67 EXPECT_EQ(courgette::C_OK, assemble_status); 62 EXPECT_EQ(courgette::C_OK, assemble_status);
68 63
69 encoded2.reset();
70
71 const void* assembled_buffer = assembled.Buffer(); 64 const void* assembled_buffer = assembled.Buffer();
72 size_t assembled_length = assembled.Length(); 65 size_t assembled_length = assembled.Length();
73 66
74 EXPECT_EQ(original_length, assembled_length); 67 EXPECT_EQ(original_length, assembled_length);
75 EXPECT_EQ(0, memcmp(original_buffer, assembled_buffer, original_length)); 68 EXPECT_EQ(0, memcmp(original_buffer, assembled_buffer, original_length));
69
70 DeleteEncodedProgram(encoded2);
76 } 71 }
77 72
78 TEST_F(EncodeDecodeTest, PE) { 73 TEST_F(EncodeDecodeTest, PE) {
79 std::string file = FileContents("setup1.exe"); 74 std::string file = FileContents("setup1.exe");
80 TestAssembleToStreamDisassemble(file, 972845); 75 TestAssembleToStreamDisassemble(file, 972845);
81 } 76 }
82 77
83 TEST_F(EncodeDecodeTest, PE64) { 78 TEST_F(EncodeDecodeTest, PE64) {
84 std::string file = FileContents("chrome64_1.exe"); 79 std::string file = FileContents("chrome64_1.exe");
85 TestAssembleToStreamDisassemble(file, 809635); 80 TestAssembleToStreamDisassemble(file, 809635);
86 } 81 }
87 82
88 TEST_F(EncodeDecodeTest, Elf_Small) { 83 TEST_F(EncodeDecodeTest, Elf_Small) {
89 std::string file = FileContents("elf-32-1"); 84 std::string file = FileContents("elf-32-1");
90 TestAssembleToStreamDisassemble(file, 136218); 85 TestAssembleToStreamDisassemble(file, 136218);
91 } 86 }
92 87
93 TEST_F(EncodeDecodeTest, Elf_HighBSS) { 88 TEST_F(EncodeDecodeTest, Elf_HighBSS) {
94 std::string file = FileContents("elf-32-high-bss"); 89 std::string file = FileContents("elf-32-high-bss");
95 TestAssembleToStreamDisassemble(file, 7312); 90 TestAssembleToStreamDisassemble(file, 7312);
96 } 91 }
OLDNEW
« no previous file with comments | « courgette/disassembler.cc ('k') | courgette/encoded_program.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698