MCPcopy Create free account
hub / github.com/FirebirdSQL/firebird / main

Function main

src/jrd/misc/evl_string_test.cpp:90–201  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

88};
89
90int main()
91{
92 MemoryPool *p = MemoryPool::createPool();
93
94 // The tests below attempt to do full code coverage for the LikeEvaluator
95 // Every line of evl_string.h code is covered by the tests
96
97 // '' LIKE ''
98 StringLikeEvaluator t1(p, "", 0);
99 t1.process("", true, true);
100 t1.process("something", false, false);
101
102 // 'test' LIKE 'test'
103 StringLikeEvaluator t2(p, "test", 0);
104 t2.process("test", true, true);
105 t2.process("a", false, false);
106
107 // '_%test' LIKE 'test'
108 StringLikeEvaluator t3(p, "_%test", 0);
109 t3.process("test", true, false);
110 t3.reset();
111 t3.process("ntest", true, true);
112 t3.process("yep?", true, false);
113
114 // Tests for escaped patterns
115 StringLikeEvaluator t4(p, "\\%\\_%some_text_", '\\');
116 t4.process("%_(is it nice?)some!text?", true, true);
117 t4.reset();
118 t4.process("%_some text", true, false);
119 t4.process(".", true, true);
120
121 // More escaped patterns
122 StringLikeEvaluator t5(p, "%sosome_\\%text%", '\\');
123 t5.process("sosomso", true, false);
124 t5.process("sosome.%text", false, true);
125
126 // More escaped patterns
127 StringLikeEvaluator t6(p, "%sosome_text\\%%", '\\');
128 t6.process("sosomso", true, false);
129 t6.process("sosome.text%", false, true);
130
131 // Check for invalid escapes
132 try {
133 StringLikeEvaluator t7(p, "%sosome_text\\?", '\\');
134 assert(false);
135 }
136 catch (const Firebird::Exception&) {
137 }
138
139 // Test single '%' pattern
140 StringLikeEvaluator t8(p, "%%%%%", 0);
141 t8.process("something", false, true);
142 t8.process("something else", false, true);
143
144 // Test optimization of consecutive "_" and "%" subpatterns
145 StringLikeEvaluator t9(p, "%__%%_A", 0);
146 t9.process("ABAB", true, false);
147 t9.process("ABA", true, true);

Callers

nothing calls this directly

Calls 3

assertClass · 0.85
processMethod · 0.45
resetMethod · 0.45

Tested by

no test coverage detected