Skip to content

Commit 5a38628

Browse files
committed
Merge pull request godotengine#81742 from toastedbreadandomelette/regex_additional_tests
Add additional tests for RegEx
2 parents 76c4ed9 + b7de8e2 commit 5a38628

File tree

1 file changed

+42
-0
lines changed

1 file changed

+42
-0
lines changed

modules/regex/tests/test_regex.h

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,48 @@ TEST_CASE("[RegEx] Empty pattern") {
184184
CHECK(re.is_valid());
185185
}
186186

187+
TEST_CASE("[RegEx] Complex Grouping") {
188+
const String test = "https://docs.godotengine.org/en/latest/contributing/";
189+
190+
// Ignored protocol in grouping.
191+
RegEx re("^(?:https?://)([a-zA-Z]{2,4})\\.([a-zA-Z][a-zA-Z0-9_\\-]{2,64})\\.([a-zA-Z]{2,4})");
192+
REQUIRE(re.is_valid());
193+
Ref<RegExMatch> expr = re.search(test);
194+
195+
CHECK(expr->get_group_count() == 3);
196+
197+
CHECK(expr->get_string(0) == "https://docs.godotengine.org");
198+
199+
CHECK(expr->get_string(1) == "docs");
200+
CHECK(expr->get_string(2) == "godotengine");
201+
CHECK(expr->get_string(3) == "org");
202+
}
203+
204+
TEST_CASE("[RegEx] Number Expression") {
205+
const String test = "(2.5e-3 + 35 + 46) / 2.8e0 = 28.9294642857";
206+
207+
// Not an exact regex for number but a good test.
208+
RegEx re("([+-]?\\d+)(\\.\\d+([eE][+-]?\\d+)?)?");
209+
REQUIRE(re.is_valid());
210+
Array number_match = re.search_all(test);
211+
212+
CHECK(number_match.size() == 5);
213+
214+
Ref<RegExMatch> number = number_match[0];
215+
CHECK(number->get_string(0) == "2.5e-3");
216+
CHECK(number->get_string(1) == "2");
217+
number = number_match[1];
218+
CHECK(number->get_string(0) == "35");
219+
number = number_match[2];
220+
CHECK(number->get_string(0) == "46");
221+
number = number_match[3];
222+
CHECK(number->get_string(0) == "2.8e0");
223+
number = number_match[4];
224+
CHECK(number->get_string(0) == "28.9294642857");
225+
CHECK(number->get_string(1) == "28");
226+
CHECK(number->get_string(2) == ".9294642857");
227+
}
228+
187229
TEST_CASE("[RegEx] Invalid end position") {
188230
const String s = "Godot";
189231

0 commit comments

Comments
 (0)