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

Side by Side Diff: courgette/adjustment_method_unittest.cc

Issue 1855133002: convert //courgette to std::unique_ptr (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: update comment in memory_allocator.h Created 4 years, 8 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 | « no previous file | courgette/assembly_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 <memory>
5 #include <string> 6 #include <string>
6 #include <utility> 7 #include <utility>
7 8
8 #include "base/memory/scoped_ptr.h"
9 #include "base/strings/string_util.h" 9 #include "base/strings/string_util.h"
10 #include "courgette/assembly_program.h" 10 #include "courgette/assembly_program.h"
11 #include "courgette/courgette.h" 11 #include "courgette/courgette.h"
12 #include "courgette/encoded_program.h" 12 #include "courgette/encoded_program.h"
13 #include "courgette/streams.h" 13 #include "courgette/streams.h"
14 14
15 #include "testing/gtest/include/gtest/gtest.h" 15 #include "testing/gtest/include/gtest/gtest.h"
16 16
17 class AdjustmentMethodTest : public testing::Test { 17 class AdjustmentMethodTest : public testing::Test {
18 public: 18 public:
19 void Test1() const; 19 void Test1() const;
20 20
21 private: 21 private:
22 void SetUp() { 22 void SetUp() {
23 } 23 }
24 24
25 void TearDown() { 25 void TearDown() {
26 } 26 }
27 27
28 // Returns one of two similar simple programs. These differ only in Label 28 // Returns one of two similar simple programs. These differ only in Label
29 // assignment, so it is possible to make them look identical. 29 // assignment, so it is possible to make them look identical.
30 scoped_ptr<courgette::AssemblyProgram> MakeProgram(int kind) const { 30 std::unique_ptr<courgette::AssemblyProgram> MakeProgram(int kind) const {
31 scoped_ptr<courgette::AssemblyProgram> prog( 31 std::unique_ptr<courgette::AssemblyProgram> prog(
32 new courgette::AssemblyProgram(courgette::EXE_WIN_32_X86)); 32 new courgette::AssemblyProgram(courgette::EXE_WIN_32_X86));
33 prog->set_image_base(0x00400000); 33 prog->set_image_base(0x00400000);
34 34
35 courgette::Label* labelA = prog->FindOrMakeAbs32Label(0x00410000); 35 courgette::Label* labelA = prog->FindOrMakeAbs32Label(0x00410000);
36 courgette::Label* labelB = prog->FindOrMakeAbs32Label(0x00410004); 36 courgette::Label* labelB = prog->FindOrMakeAbs32Label(0x00410004);
37 37
38 EXPECT_TRUE(prog->EmitAbs32(labelA)); 38 EXPECT_TRUE(prog->EmitAbs32(labelA));
39 EXPECT_TRUE(prog->EmitAbs32(labelA)); 39 EXPECT_TRUE(prog->EmitAbs32(labelA));
40 EXPECT_TRUE(prog->EmitAbs32(labelB)); 40 EXPECT_TRUE(prog->EmitAbs32(labelB));
41 EXPECT_TRUE(prog->EmitAbs32(labelA)); 41 EXPECT_TRUE(prog->EmitAbs32(labelA));
42 EXPECT_TRUE(prog->EmitAbs32(labelA)); 42 EXPECT_TRUE(prog->EmitAbs32(labelA));
43 EXPECT_TRUE(prog->EmitAbs32(labelB)); 43 EXPECT_TRUE(prog->EmitAbs32(labelB));
44 44
45 if (kind == 0) { 45 if (kind == 0) {
46 labelA->index_ = 0; 46 labelA->index_ = 0;
47 labelB->index_ = 1; 47 labelB->index_ = 1;
48 } else { 48 } else {
49 labelA->index_ = 1; 49 labelA->index_ = 1;
50 labelB->index_ = 0; 50 labelB->index_ = 0;
51 } 51 }
52 prog->AssignRemainingIndexes(); 52 prog->AssignRemainingIndexes();
53 53
54 return prog; 54 return prog;
55 } 55 }
56 56
57 scoped_ptr<courgette::AssemblyProgram> MakeProgramA() const { 57 std::unique_ptr<courgette::AssemblyProgram> MakeProgramA() const {
58 return MakeProgram(0); 58 return MakeProgram(0);
59 } 59 }
60 scoped_ptr<courgette::AssemblyProgram> MakeProgramB() const { 60 std::unique_ptr<courgette::AssemblyProgram> MakeProgramB() const {
61 return MakeProgram(1); 61 return MakeProgram(1);
62 } 62 }
63 63
64 // Returns a string that is the serialized version of |program|. 64 // Returns a string that is the serialized version of |program|.
65 // Deletes |program|. 65 // Deletes |program|.
66 std::string Serialize(scoped_ptr<courgette::AssemblyProgram> program) const { 66 std::string Serialize(
67 scoped_ptr<courgette::EncodedProgram> encoded; 67 std::unique_ptr<courgette::AssemblyProgram> program) const {
68 std::unique_ptr<courgette::EncodedProgram> encoded;
68 69
69 const courgette::Status encode_status = Encode(*program, &encoded); 70 const courgette::Status encode_status = Encode(*program, &encoded);
70 EXPECT_EQ(courgette::C_OK, encode_status); 71 EXPECT_EQ(courgette::C_OK, encode_status);
71 72
72 program.reset(); 73 program.reset();
73 74
74 courgette::SinkStreamSet sinks; 75 courgette::SinkStreamSet sinks;
75 const courgette::Status write_status = 76 const courgette::Status write_status =
76 WriteEncodedProgram(encoded.get(), &sinks); 77 WriteEncodedProgram(encoded.get(), &sinks);
77 EXPECT_EQ(courgette::C_OK, write_status); 78 EXPECT_EQ(courgette::C_OK, write_status);
78 79
79 encoded.reset(); 80 encoded.reset();
80 81
81 courgette::SinkStream sink; 82 courgette::SinkStream sink;
82 bool can_collect = sinks.CopyTo(&sink); 83 bool can_collect = sinks.CopyTo(&sink);
83 EXPECT_TRUE(can_collect); 84 EXPECT_TRUE(can_collect);
84 85
85 return std::string(reinterpret_cast<const char *>(sink.Buffer()), 86 return std::string(reinterpret_cast<const char *>(sink.Buffer()),
86 sink.Length()); 87 sink.Length());
87 } 88 }
88 }; 89 };
89 90
90 91
91 void AdjustmentMethodTest::Test1() const { 92 void AdjustmentMethodTest::Test1() const {
92 scoped_ptr<courgette::AssemblyProgram> prog1 = MakeProgramA(); 93 std::unique_ptr<courgette::AssemblyProgram> prog1 = MakeProgramA();
93 scoped_ptr<courgette::AssemblyProgram> prog2 = MakeProgramB(); 94 std::unique_ptr<courgette::AssemblyProgram> prog2 = MakeProgramB();
94 std::string s1 = Serialize(std::move(prog1)); 95 std::string s1 = Serialize(std::move(prog1));
95 std::string s2 = Serialize(std::move(prog2)); 96 std::string s2 = Serialize(std::move(prog2));
96 97
97 // Don't use EXPECT_EQ because strings are unprintable. 98 // Don't use EXPECT_EQ because strings are unprintable.
98 EXPECT_FALSE(s1 == s2); // Unadjusted A and B differ. 99 EXPECT_FALSE(s1 == s2); // Unadjusted A and B differ.
99 100
100 scoped_ptr<courgette::AssemblyProgram> prog5 = MakeProgramA(); 101 std::unique_ptr<courgette::AssemblyProgram> prog5 = MakeProgramA();
101 scoped_ptr<courgette::AssemblyProgram> prog6 = MakeProgramB(); 102 std::unique_ptr<courgette::AssemblyProgram> prog6 = MakeProgramB();
102 courgette::Status can_adjust = Adjust(*prog5, prog6.get()); 103 courgette::Status can_adjust = Adjust(*prog5, prog6.get());
103 EXPECT_EQ(courgette::C_OK, can_adjust); 104 EXPECT_EQ(courgette::C_OK, can_adjust);
104 std::string s5 = Serialize(std::move(prog5)); 105 std::string s5 = Serialize(std::move(prog5));
105 std::string s6 = Serialize(std::move(prog6)); 106 std::string s6 = Serialize(std::move(prog6));
106 107
107 EXPECT_TRUE(s1 == s5); // Adjustment did not change A (prog5) 108 EXPECT_TRUE(s1 == s5); // Adjustment did not change A (prog5)
108 EXPECT_TRUE(s5 == s6); // Adjustment did change B into A 109 EXPECT_TRUE(s5 == s6); // Adjustment did change B into A
109 } 110 }
110 111
111 112
112 TEST_F(AdjustmentMethodTest, All) { 113 TEST_F(AdjustmentMethodTest, All) {
113 Test1(); 114 Test1();
114 } 115 }
OLDNEW
« no previous file with comments | « no previous file | courgette/assembly_program.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698