// Copyright 2018 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/accessibility/mojom/ax_tree_id_mojom_traits.h"
#include "mojo/public/cpp/test_support/test_utils.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "ui/accessibility/ax_tree_id.h"
#include "ui/accessibility/mojom/ax_tree_id.mojom.h"

using mojo::test::SerializeAndDeserialize;

TEST(AXTreeIDMojomTraitsTest, TestSerializeAndDeserializeAXTreeID) {
  ui::AXTreeID empty_input = ui::AXTreeID();
  ui::AXTreeID empty_output;
  EXPECT_TRUE(
      SerializeAndDeserialize<ax::mojom::AXTreeID>(empty_input, empty_output));
  EXPECT_EQ(empty_input, empty_output);
  EXPECT_EQ("", empty_output.ToString());

  ui::AXTreeID unknown_input = ui::AXTreeIDUnknown();
  ui::AXTreeID unknown_output;
  EXPECT_TRUE(SerializeAndDeserialize<ax::mojom::AXTreeID>(unknown_input,
                                                           unknown_output));
  EXPECT_EQ(unknown_input, unknown_output);
  EXPECT_EQ("", unknown_output.ToString());

  ui::AXTreeID token_input = ui::AXTreeID::CreateNewAXTreeID();
  ui::AXTreeID token_output;
  EXPECT_TRUE(
      SerializeAndDeserialize<ax::mojom::AXTreeID>(token_input, token_output));
  EXPECT_EQ(token_input, token_output);
  // It should be a 32-char hex string.
  EXPECT_EQ(32U, token_output.ToString().size());
}
