| // Copyright 2017 The Chromium OS Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style license that can be | |
| // found in the LICENSE file. | |
| #ifndef _BSDIFF_FAKE_PATCH_WRITER_H_ | |
| #define _BSDIFF_FAKE_PATCH_WRITER_H_ | |
| #include <gtest/gtest.h> | |
| #include <vector> | |
| #include "bsdiff/patch_writer_interface.h" | |
| namespace bsdiff { | |
| // A fake PatchWriterInterface derived class with easy access to the data passed | |
| // to it. | |
| class FakePatchWriter : public PatchWriterInterface { | |
| public: | |
| FakePatchWriter() = default; | |
| ~FakePatchWriter() override = default; | |
| // PatchWriterInterface overrides. | |
| bool Init(size_t new_size) override { | |
| EXPECT_FALSE(initialized_); | |
| initialized_ = true; | |
| new_size_ = new_size; | |
| return true; | |
| } | |
| bool AddControlEntry(const ControlEntry& entry) override { | |
| EXPECT_TRUE(initialized_); | |
| EXPECT_FALSE(closed_); | |
| entries_.push_back(entry); | |
| return true; | |
| } | |
| bool WriteDiffStream(const uint8_t* data, size_t size) override { | |
| diff_stream_.insert(diff_stream_.end(), data, data + size); | |
| return true; | |
| } | |
| bool WriteExtraStream(const uint8_t* data, size_t size) override { | |
| extra_stream_.insert(extra_stream_.end(), data, data + size); | |
| return true; | |
| } | |
| bool Close() override { | |
| EXPECT_FALSE(closed_) << "Close() already called"; | |
| closed_ = true; | |
| return true; | |
| } | |
| // Fake getter methods. | |
| const std::vector<ControlEntry>& entries() const { return entries_; } | |
| const std::vector<uint8_t>& diff_stream() const { return diff_stream_; } | |
| const std::vector<uint8_t>& extra_stream() const { return extra_stream_; } | |
| size_t new_size() const { return new_size_; } | |
| private: | |
| // The list of ControlEntry passed to this class. | |
| std::vector<ControlEntry> entries_; | |
| std::vector<uint8_t> diff_stream_; | |
| std::vector<uint8_t> extra_stream_; | |
| // The size of the new file for the patch we are writing. | |
| size_t new_size_{0}; | |
| // Whether this class was initialized. | |
| bool initialized_{false}; | |
| // Whether the patch was closed. | |
| bool closed_{false}; | |
| }; | |
| } // namespace bsdiff | |
| #endif // _BSDIFF_FAKE_PATCH_WRITER_H_ |