| // Copyright 2017 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "components/zucchini/test_disassembler.h" |
| |
| #include "components/zucchini/test_reference_reader.h" |
| |
| namespace zucchini { |
| |
| // |num_equivalence_iterations_| = 2 to cover common case for testing. |
| TestDisassembler::TestDisassembler(const ReferenceTypeTraits& traits1, |
| const std::vector<Reference>& refs1, |
| const ReferenceTypeTraits& traits2, |
| const std::vector<Reference>& refs2, |
| const ReferenceTypeTraits& traits3, |
| const std::vector<Reference>& refs3) |
| : Disassembler(2), |
| traits_{traits1, traits2, traits3}, |
| refs_{refs1, refs2, refs3} {} |
| |
| TestDisassembler::~TestDisassembler() = default; |
| |
| ExecutableType TestDisassembler::GetExeType() const { |
| return kExeTypeUnknown; |
| } |
| |
| std::string TestDisassembler::GetExeTypeString() const { |
| return "(Unknown)"; |
| } |
| |
| std::vector<ReferenceGroup> TestDisassembler::MakeReferenceGroups() const { |
| return { |
| {traits_[0], &TestDisassembler::MakeReadRefs1, |
| &TestDisassembler::MakeWriteRefs1}, |
| {traits_[1], &TestDisassembler::MakeReadRefs2, |
| &TestDisassembler::MakeWriteRefs2}, |
| {traits_[2], &TestDisassembler::MakeReadRefs3, |
| &TestDisassembler::MakeWriteRefs3}, |
| }; |
| } |
| |
| bool TestDisassembler::Parse(ConstBufferView image) { |
| return true; |
| } |
| |
| std::unique_ptr<ReferenceReader> TestDisassembler::MakeReadRefs(int type) { |
| return std::make_unique<TestReferenceReader>(refs_[type]); |
| } |
| |
| std::unique_ptr<ReferenceWriter> TestDisassembler::MakeWriteRefs( |
| MutableBufferView image) { |
| class NoOpWriter : public ReferenceWriter { |
| public: |
| // ReferenceWriter: |
| void PutNext(Reference) override {} |
| }; |
| return std::make_unique<NoOpWriter>(); |
| } |
| |
| } // namespace zucchini |