diff options
author | huangs <huangs@chromium.org> | 2016-01-28 16:11:48 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-01-29 00:12:39 +0000 |
commit | 0a9cbf1781a114b35a4e0f4a834f2d24ade2e917 (patch) | |
tree | 964fa6b24b09ce95b4178692f0af9d28167ec331 /courgette/encode_decode_unittest.cc | |
parent | b85b92b4639f690a9a523a910211d432dba568a2 (diff) | |
download | chromium_src-0a9cbf1781a114b35a4e0f4a834f2d24ade2e917.zip chromium_src-0a9cbf1781a114b35a4e0f4a834f2d24ade2e917.tar.gz chromium_src-0a9cbf1781a114b35a4e0f4a834f2d24ade2e917.tar.bz2 |
[Courgette] Refactor: Manage AssemblyProgram and EncodedProgram with scoped_ptr.
Previously naked pointers AssemblyProgram and EncodedProgram are used over the
place, and are deallocated using Delete{AssemblyProgram, EncodedProgram}().
In this CL we use scoped_ptr to manage the life cycles of these objects.
- Removed DeleteAssemblyProgram() and DeleteEncodedProgram() and replaced calls
with e.g., program.reset(nullptr); if the manual deallocation is a peak
memory optimization.
- Moved Encode() and ReadEncodedProgram() to the .h files matching the .cc files.
- Extracted DetectExecutableType() and ParseDetectedExecutable() from
disassembly.* to new files program_detector*c, since Disassembly is really an
implementation that caller's don't care about.
Review URL: https://codereview.chromium.org/1629703002
Cr-Commit-Position: refs/heads/master@{#372212}
Diffstat (limited to 'courgette/encode_decode_unittest.cc')
-rw-r--r-- | courgette/encode_decode_unittest.cc | 27 |
1 files changed, 16 insertions, 11 deletions
diff --git a/courgette/encode_decode_unittest.cc b/courgette/encode_decode_unittest.cc index 9e89c20..7494785 100644 --- a/courgette/encode_decode_unittest.cc +++ b/courgette/encode_decode_unittest.cc @@ -4,8 +4,12 @@ #include <stddef.h> +#include "base/memory/scoped_ptr.h" +#include "courgette/assembly_program.h" #include "courgette/base_test_unittest.h" #include "courgette/courgette.h" +#include "courgette/encoded_program.h" +#include "courgette/program_detector.h" #include "courgette/streams.h" class EncodeDecodeTest : public BaseTest { @@ -20,25 +24,25 @@ void EncodeDecodeTest::TestAssembleToStreamDisassemble( const void* original_buffer = file.c_str(); size_t original_length = file.length(); - courgette::AssemblyProgram* program = NULL; + scoped_ptr<courgette::AssemblyProgram> program; const courgette::Status parse_status = courgette::ParseDetectedExecutable(original_buffer, original_length, &program); EXPECT_EQ(courgette::C_OK, parse_status); - courgette::EncodedProgram* encoded = NULL; - - const courgette::Status encode_status = Encode(program, &encoded); + scoped_ptr<courgette::EncodedProgram> encoded; + const courgette::Status encode_status = Encode(*program, &encoded); EXPECT_EQ(courgette::C_OK, encode_status); - DeleteAssemblyProgram(program); + program.reset(); courgette::SinkStreamSet sinks; - const courgette::Status write_status = WriteEncodedProgram(encoded, &sinks); + const courgette::Status write_status = + WriteEncodedProgram(encoded.get(), &sinks); EXPECT_EQ(courgette::C_OK, write_status); - DeleteEncodedProgram(encoded); + encoded.reset(); courgette::SinkStream sink; bool can_collect = sinks.CopyTo(&sink); @@ -53,21 +57,22 @@ void EncodeDecodeTest::TestAssembleToStreamDisassemble( bool can_get_source_streams = sources.Init(buffer, length); EXPECT_TRUE(can_get_source_streams); - courgette::EncodedProgram *encoded2 = NULL; + scoped_ptr<courgette::EncodedProgram> encoded2; const courgette::Status read_status = ReadEncodedProgram(&sources, &encoded2); EXPECT_EQ(courgette::C_OK, read_status); courgette::SinkStream assembled; - const courgette::Status assemble_status = Assemble(encoded2, &assembled); + const courgette::Status assemble_status = + Assemble(encoded2.get(), &assembled); EXPECT_EQ(courgette::C_OK, assemble_status); + encoded2.reset(); + const void* assembled_buffer = assembled.Buffer(); size_t assembled_length = assembled.Length(); EXPECT_EQ(original_length, assembled_length); EXPECT_EQ(0, memcmp(original_buffer, assembled_buffer, original_length)); - - DeleteEncodedProgram(encoded2); } TEST_F(EncodeDecodeTest, PE) { |