| OLD | NEW |
| 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 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 "courgette/encoded_program.h" | 5 #include "courgette/encoded_program.h" |
| 6 | 6 |
| 7 #include "courgette/streams.h" | 7 #include "courgette/streams.h" |
| 8 #include "testing/gtest/include/gtest/gtest.h" | 8 #include "testing/gtest/include/gtest/gtest.h" |
| 9 | 9 |
| 10 TEST(EncodedProgramTest, Test) { | 10 TEST(EncodedProgramTest, Test) { |
| (...skipping 11 matching lines...) Expand all Loading... |
| 22 program->EndLabels(); | 22 program->EndLabels(); |
| 23 | 23 |
| 24 EXPECT_TRUE(program->AddOrigin(0)); // Start at base. | 24 EXPECT_TRUE(program->AddOrigin(0)); // Start at base. |
| 25 EXPECT_TRUE(program->AddAbs32(7)); | 25 EXPECT_TRUE(program->AddAbs32(7)); |
| 26 EXPECT_TRUE(program->AddRel32(5)); | 26 EXPECT_TRUE(program->AddRel32(5)); |
| 27 | 27 |
| 28 // Serialize and deserialize. | 28 // Serialize and deserialize. |
| 29 | 29 |
| 30 courgette::SinkStreamSet sinks; | 30 courgette::SinkStreamSet sinks; |
| 31 EXPECT_TRUE(program->WriteTo(&sinks)); | 31 EXPECT_TRUE(program->WriteTo(&sinks)); |
| 32 delete program; |
| 32 | 33 |
| 33 courgette::SinkStream sink; | 34 courgette::SinkStream sink; |
| 34 bool can_collect = sinks.CopyTo(&sink); | 35 bool can_collect = sinks.CopyTo(&sink); |
| 35 EXPECT_TRUE(can_collect); | 36 EXPECT_TRUE(can_collect); |
| 36 | 37 |
| 37 const void* buffer = sink.Buffer(); | 38 const void* buffer = sink.Buffer(); |
| 38 size_t length = sink.Length(); | 39 size_t length = sink.Length(); |
| 39 | 40 |
| 40 courgette::SourceStreamSet sources; | 41 courgette::SourceStreamSet sources; |
| 41 bool can_get_source_streams = sources.Init(buffer, length); | 42 bool can_get_source_streams = sources.Init(buffer, length); |
| 42 EXPECT_TRUE(can_get_source_streams); | 43 EXPECT_TRUE(can_get_source_streams); |
| 43 | 44 |
| 44 courgette::EncodedProgram *encoded2 = new courgette::EncodedProgram(); | 45 courgette::EncodedProgram *encoded2 = new courgette::EncodedProgram(); |
| 45 bool can_read = encoded2->ReadFrom(&sources); | 46 bool can_read = encoded2->ReadFrom(&sources); |
| 46 EXPECT_TRUE(can_read); | 47 EXPECT_TRUE(can_read); |
| 47 | 48 |
| 48 // Finally, try to assemble. | 49 // Finally, try to assemble. |
| 49 courgette::SinkStream assembled; | 50 courgette::SinkStream assembled; |
| 50 bool can_assemble = encoded2->AssembleTo(&assembled); | 51 bool can_assemble = encoded2->AssembleTo(&assembled); |
| 51 EXPECT_TRUE(can_assemble); | 52 EXPECT_TRUE(can_assemble); |
| 53 delete encoded2; |
| 52 | 54 |
| 53 const void* assembled_buffer = assembled.Buffer(); | 55 const void* assembled_buffer = assembled.Buffer(); |
| 54 size_t assembled_length = assembled.Length(); | 56 size_t assembled_length = assembled.Length(); |
| 55 | 57 |
| 56 EXPECT_EQ(8U, assembled_length); | 58 EXPECT_EQ(8U, assembled_length); |
| 57 | 59 |
| 58 static const uint8 golden[] = { | 60 static const uint8 golden[] = { |
| 59 0x04, 0x00, 0x90, 0x00, // ABS32 to base + 4 | 61 0x04, 0x00, 0x90, 0x00, // ABS32 to base + 4 |
| 60 0xF8, 0xFF, 0xFF, 0xFF // REL32 from next line to base + 2 | 62 0xF8, 0xFF, 0xFF, 0xFF // REL32 from next line to base + 2 |
| 61 }; | 63 }; |
| 62 | 64 |
| 63 EXPECT_EQ(0, memcmp(assembled_buffer, golden, 8)); | 65 EXPECT_EQ(0, memcmp(assembled_buffer, golden, 8)); |
| 64 } | 66 } |
| OLD | NEW |