blob: 5752c86b570640aace384ab5ae39dbac1ca395fe [file] [log] [blame]
// Copyright 2016 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "headless/public/util/error_reporter.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace headless {
TEST(ErrorReporterTest, NoErrors) {
ErrorReporter reporter;
#if DCHECK_IS_ON()
EXPECT_FALSE(reporter.HasErrors());
EXPECT_TRUE(reporter.errors().empty());
#endif // DCHECK_IS_ON()
}
TEST(ErrorReporterTest, TopLevelErrors) {
ErrorReporter reporter;
reporter.AddError("instructions unclear");
reporter.AddError("head stuck in std::unordered_map");
#if DCHECK_IS_ON()
EXPECT_TRUE(reporter.HasErrors());
EXPECT_EQ(2u, reporter.errors().size());
EXPECT_EQ("instructions unclear", reporter.errors()[0]);
EXPECT_EQ("head stuck in std::unordered_map", reporter.errors()[1]);
#endif // DCHECK_IS_ON()
}
TEST(ErrorReporterTest, UnnamedContext) {
ErrorReporter reporter;
reporter.Push();
reporter.AddError("lp0 is on fire");
reporter.Pop();
#if DCHECK_IS_ON()
EXPECT_TRUE(reporter.HasErrors());
EXPECT_EQ(1u, reporter.errors().size());
EXPECT_EQ("lp0 is on fire", reporter.errors()[0]);
#endif // DCHECK_IS_ON()
}
TEST(ErrorReporterTest, NestedContexts) {
ErrorReporter reporter;
reporter.Push();
reporter.SetName("ship");
reporter.Push();
reporter.SetName("front");
reporter.AddError("fell off");
reporter.Pop();
reporter.AddError("uh oh");
reporter.Pop();
#if DCHECK_IS_ON()
EXPECT_TRUE(reporter.HasErrors());
EXPECT_EQ(2u, reporter.errors().size());
EXPECT_EQ("ship.front: fell off", reporter.errors()[0]);
EXPECT_EQ("ship: uh oh", reporter.errors()[1]);
#endif // DCHECK_IS_ON()
}
} // namespace headless