Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(467)

Unified Diff: minidump/minidump_memory_writer_test_util.h

Issue 639513002: Pull test utilities from MinidumpMemoryWriter’s test out into their own file (Closed) Base URL: https://chromium.googlesource.com/crashpad/crashpad@master
Patch Set: Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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_

Powered by Google App Engine
This is Rietveld 408576698