Index: ui/views/attributes_unittest.cc |
diff --git a/ui/views/attributes_unittest.cc b/ui/views/attributes_unittest.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..24cd34075ccb47f9c5f8d8f4fc3e2ed696e80b40 |
--- /dev/null |
+++ b/ui/views/attributes_unittest.cc |
@@ -0,0 +1,85 @@ |
+// Copyright (c) 2016 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 "ui/views/attributes.h" |
+ |
+#include "testing/gtest/include/gtest/gtest.h" |
+ |
+using AttributesTest = testing::Test; |
+ |
+namespace views { |
+ |
+namespace { |
+ |
+class SpecialContent { |
+ public: |
+ SpecialContent() {} |
+ SpecialContent(int data) : attr_data_(data) {} |
+ int GetAttrData() { return attr_data_; } |
+ |
+ private: |
+ int attr_data_; |
+}; |
+ |
+class OtherContent : public SpecialContent { |
+ public: |
+ OtherContent() {} |
+ OtherContent(int data, double double_data) |
+ : SpecialContent(data), double_data_(double_data) {} |
+ double GetDoubleData() { return double_data_; } |
+ |
+ private: |
+ double double_data_; |
+}; |
+ |
+} // namespace |
+ |
+using SpecialAttribute = CustomAttribute<SpecialContent>; |
+using OtherAttribute = CustomAttribute<OtherContent, SpecialAttribute>; |
+REGISTER_ATTRIBUTE_ID(SpecialAttribute); |
+REGISTER_ATTRIBUTE_ID(OtherAttribute); |
+ |
+TEST_F(AttributesTest, InsertTest) { |
+ AttributeContainer container(nullptr); |
+ EXPECT_TRUE(container.Add( |
+ base::WrapUnique(new SpecialAttribute(SpecialContent(10))))); |
+ EXPECT_FALSE(container.Add( |
+ base::WrapUnique(new SpecialAttribute(SpecialContent(20))))); |
+} |
+ |
+TEST_F(AttributesTest, RemoveTest) { |
+ AttributeContainer container(nullptr); |
+ EXPECT_TRUE(container.Add( |
+ base::WrapUnique(new SpecialAttribute(SpecialContent(10))))); |
+ EXPECT_TRUE(container.Remove(GetAttributeId<SpecialAttribute>())); |
+ EXPECT_FALSE(container.Remove(GetAttributeId<SpecialAttribute>())); |
+} |
+ |
+TEST_F(AttributesTest, FindTest) { |
+ AttributeContainer container(nullptr); |
+ SpecialAttribute* sa; |
+ EXPECT_TRUE(container.Add( |
+ base::WrapUnique(new SpecialAttribute(SpecialContent(10))))); |
+ EXPECT_TRUE(container.Find(sa)); |
+ EXPECT_EQ(sa->GetContent().GetAttrData(), 10); |
+ EXPECT_TRUE(container.Remove(GetAttributeId<SpecialAttribute>())); |
+ EXPECT_FALSE(container.Find(sa)); |
+} |
+ |
+TEST_F(AttributesTest, FindTest2) { |
+ AttributeContainer container(nullptr); |
+ OtherAttribute* oa; |
+ SpecialAttribute* sa; |
+ EXPECT_TRUE(container.Add( |
+ base::WrapUnique(new OtherAttribute(OtherContent(20, 3.14))))); |
+ EXPECT_TRUE(container.Add( |
+ base::WrapUnique(new SpecialAttribute(SpecialContent(10))))); |
+ EXPECT_TRUE(container.Find(oa)); |
+ EXPECT_EQ(oa->GetContent().GetDoubleData(), 3.14); |
+ EXPECT_EQ(oa->GetContent().GetAttrData(), 20); |
+ EXPECT_TRUE(container.Find(sa)); |
+ EXPECT_EQ(sa->GetContent().GetAttrData(), 10); |
+} |
+ |
+} // namespace views |