blob: 446ca7be57a9b3db38467a1870a0eef29c816a83 [file] [log] [blame]
// Copyright 2014 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 "components/invalidation/public/single_topic_invalidation_set.h"
#include <memory>
#include "components/invalidation/impl/invalidation_test_util.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace invalidation {
namespace {
class SingleTopicInvalidationSetTest : public testing::Test {
public:
SingleTopicInvalidationSetTest() = default;
protected:
const Topic kTopic = "one";
};
TEST_F(SingleTopicInvalidationSetTest, InsertionAndOrdering) {
SingleTopicInvalidationSet l1;
SingleTopicInvalidationSet l2;
Invalidation inv0 = Invalidation::InitUnknownVersion(kTopic);
Invalidation inv1 = Invalidation::Init(kTopic, 1, "one");
Invalidation inv2 = Invalidation::Init(kTopic, 5, "five");
l1.Insert(inv0);
l1.Insert(inv1);
l1.Insert(inv2);
l2.Insert(inv1);
l2.Insert(inv2);
l2.Insert(inv0);
ASSERT_EQ(3U, l1.GetSize());
ASSERT_EQ(3U, l2.GetSize());
auto it1 = l1.begin();
auto it2 = l2.begin();
EXPECT_THAT(inv0, Eq(*it1));
EXPECT_THAT(inv0, Eq(*it2));
it1++;
it2++;
EXPECT_THAT(inv1, Eq(*it1));
EXPECT_THAT(inv1, Eq(*it2));
it1++;
it2++;
EXPECT_THAT(inv2, Eq(*it1));
EXPECT_THAT(inv2, Eq(*it2));
it1++;
it2++;
EXPECT_TRUE(it1 == l1.end());
EXPECT_TRUE(it2 == l2.end());
}
TEST_F(SingleTopicInvalidationSetTest, StartWithUnknownVersion) {
SingleTopicInvalidationSet list;
EXPECT_FALSE(list.StartsWithUnknownVersion());
list.Insert(Invalidation::Init(kTopic, 1, "one"));
EXPECT_FALSE(list.StartsWithUnknownVersion());
list.Insert(Invalidation::InitUnknownVersion(kTopic));
EXPECT_TRUE(list.StartsWithUnknownVersion());
list.Clear();
EXPECT_FALSE(list.StartsWithUnknownVersion());
}
} // namespace
} // namespace invalidation