// Copyright 2019 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "ui/gfx/win/crash_id_helper.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace gfx {
class CrashIdHelperTest : public testing::Test {
public:
CrashIdHelperTest() = default;
CrashIdHelperTest(const CrashIdHelperTest&) = delete;
CrashIdHelperTest& operator=(const CrashIdHelperTest&) = delete;
~CrashIdHelperTest() override = default;
std::string CurrentCrashId() {
return CrashIdHelper::Get()->CurrentCrashId();
}
};
// This test verifies CurrentCrashId(). Ideally this would verify at
// crash_reporter::CrashKeyString, but that class isn't particularly test
// friendly (and the implementation varies depending upon compile time flags).
TEST_F(CrashIdHelperTest, Basic) {
CrashIdHelper::RegisterMainThread(base::PlatformThread::CurrentId());
const std::string id1 = "id";
{
auto scoper = CrashIdHelper::Get()->OnWillProcessMessages(id1);
EXPECT_EQ(id1, CurrentCrashId());
}
// No assertions for empty as CurrentCrashId() DCHECKs there is at least
// one id.
const std::string id2 = "id2";
{
auto scoper = CrashIdHelper::Get()->OnWillProcessMessages(id2);
EXPECT_EQ(id2, CurrentCrashId());
{
auto scoper2 = CrashIdHelper::Get()->OnWillProcessMessages(id1);
EXPECT_EQ("id2>id", CurrentCrashId());
}
EXPECT_EQ("(N) id2", CurrentCrashId());
}
CrashIdHelper::RegisterMainThread(base::kInvalidThreadId);
}
} // namespace gfx