xref: /aosp_15_r20/external/pytorch/test/cpp/jit/test_qualified_name.cpp (revision da0073e96a02ea20f0ac840b70461e3646d07c45)
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 {
TEST(QualifiedNameTest,PrefixConstruction)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 
TEST(QualifiedNameTest,DottedConstruction)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 
TEST(QualifiedNameTest,BadInputRaises)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 
TEST(QualifiedNameTest,Equality)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 
TEST(QualifiedNameTest,IsPrefixOf)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