| 19 | using namespace std::literals; |
| 20 | |
| 21 | TEST(ComponentNameParserTest, Parse) { |
| 22 | { |
| 23 | auto CName = Validator::ComponentName::parse("[constructor]my-class"sv); |
| 24 | ASSERT_TRUE(CName.has_value()); |
| 25 | EXPECT_EQ(CName->getKind(), Validator::ComponentNameKind::Constructor); |
| 26 | EXPECT_EQ(CName->getDetail().get<Validator::ConstructorDetail>().Label, |
| 27 | "my-class"sv); |
| 28 | EXPECT_EQ(CName->getNoTagName(), "my-class"sv); |
| 29 | EXPECT_EQ(CName->getOriginalName(), "[constructor]my-class"sv); |
| 30 | } |
| 31 | { |
| 32 | auto CName = |
| 33 | Validator::ComponentName::parse("[method]my-resource.my-method"sv); |
| 34 | ASSERT_TRUE(CName.has_value()); |
| 35 | EXPECT_EQ(CName->getKind(), Validator::ComponentNameKind::Method); |
| 36 | EXPECT_EQ(CName->getDetail().get<Validator::MethodDetail>().Resource, |
| 37 | "my-resource"sv); |
| 38 | EXPECT_EQ(CName->getDetail().get<Validator::MethodDetail>().Method, |
| 39 | "my-method"sv); |
| 40 | EXPECT_EQ(CName->getNoTagName(), "my-resource.my-method"sv); |
| 41 | EXPECT_EQ(CName->getOriginalName(), "[method]my-resource.my-method"sv); |
| 42 | } |
| 43 | { |
| 44 | auto CName = |
| 45 | Validator::ComponentName::parse("[static]my-resource.my-method"sv); |
| 46 | ASSERT_TRUE(CName.has_value()); |
| 47 | EXPECT_EQ(CName->getKind(), Validator::ComponentNameKind::Static); |
| 48 | EXPECT_EQ(CName->getDetail().get<Validator::StaticDetail>().Resource, |
| 49 | "my-resource"sv); |
| 50 | EXPECT_EQ(CName->getDetail().get<Validator::StaticDetail>().Method, |
| 51 | "my-method"sv); |
| 52 | EXPECT_EQ(CName->getNoTagName(), "my-resource.my-method"sv); |
| 53 | EXPECT_EQ(CName->getOriginalName(), "[static]my-resource.my-method"sv); |
| 54 | } |
| 55 | { |
| 56 | auto CName = Validator::ComponentName::parse( |
| 57 | "name-space:a-label/projection-label@1.2.3"sv); |
| 58 | ASSERT_TRUE(CName.has_value()); |
| 59 | EXPECT_EQ(CName->getKind(), Validator::ComponentNameKind::InterfaceType); |
| 60 | auto &D = CName->getDetail().get<Validator::InterfaceDetail>(); |
| 61 | EXPECT_EQ(D.Namespace, "name-space"sv); |
| 62 | EXPECT_EQ(D.Package, "a-label"sv); |
| 63 | EXPECT_EQ(D.Interface, "projection-label"sv); |
| 64 | EXPECT_EQ(D.Version, "1.2.3"sv); |
| 65 | } |
| 66 | // Invalid names |
| 67 | EXPECT_FALSE(Validator::ComponentName::parse("[constructor]"sv)); |
| 68 | EXPECT_FALSE(Validator::ComponentName::parse("[method]"sv)); |
| 69 | EXPECT_FALSE(Validator::ComponentName::parse("[method]resource"sv)); |
| 70 | EXPECT_FALSE(Validator::ComponentName::parse("[unknown]label"sv)); |
| 71 | EXPECT_FALSE(Validator::ComponentName::parse(""sv)); |
| 72 | EXPECT_FALSE(Validator::ComponentName::parse("123-abc"sv)); |
| 73 | // Valid labels |
| 74 | { |
| 75 | auto CName = Validator::ComponentName::parse("simple-label"sv); |
| 76 | ASSERT_TRUE(CName.has_value()); |
| 77 | EXPECT_EQ(CName->getKind(), Validator::ComponentNameKind::Label); |
| 78 | } |
nothing calls this directly
no test coverage detected