-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest.cpp
More file actions
66 lines (57 loc) · 1.7 KB
/
test.cpp
File metadata and controls
66 lines (57 loc) · 1.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#include "gtest/gtest.h"
#include "Parser.h"
#include "regexp.h"
#include <string>
#include <iostream>
using namespace std;
int test(string pattern, string case_str){
regexp reg(pattern);
return reg.accept(case_str);
}
TEST(MixedTest, ConcatTest){
EXPECT_EQ(1, test("abc", "abc"));
}
TEST(MixedTest, UnionTest){
EXPECT_EQ(1, test("a(b|c)", "ab"));
EXPECT_EQ(1, test("abcd|efg", "abcd"));
EXPECT_EQ(0, test("cd|e", "c"));
EXPECT_EQ(1, test("abcd|efgh|hijk", "efgh"));
}
TEST(MixedTest, StarTest){
EXPECT_EQ(1, test("ab*", "abbbb"));
EXPECT_EQ(1, test("a?b*", ""));
EXPECT_EQ(1, test("a?b*", "a"));
EXPECT_EQ(1, test("a?b*", "bbb"));
EXPECT_EQ(1, test("a?b*", "abbbb"));
EXPECT_EQ(0, test("a?b*", "c"));
}
TEST(MixedTest, DotTest){
EXPECT_EQ(1, test(".", "a"));
EXPECT_EQ(0, test(".", "aa"));
EXPECT_EQ(1, test(".*", "asdsads"));
}
TEST(MixedTest, MixTest){
EXPECT_EQ(1, test("ab(cd|e)fg", "abcdfg"));
EXPECT_EQ(1, test("ab(cd|e)fg", "abefg"));
EXPECT_EQ(0, test("ab((cd)|e)fg", "abcfg"));
EXPECT_EQ(1, test("ab((cd)|e)*fg", "abcdcdcdfg"));
EXPECT_EQ(1, test("ab((cd)|e)*fg", "abcdcdefg"));
EXPECT_EQ(0, test("ab((cd)|e)*fg", "abcdcdcefg"));
EXPECT_EQ(1, test("ab?((cd)|e)?fg*", "abfgggg"));
}
TEST(MixedTest, PlusTest){
EXPECT_EQ(1, test("ab+", "ab"));
EXPECT_EQ(0, test("ab+", "a"));
}
TEST(BracketTest, PositiveTest){
EXPECT_EQ(1, test("a[abc]", "ab"));
EXPECT_EQ(1, test("a[b|d]e", "a|e"));
}
TEST(BracketTest, NegativeTest){
EXPECT_EQ(0, test("a[abc]", "ad"));
EXPECT_EQ(0, test("[abc]", "d"));
}
TEST(BracketTest, ComplexTest){
EXPECT_EQ(1, test("a[bc]*", "abbbc"));
EXPECT_EQ(0, test("a[bc]+", "a"));
}