| // 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 |