regex_test.cxx 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. #include "jvalidate/regex.h"
  2. #include "gtest/gtest.h"
  3. #include <gmock/gmock.h>
  4. #include <gtest/gtest.h>
  5. using testing::IsEmpty;
  6. using testing::Not;
  7. template <typename T> class RegexEngineTest : public testing::Test {};
  8. using RegexEngines = testing::Types<jvalidate::StdRegexEngine
  9. #if JVALIDATE_HAS_ICU
  10. ,
  11. jvalidate::ICURegexEngine
  12. #endif
  13. >;
  14. TYPED_TEST_SUITE(RegexEngineTest, RegexEngines);
  15. TYPED_TEST(RegexEngineTest, HasEngineName) {
  16. EXPECT_THAT(TypeParam::engine_name(), Not(IsEmpty()));
  17. }
  18. TYPED_TEST(RegexEngineTest, IsRegexIsNoexceptOnBadRegex) {
  19. EXPECT_NO_THROW(TypeParam::is_regex("(ABC){1,2"));
  20. EXPECT_FALSE(TypeParam::is_regex("(ABC){1,2"));
  21. }
  22. TYPED_TEST(RegexEngineTest, IsRegexIsNoexceptOnGoodRegex) {
  23. EXPECT_NO_THROW(TypeParam::is_regex("(ABC){1,2}"));
  24. EXPECT_TRUE(TypeParam::is_regex("(ABC){1,2}"));
  25. }
  26. TYPED_TEST(RegexEngineTest, SearchCanMatchSubstring) {
  27. EXPECT_NO_THROW(TypeParam().search("\\d", "10 dollars"));
  28. EXPECT_TRUE(TypeParam().search("\\d", "10 dollars"));
  29. }
  30. TYPED_TEST(RegexEngineTest, SearchCanSetBoundaries) {
  31. EXPECT_NO_THROW(TypeParam().search("^\\d$", "10 dollars"));
  32. EXPECT_FALSE(TypeParam().search("^\\d$", "10 dollars"));
  33. }
  34. TYPED_TEST(RegexEngineTest, SearchIsNoexceptOnBadRegex) {
  35. EXPECT_NO_THROW(TypeParam().search("(ABC){1,2", "ABC"));
  36. EXPECT_FALSE(TypeParam().search("(ABC){1,2", "ABC"));
  37. }
  38. #if !defined(JVALIDATE_MONOTEST)
  39. int main(int argc, char ** argv) {
  40. testing::InitGoogleMock(&argc, argv);
  41. return RUN_ALL_TESTS();
  42. }
  43. #endif