| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- #include "jvalidate/regex.h"
- #include "gtest/gtest.h"
- #include <gmock/gmock.h>
- #include <gtest/gtest.h>
- using testing::IsEmpty;
- using testing::Not;
- template <typename T> class RegexEngineTest : public testing::Test {};
- using RegexEngines = testing::Types<jvalidate::StdRegexEngine
- #if JVALIDATE_HAS_ICU
- ,
- jvalidate::ICURegexEngine
- #endif
- >;
- TYPED_TEST_SUITE(RegexEngineTest, RegexEngines);
- TYPED_TEST(RegexEngineTest, HasEngineName) {
- EXPECT_THAT(TypeParam::engine_name(), Not(IsEmpty()));
- }
- TYPED_TEST(RegexEngineTest, IsRegexIsNoexceptOnBadRegex) {
- EXPECT_NO_THROW(TypeParam::is_regex("(ABC){1,2"));
- EXPECT_FALSE(TypeParam::is_regex("(ABC){1,2"));
- }
- TYPED_TEST(RegexEngineTest, IsRegexIsNoexceptOnGoodRegex) {
- EXPECT_NO_THROW(TypeParam::is_regex("(ABC){1,2}"));
- EXPECT_TRUE(TypeParam::is_regex("(ABC){1,2}"));
- }
- TYPED_TEST(RegexEngineTest, SearchCanMatchSubstring) {
- EXPECT_NO_THROW(TypeParam().search("\\d", "10 dollars"));
- EXPECT_TRUE(TypeParam().search("\\d", "10 dollars"));
- }
- TYPED_TEST(RegexEngineTest, SearchCanSetBoundaries) {
- EXPECT_NO_THROW(TypeParam().search("^\\d$", "10 dollars"));
- EXPECT_FALSE(TypeParam().search("^\\d$", "10 dollars"));
- }
- TYPED_TEST(RegexEngineTest, SearchIsNoexceptOnBadRegex) {
- TypeParam engine;
- EXPECT_NO_THROW(engine.search("(ABC){1,2", "ABC"));
- EXPECT_FALSE(engine.search("(ABC){1,2", "ABC"));
- // Repeated calls *can* use a cached result, even if compilation failed
- EXPECT_FALSE(engine.search("(ABC){1,2", "ABC"));
- }
- #if !defined(JVALIDATE_MONOTEST)
- int main(int argc, char ** argv) {
- testing::InitGoogleMock(&argc, argv);
- return RUN_ALL_TESTS();
- }
- #endif
|