| // Copyright 2017-2020 The Verible Authors. |
| // |
| // Licensed under the Apache License, Version 2.0 (the "License"); |
| // you may not use this file except in compliance with the License. |
| // You may obtain a copy of the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, software |
| // distributed under the License is distributed on an "AS IS" BASIS, |
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| // See the License for the specific language governing permissions and |
| // limitations under the License. |
| |
| #include "common/strings/naming_utils.h" |
| |
| #include "gtest/gtest.h" |
| |
| namespace verible { |
| namespace { |
| |
| // Tests that all strings containing more than just upper case letters, |
| // underscores, and digits are rejected. |
| TEST(IsNameAllCapsUnderscoresDigitsTest, RejectTests) { |
| static const char* test_cases[] = { |
| "foo", "HAS A SPACE", "NOT_ALL_UPPERCASe", "MiXeD", |
| "FO?O", "lower", "lower_underscore", |
| }; |
| for (const auto data : test_cases) { |
| EXPECT_FALSE(IsNameAllCapsUnderscoresDigits(data)); |
| } |
| } |
| |
| // Tests that all strings containing only upper case letters, underscores, and |
| // digits are accepted. |
| TEST(IsNameAllCapsUnderscoresDigitsTest, AcceptTests) { |
| static const char* test_cases[] = { |
| "", "FOO", "HAS_UNDERSCORE", "_UNDERSCORE_AT_BEGINNING", |
| "___", "__UPPER__", "_123", "FOO_1", |
| }; |
| for (const auto data : test_cases) { |
| EXPECT_TRUE(IsNameAllCapsUnderscoresDigits(data)); |
| } |
| } |
| |
| // Tests that all strings containing underscores not next to digits are |
| // rejected. |
| TEST(AllUnderscoresFollowedByDigitsTest, RejectTests) { |
| static const char* test_cases[] = { |
| "Hello_World", "_H1", "Hello_", "1_", "Foo1_Bar", |
| "Fo_1_o", "_", "Hello__1", "Hello__World", "__1", |
| }; |
| for (const auto data : test_cases) { |
| EXPECT_FALSE(AllUnderscoresFollowedByDigits(data)); |
| } |
| } |
| |
| // Tests that all strings containing underscores next to a digit are accepted. |
| TEST(AllUnderscoresFollowedByDigitsTest, AcceptTests) { |
| static const char* test_cases[] = { |
| "", |
| "Foo_1", |
| "Foo_1_1", |
| "_1", |
| }; |
| for (const auto data : test_cases) { |
| EXPECT_TRUE(AllUnderscoresFollowedByDigits(data)); |
| } |
| } |
| |
| // Tests that all strings not following UpperCamelCase naming convention are |
| // rejected. |
| TEST(IsUpperCamelCaseWithDigitsTest, RejectTests) { |
| static const char* test_cases[] = { |
| "Hello_World", "hello_world", "helloworld", "helloWorld", "Hello_1_World", |
| "Hello__1", "Foo_", "_Foo", "_1", "__Foo", |
| }; |
| for (const auto data : test_cases) { |
| EXPECT_FALSE(IsUpperCamelCaseWithDigits(data)); |
| } |
| } |
| |
| // Tests that all strings following UpperCamelCase naming convention are |
| // accepted. |
| TEST(IsUpperCamelCaseWithDigitsTest, AcceptTests) { |
| static const char* test_cases[] = { |
| "", |
| "HelloWorld", |
| "Foo_1", |
| "HelloWorld_1", |
| "HelloWorld_1_1", |
| "HelloWorld1", |
| "ABCWorld", |
| }; |
| for (const auto data : test_cases) { |
| EXPECT_TRUE(IsUpperCamelCaseWithDigits(data)); |
| } |
| } |
| |
| // Tests that all strings following lower_snake_case naming convention are |
| // accepted. |
| TEST(IsLowerSnakeCaseWithDigitsTest, AcceptTests) { |
| static const char* test_cases[] = { |
| "", "hello_world", "hello_1_world", "hello_1", "hello_world_1_1", |
| "hello1", "hello_", |
| }; |
| for (const auto data : test_cases) { |
| EXPECT_TRUE(IsLowerSnakeCaseWithDigits(data)); |
| } |
| } |
| |
| // Tests that all strings not following lower_snake_case naming convention are |
| // rejected. |
| TEST(IsLowerSnakeCaseWithDigitsTest, RejectTests) { |
| static const char* test_cases[] = { |
| "_1", "__hello", "Hello_world", "hello_1_World", |
| "hello_1W", "HelloWorld", "helLo1_", |
| }; |
| for (const auto data : test_cases) { |
| EXPECT_FALSE(IsLowerSnakeCaseWithDigits(data)); |
| } |
| } |
| |
| } // namespace |
| } // namespace verible |