blob: 5187da55840ed5403e65af3f0a10b756ce9c3e33 [file] [log] [blame]
// 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 "third_party/blink/renderer/core/page/named_pages_mapper.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace blink {
namespace {
TEST(NamedPagesMapperTest, Test) {
NamedPagesMapper mapper;
EXPECT_EQ(mapper.LastPageName(), AtomicString());
EXPECT_EQ(mapper.NamedPageAtIndex(0), AtomicString());
EXPECT_EQ(mapper.NamedPageAtIndex(100), AtomicString());
mapper.AddNamedPage("foo", 7);
EXPECT_EQ(mapper.LastPageName(), "foo");
EXPECT_EQ(mapper.NamedPageAtIndex(7), "foo");
EXPECT_EQ(mapper.NamedPageAtIndex(6), AtomicString());
EXPECT_EQ(mapper.NamedPageAtIndex(100), "foo");
mapper.AddNamedPage("bar", 8);
EXPECT_EQ(mapper.LastPageName(), "bar");
EXPECT_EQ(mapper.NamedPageAtIndex(8), "bar");
EXPECT_EQ(mapper.NamedPageAtIndex(7), "foo");
EXPECT_EQ(mapper.NamedPageAtIndex(6), AtomicString());
EXPECT_EQ(mapper.NamedPageAtIndex(100), "bar");
mapper.AddNamedPage("foo", 10);
EXPECT_EQ(mapper.LastPageName(), "foo");
EXPECT_EQ(mapper.NamedPageAtIndex(10), "foo");
EXPECT_EQ(mapper.NamedPageAtIndex(9), "bar");
EXPECT_EQ(mapper.NamedPageAtIndex(8), "bar");
EXPECT_EQ(mapper.NamedPageAtIndex(7), "foo");
EXPECT_EQ(mapper.NamedPageAtIndex(6), AtomicString());
EXPECT_EQ(mapper.NamedPageAtIndex(100), "foo");
mapper.AddNamedPage(AtomicString(), 11);
EXPECT_EQ(mapper.LastPageName(), AtomicString());
EXPECT_EQ(mapper.NamedPageAtIndex(11), AtomicString());
EXPECT_EQ(mapper.NamedPageAtIndex(10), "foo");
EXPECT_EQ(mapper.NamedPageAtIndex(9), "bar");
EXPECT_EQ(mapper.NamedPageAtIndex(8), "bar");
EXPECT_EQ(mapper.NamedPageAtIndex(7), "foo");
EXPECT_EQ(mapper.NamedPageAtIndex(6), AtomicString());
EXPECT_EQ(mapper.NamedPageAtIndex(100), AtomicString());
mapper.AddNamedPage("FOO", 13);
EXPECT_EQ(mapper.LastPageName(), "FOO");
EXPECT_EQ(mapper.NamedPageAtIndex(13), "FOO");
EXPECT_EQ(mapper.NamedPageAtIndex(12), AtomicString());
EXPECT_EQ(mapper.NamedPageAtIndex(11), AtomicString());
EXPECT_EQ(mapper.NamedPageAtIndex(10), "foo");
EXPECT_EQ(mapper.NamedPageAtIndex(9), "bar");
EXPECT_EQ(mapper.NamedPageAtIndex(8), "bar");
EXPECT_EQ(mapper.NamedPageAtIndex(7), "foo");
EXPECT_EQ(mapper.NamedPageAtIndex(6), AtomicString());
EXPECT_EQ(mapper.NamedPageAtIndex(100), "FOO");
// Go back to page 9. This will clear everything after.
mapper.AddNamedPage("surprise", 9);
EXPECT_EQ(mapper.LastPageName(), "surprise");
EXPECT_EQ(mapper.NamedPageAtIndex(13), "surprise");
EXPECT_EQ(mapper.NamedPageAtIndex(12), "surprise");
EXPECT_EQ(mapper.NamedPageAtIndex(11), "surprise");
EXPECT_EQ(mapper.NamedPageAtIndex(10), "surprise");
EXPECT_EQ(mapper.NamedPageAtIndex(9), "surprise");
EXPECT_EQ(mapper.NamedPageAtIndex(8), "bar");
EXPECT_EQ(mapper.NamedPageAtIndex(7), "foo");
EXPECT_EQ(mapper.NamedPageAtIndex(6), AtomicString());
EXPECT_EQ(mapper.NamedPageAtIndex(100), "surprise");
mapper.AddNamedPage("lol", 13);
EXPECT_EQ(mapper.LastPageName(), "lol");
EXPECT_EQ(mapper.NamedPageAtIndex(13), "lol");
EXPECT_EQ(mapper.NamedPageAtIndex(12), "surprise");
EXPECT_EQ(mapper.NamedPageAtIndex(11), "surprise");
EXPECT_EQ(mapper.NamedPageAtIndex(10), "surprise");
EXPECT_EQ(mapper.NamedPageAtIndex(9), "surprise");
EXPECT_EQ(mapper.NamedPageAtIndex(8), "bar");
EXPECT_EQ(mapper.NamedPageAtIndex(7), "foo");
EXPECT_EQ(mapper.NamedPageAtIndex(6), AtomicString());
EXPECT_EQ(mapper.NamedPageAtIndex(100), "lol");
mapper.AddNamedPage("page2", 2);
EXPECT_EQ(mapper.LastPageName(), "page2");
EXPECT_EQ(mapper.NamedPageAtIndex(0), AtomicString());
EXPECT_EQ(mapper.NamedPageAtIndex(1), AtomicString());
EXPECT_EQ(mapper.NamedPageAtIndex(2), "page2");
EXPECT_EQ(mapper.NamedPageAtIndex(100), "page2");
mapper.AddNamedPage("page1", 1);
EXPECT_EQ(mapper.LastPageName(), "page1");
EXPECT_EQ(mapper.NamedPageAtIndex(0), AtomicString());
EXPECT_EQ(mapper.NamedPageAtIndex(1), "page1");
EXPECT_EQ(mapper.NamedPageAtIndex(2), "page1");
EXPECT_EQ(mapper.NamedPageAtIndex(100), "page1");
}
TEST(NamedPagesMapperTest, FirstPageIsNamed) {
NamedPagesMapper mapper;
mapper.AddNamedPage("named", 0);
EXPECT_EQ(mapper.LastPageName(), "named");
EXPECT_EQ(mapper.NamedPageAtIndex(0), "named");
EXPECT_EQ(mapper.NamedPageAtIndex(100), "named");
mapper.AddNamedPage("overwrite", 0);
EXPECT_EQ(mapper.NamedPageAtIndex(0), "overwrite");
EXPECT_EQ(mapper.NamedPageAtIndex(100), "overwrite");
mapper.AddNamedPage("foo", 1);
EXPECT_EQ(mapper.NamedPageAtIndex(0), "overwrite");
EXPECT_EQ(mapper.NamedPageAtIndex(1), "foo");
EXPECT_EQ(mapper.NamedPageAtIndex(100), "foo");
mapper.AddNamedPage("xxx", 0);
EXPECT_EQ(mapper.NamedPageAtIndex(0), "xxx");
EXPECT_EQ(mapper.NamedPageAtIndex(1), "xxx");
EXPECT_EQ(mapper.NamedPageAtIndex(100), "xxx");
}
TEST(NamedPagesMapperTest, NameFirstPage) {
NamedPagesMapper mapper;
mapper.AddNamedPage("named", 2);
mapper.AddNamedPage("another", 3);
EXPECT_EQ(mapper.LastPageName(), "another");
EXPECT_EQ(mapper.NamedPageAtIndex(0), AtomicString());
EXPECT_EQ(mapper.NamedPageAtIndex(1), AtomicString());
EXPECT_EQ(mapper.NamedPageAtIndex(2), "named");
EXPECT_EQ(mapper.NamedPageAtIndex(3), "another");
EXPECT_EQ(mapper.NamedPageAtIndex(100), "another");
mapper.NameFirstPage("rootname");
EXPECT_EQ(mapper.LastPageName(), "another");
EXPECT_EQ(mapper.NamedPageAtIndex(0), "rootname");
EXPECT_EQ(mapper.NamedPageAtIndex(1), "rootname");
EXPECT_EQ(mapper.NamedPageAtIndex(2), "named");
EXPECT_EQ(mapper.NamedPageAtIndex(3), "another");
EXPECT_EQ(mapper.NamedPageAtIndex(100), "another");
}
} // anonymous namespace
} // namespace blink