1 | #include <gtest/gtest.h> |
2 | |
3 | #include <ATen/core/qualified_name.h> |
4 | #include <c10/util/Exception.h> |
5 | |
6 | using c10::QualifiedName; |
7 | |
8 | namespace torch { |
9 | namespace jit { |
10 | TEST(QualifiedNameTest, PrefixConstruction) { |
11 | // Test prefix construction |
12 | auto foo = QualifiedName("foo" ); |
13 | auto bar = QualifiedName(foo, "bar" ); |
14 | auto baz = QualifiedName(bar, "baz" ); |
15 | ASSERT_EQ(baz.qualifiedName(), "foo.bar.baz" ); |
16 | ASSERT_EQ(baz.prefix(), "foo.bar" ); |
17 | ASSERT_EQ(baz.name(), "baz" ); |
18 | auto nullstate = QualifiedName(); |
19 | ASSERT_EQ(nullstate.qualifiedName(), "" ); |
20 | ASSERT_EQ(nullstate.prefix(), "" ); |
21 | ASSERT_EQ(nullstate.name(), "" ); |
22 | } |
23 | |
24 | TEST(QualifiedNameTest, DottedConstruction) { |
25 | // Test dotted construction |
26 | auto foo = QualifiedName("foo.bar.baz" ); |
27 | ASSERT_EQ(foo.qualifiedName(), "foo.bar.baz" ); |
28 | ASSERT_EQ(foo.prefix(), "foo.bar" ); |
29 | ASSERT_EQ(foo.name(), "baz" ); |
30 | |
31 | auto bar = QualifiedName("bar" ); |
32 | ASSERT_EQ(bar.qualifiedName(), "bar" ); |
33 | ASSERT_EQ(bar.prefix(), "" ); |
34 | ASSERT_EQ(bar.name(), "bar" ); |
35 | } |
36 | |
37 | TEST(QualifiedNameTest, BadInputRaises) { |
38 | // throw some bad inputs at it |
39 | // NOLINTNEXTLINE(cppcoreguidelines-avoid-goto,hicpp-avoid-goto) |
40 | ASSERT_ANY_THROW(QualifiedName("foo..bar" )); |
41 | // NOLINTNEXTLINE(cppcoreguidelines-avoid-goto,hicpp-avoid-goto) |
42 | ASSERT_ANY_THROW(QualifiedName(".foo.bar" )); |
43 | // NOLINTNEXTLINE(cppcoreguidelines-avoid-goto,hicpp-avoid-goto) |
44 | ASSERT_ANY_THROW(QualifiedName("foo.bar." )); |
45 | // NOLINTNEXTLINE(cppcoreguidelines-avoid-goto,hicpp-avoid-goto) |
46 | ASSERT_ANY_THROW(QualifiedName("" )); |
47 | } |
48 | |
49 | TEST(QualifiedNameTest, Equality) { |
50 | // test equality api |
51 | auto foo1 = QualifiedName("foo.bar.baz" ); |
52 | auto foo2 = QualifiedName("foo.bar.baz" ); |
53 | auto foo3 = QualifiedName("bar.bar.baz" ); |
54 | ASSERT_EQ(foo1, foo2); |
55 | ASSERT_NE(foo1, foo3); |
56 | auto bar1 = QualifiedName("sup" ); |
57 | auto bar2 = QualifiedName("sup" ); |
58 | ASSERT_EQ(foo1, foo2); |
59 | } |
60 | |
61 | TEST(QualifiedNameTest, IsPrefixOf) { |
62 | // test prefix api |
63 | auto foo1 = QualifiedName("foo.bar.baz" ); |
64 | auto foo2 = QualifiedName("foo.bar" ); |
65 | auto foo3 = QualifiedName("bar.bar.baz" ); |
66 | auto foo4 = QualifiedName("foo.bar" ); |
67 | ASSERT_TRUE(foo2.isPrefixOf(foo1)); |
68 | ASSERT_TRUE(foo2.isPrefixOf(foo4)); |
69 | ASSERT_TRUE(foo4.isPrefixOf(foo2)); |
70 | ASSERT_FALSE(foo1.isPrefixOf(foo2)); |
71 | ASSERT_FALSE(foo2.isPrefixOf(foo3)); |
72 | } |
73 | } // namespace jit |
74 | } // namespace torch |
75 | |