Index: minidump/minidump_memory_writer_test_util.h |
diff --git a/minidump/minidump_memory_writer_test_util.h b/minidump/minidump_memory_writer_test_util.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..f6ad22927791c200085be8893b3adf7505057992 |
--- /dev/null |
+++ b/minidump/minidump_memory_writer_test_util.h |
@@ -0,0 +1,91 @@ |
+// Copyright 2014 The Crashpad Authors. All rights reserved. |
+// |
+// Licensed under the Apache License, Version 2.0 (the "License"); |
+// you may not use this file except in compliance with the License. |
+// You may obtain a copy of the License at |
+// |
+// http://www.apache.org/licenses/LICENSE-2.0 |
+// |
+// Unless required by applicable law or agreed to in writing, software |
+// distributed under the License is distributed on an "AS IS" BASIS, |
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
+// See the License for the specific language governing permissions and |
+// limitations under the License. |
+ |
+#ifndef CRASHPAD_MINIDUMP_MINIDUMP_MEMORY_WRITER_TEST_UTIL_H_ |
+#define CRASHPAD_MINIDUMP_MINIDUMP_MEMORY_WRITER_TEST_UTIL_H_ |
+ |
+#include "minidump/minidump_memory_writer.h" |
+ |
+#include <dbghelp.h> |
+#include <stdint.h> |
+ |
+#include <string> |
+ |
+#include "base/basictypes.h" |
+#include "util/file/file_writer.h" |
+ |
+namespace crashpad { |
+namespace test { |
+ |
+//! \brief A MinidumpMemoryWriter implementation used for testing. |
+//! |
+//! TestMinidumpMemoryWriter objects are created with a fixed base address and |
+//! size, and will write the same byte (\a value) repeatedly, \a size times. |
+class TestMinidumpMemoryWriter final : public MinidumpMemoryWriter { |
+ public: |
+ TestMinidumpMemoryWriter(uint64_t base_address, size_t size, uint8_t value); |
+ ~TestMinidumpMemoryWriter(); |
+ |
+ protected: |
+ // MinidumpMemoryWriter: |
+ virtual uint64_t MemoryRangeBaseAddress() const override; |
+ virtual size_t MemoryRangeSize() const override; |
+ |
+ // MinidumpWritable: |
+ virtual bool WillWriteAtOffsetImpl(off_t offset) override; |
+ virtual bool WriteObject(FileWriterInterface* file_writer) override; |
+ |
+ private: |
+ uint64_t base_address_; |
+ off_t expected_offset_; |
+ size_t size_; |
+ uint8_t value_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(TestMinidumpMemoryWriter); |
+}; |
+ |
+//! \brief Verifies, via gtest assertions, that a MINIDUMP_MEMORY_DESCRIPTOR |
+//! structure contains expected values, and that the memory region it points |
+//! to contains expected values assuming it was written by a |
+//! TestMinidumpMemoryWriter object. |
+//! |
+//! In \a expected and \a observed, |
+//! MINIDUMP_MEMORY_DESCRIPTOR::StartOfMemoryRange and |
+//! MINIDUMP_LOCATION_DESCRIPTOR::DataSize are compared and must match. If |
+//! MINIDUMP_LOCATION_DESCRIPTOR::Rva is nonzero in \a expected, the same field |
+//! in \a observed must match it, subject to a 16-byte alignment augmentation. |
+//! |
+//! \param[in] expected A MINIDUMP_MEMORY_DESCRIPTOR structure containing |
+//! expected values. |
+//! \param[in] observed A MINIDUMP_MEMORY_DESCRIPTOR structure containing |
+//! observed values. |
+//! \param[in] file_contents The contents of the minidump file in which \a |
+//! observed was found. The memory region referenced by \a observed will be |
+//! read from this string. |
+//! \param[in] value The \a value used to create a TestMinidumpMemoryWriter. |
+//! Each byte of memory in the region referenced by \a observed must be this |
+//! value. |
+//! \param[in] at_eof If `true`, the region referenced by \a observed must |
+//! appear at the end of \a file_contents, without any data following it. |
+void ExpectMinidumpMemoryDescriptorAndContents( |
+ const MINIDUMP_MEMORY_DESCRIPTOR* expected, |
+ const MINIDUMP_MEMORY_DESCRIPTOR* observed, |
+ const std::string& file_contents, |
+ uint8_t value, |
+ bool at_eof); |
+ |
+} // namespace test |
+} // namespace crashpad |
+ |
+#endif // CRASHPAD_MINIDUMP_MINIDUMP_MEMORY_WRITER_TEST_UTIL_H_ |