summaryrefslogtreecommitdiffstats
path: root/courgette/encode_decode_unittest.cc
diff options
context:
space:
mode:
authorhuangs <huangs@chromium.org>2016-01-28 16:11:48 -0800
committerCommit bot <commit-bot@chromium.org>2016-01-29 00:12:39 +0000
commit0a9cbf1781a114b35a4e0f4a834f2d24ade2e917 (patch)
tree964fa6b24b09ce95b4178692f0af9d28167ec331 /courgette/encode_decode_unittest.cc
parentb85b92b4639f690a9a523a910211d432dba568a2 (diff)
downloadchromium_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.cc27
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) {