// Copyright 2020 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 "error_support.h"

#include <string>
#include <vector>

#include "test_platform.h"

namespace v8_crdtp {
TEST(ErrorSupportTest, Empty) {
  ErrorSupport errors;
  EXPECT_TRUE(errors.Errors().empty());
}

TEST(ErrorSupportTest, Nesting) {
  ErrorSupport errors;
  // Enter field foo, inter element at index 42, enter field bar, and encounter
  // an error there ("something wrong").
  errors.Push();
  errors.SetName("foo");
  errors.Push();
  errors.SetIndex(42);
  errors.Push();
  errors.SetName("bar_sibling");
  errors.SetName("bar");
  errors.AddError("something wrong");
  errors.Pop();  // bar
  errors.Pop();  // 42
  // The common case is actually that we'll enter some field, set the name
  // or index, and leave without ever producing an error.
  errors.Push();
  errors.SetName("no_error_here");
  errors.Pop();  // no_error_here
  errors.Push();
  errors.SetName("bang");
  errors.AddError("one last error");
  errors.Pop();  // bang
  errors.Pop();  // foo
  std::string out(errors.Errors().begin(), errors.Errors().end());
  EXPECT_EQ("foo.42.bar: something wrong; foo.bang: one last error", out);
}
}  // namespace v8_crdtp
