blob: 7f20d0cab6ee2c7f1dda10aa4b9b182f6e7a2a82 [file] [log] [blame]
// Copyright 2015 The Chromium OS 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 "settingsd/key.h"
#include <gtest/gtest.h>
#include "settingsd/test_helpers.h"
namespace settingsd {
TEST(KeyTest, IsValidKey) {
EXPECT_TRUE(Key::IsValidKey(""));
EXPECT_FALSE(Key::IsValidKey("."));
EXPECT_TRUE(Key::IsValidKey("A"));
EXPECT_FALSE(Key::IsValidKey(".A"));
EXPECT_FALSE(Key::IsValidKey("A."));
EXPECT_TRUE(Key::IsValidKey("A.B"));
EXPECT_FALSE(Key::IsValidKey("A..B"));
EXPECT_FALSE(Key::IsValidKey("A.!.B"));
}
TEST(KeyTest, GetParent) {
EXPECT_EQ(Key().GetParent(), Key());
EXPECT_EQ(Key("A"), Key("A.B").GetParent());
}
TEST(KeyTest, Append) {
EXPECT_EQ(Key("A"), Key().Append(Key("A")));
EXPECT_EQ(Key("A.B"), Key("A").Append(Key("B")));
}
TEST(KeyTest, Extend) {
EXPECT_EQ(Key("A"), Key().Extend({"A"}));
EXPECT_EQ(Key("A.B"), Key("A").Extend({"B"}));
EXPECT_EQ(Key("A.B.C"), Key("A").Extend({"B", "C"}));
}
TEST(KeyTest, Split) {
Key suffix;
EXPECT_EQ(Key(), Key().Split(nullptr));
EXPECT_EQ(Key(), Key().Split(&suffix));
EXPECT_EQ(Key(), suffix);
EXPECT_EQ(Key("A"), Key("A").Split(nullptr));
EXPECT_EQ(Key("A"), Key("A").Split(&suffix));
EXPECT_EQ(Key(), suffix);
EXPECT_EQ(Key("A"), Key("A.B").Split(nullptr));
EXPECT_EQ(Key("A"), Key("A.B").Split(&suffix));
EXPECT_EQ(Key("B"), suffix);
EXPECT_EQ(Key("A"), Key("A.B.C").Split(nullptr));
EXPECT_EQ(Key("A"), Key("A.B.C").Split(&suffix));
EXPECT_EQ(Key("B.C"), suffix);
}
TEST(KeyTest, CommonPrefix) {
EXPECT_EQ(Key(), Key().CommonPrefix(Key()));
EXPECT_EQ(Key(), Key("A").CommonPrefix(Key()));
EXPECT_EQ(Key(), Key().CommonPrefix(Key("A")));
EXPECT_EQ(Key("A"), Key("A").CommonPrefix(Key("A")));
EXPECT_EQ(Key("A"), Key("A.B").CommonPrefix(Key("A")));
EXPECT_EQ(Key("A"), Key("A").CommonPrefix(Key("A.B")));
EXPECT_EQ(Key("A"), Key("A.BA.C").CommonPrefix(Key("A.B.C")));
EXPECT_EQ(Key(), Key("A.B").CommonPrefix(Key("B")));
}
TEST(KeyTest, Suffix) {
Key suffix;
EXPECT_TRUE(Key().Suffix(Key(), &suffix));
EXPECT_EQ(Key(), suffix);
EXPECT_FALSE(Key().Suffix(Key("A"), &suffix));
EXPECT_EQ(Key(), suffix);
EXPECT_TRUE(Key("A").Suffix(Key(""), &suffix));
EXPECT_EQ(Key("A"), suffix);
EXPECT_TRUE(Key("A").Suffix(Key("A"), &suffix));
EXPECT_EQ(Key(""), suffix);
EXPECT_TRUE(Key("A.B").Suffix(Key("A"), &suffix));
EXPECT_EQ(Key("B"), suffix);
}
TEST(KeyTest, IsPrefixOf) {
EXPECT_TRUE(Key().IsPrefixOf(Key()));
EXPECT_TRUE(Key().IsPrefixOf(Key("A")));
EXPECT_TRUE(Key("A").IsPrefixOf(Key("A")));
EXPECT_FALSE(Key("A").IsPrefixOf(Key()));
EXPECT_TRUE(Key("A.B").IsPrefixOf(Key("A.B.C")));
EXPECT_FALSE(Key("A.C").IsPrefixOf(Key("A.B.C")));
EXPECT_FALSE(Key("A.B").IsPrefixOf(Key("A.BC")));
}
} // namespace settingsd