chromium/third_party/crashpad/crashpad/minidump/minidump_thread_writer_test.cc

// Copyright 2014 The Crashpad Authors
//
// 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.

#include "minidump/minidump_thread_writer.h"

#include <iterator>
#include <string>
#include <utility>

#include "base/compiler_specific.h"
#include "base/format_macros.h"
#include "base/strings/stringprintf.h"
#include "gtest/gtest.h"
#include "minidump/minidump_context_writer.h"
#include "minidump/minidump_file_writer.h"
#include "minidump/minidump_memory_writer.h"
#include "minidump/test/minidump_context_test_util.h"
#include "minidump/test/minidump_file_writer_test_util.h"
#include "minidump/test/minidump_memory_writer_test_util.h"
#include "minidump/test/minidump_writable_test_util.h"
#include "snapshot/test/test_cpu_context.h"
#include "snapshot/test/test_memory_snapshot.h"
#include "snapshot/test/test_thread_snapshot.h"
#include "test/gtest_death.h"
#include "util/file/string_file.h"

namespace crashpad {
namespace test {
namespace {

// This returns the MINIDUMP_THREAD_LIST stream in |thread_list|. If
// |memory_list| is not nullptr, a MINIDUMP_MEMORY_LIST stream is also expected
// in |file_contents|, and that stream will be returned in |memory_list|.
void GetThreadListStream(const std::string& file_contents,
                         const MINIDUMP_THREAD_LIST** thread_list,
                         const MINIDUMP_MEMORY_LIST** memory_list) {}

TEST(MinidumpThreadWriter, EmptyThreadList) {}

// The MINIDUMP_THREADs |expected| and |observed| are compared against each
// other using Google Test assertions. If |stack| is not nullptr, |observed| is
// expected to contain a populated MINIDUMP_MEMORY_DESCRIPTOR in its Stack
// field, otherwise, its Stack field is expected to be zeroed out. The memory
// descriptor will be placed in |stack|. |observed| must contain a populated
// ThreadContext field. The context will be recovered from |file_contents| and
// stored in |context_base|.
void ExpectThread(const MINIDUMP_THREAD* expected,
                  const MINIDUMP_THREAD* observed,
                  const std::string& file_contents,
                  const MINIDUMP_MEMORY_DESCRIPTOR** stack,
                  const void** context_base) {}

TEST(MinidumpThreadWriter, OneThread_x86_NoStack) {}

TEST(MinidumpThreadWriter, OneThread_AMD64_Stack) {}

TEST(MinidumpThreadWriter, ThreeThreads_x86_MemoryList) {}

struct InitializeFromSnapshotX86Traits {};

struct InitializeFromSnapshotAMD64Traits {};

struct InitializeFromSnapshotNoContextTraits {};

template <typename Traits>
void RunInitializeFromSnapshotTest(bool thread_id_collision) {}

TEST(MinidumpThreadWriter, InitializeFromSnapshot_x86) {}

TEST(MinidumpThreadWriter, InitializeFromSnapshot_AMD64) {}

TEST(MinidumpThreadWriter, InitializeFromSnapshot_ThreadIDCollision) {}

TEST(MinidumpThreadWriterDeathTest, NoContext) {}

TEST(MinidumpThreadWriterDeathTest, InitializeFromSnapshot_NoContext) {}

}  // namespace
}  // namespace test
}  // namespace crashpad