Add EqualsPointer matcher for comparing pointed-to values
This commit is contained in:
parent
d027aa5af6
commit
656f6b0819
3 changed files with 64 additions and 36 deletions
|
|
@ -10,30 +10,30 @@ describe("parsing pattern rules", []() {
|
|||
it("parses simple strings", [&]() {
|
||||
Pattern rule("abc");
|
||||
AssertThat(
|
||||
rule.to_rule_tree()->to_string(),
|
||||
Equals(seq({
|
||||
rule.to_rule_tree(),
|
||||
EqualsPointer(seq({
|
||||
character('a'),
|
||||
character('b'),
|
||||
character('c')
|
||||
})->to_string()));
|
||||
})));
|
||||
});
|
||||
|
||||
it("parses character classes", []() {
|
||||
Pattern rule("\\w-\\d");
|
||||
AssertThat(
|
||||
rule.to_rule_tree()->to_string(),
|
||||
Equals(seq({
|
||||
rule.to_rule_tree(),
|
||||
EqualsPointer(seq({
|
||||
character(CharClassWord),
|
||||
character('-'),
|
||||
character(CharClassDigit)
|
||||
})->to_string()));
|
||||
})));
|
||||
});
|
||||
|
||||
it("parses choices", []() {
|
||||
Pattern rule("ab|cd|ef");
|
||||
AssertThat(
|
||||
rule.to_rule_tree()->to_string(),
|
||||
Equals(choice({
|
||||
rule.to_rule_tree(),
|
||||
EqualsPointer(choice({
|
||||
seq({
|
||||
character('a'),
|
||||
character('b'),
|
||||
|
|
@ -46,39 +46,39 @@ describe("parsing pattern rules", []() {
|
|||
character('e'),
|
||||
character('f')
|
||||
})
|
||||
})->to_string()));
|
||||
})));
|
||||
});
|
||||
|
||||
it("parses choices in sequences", []() {
|
||||
Pattern rule("(a|b)cd");
|
||||
AssertThat(
|
||||
rule.to_rule_tree()->to_string(),
|
||||
Equals(seq({
|
||||
rule.to_rule_tree(),
|
||||
EqualsPointer(seq({
|
||||
choice({
|
||||
character('a'),
|
||||
character('b'),
|
||||
}),
|
||||
character('c'),
|
||||
character('d')
|
||||
})->to_string()));
|
||||
})));
|
||||
});
|
||||
|
||||
it("parses special characters when they are escaped", []() {
|
||||
Pattern rule("a\\(b");
|
||||
AssertThat(
|
||||
rule.to_rule_tree()->to_string(),
|
||||
Equals(seq({
|
||||
rule.to_rule_tree(),
|
||||
EqualsPointer(seq({
|
||||
character('a'),
|
||||
character('('),
|
||||
character('b')
|
||||
})->to_string()));
|
||||
})));
|
||||
});
|
||||
|
||||
it("parses repeating rules", []() {
|
||||
Pattern rule("(ab)+(cd)+");
|
||||
AssertThat(
|
||||
rule.to_rule_tree()->to_string(),
|
||||
Equals(
|
||||
rule.to_rule_tree(),
|
||||
EqualsPointer(
|
||||
seq({
|
||||
repeat(seq({
|
||||
character('a'),
|
||||
|
|
@ -88,7 +88,7 @@ describe("parsing pattern rules", []() {
|
|||
character('c'),
|
||||
character('d')
|
||||
})),
|
||||
})->to_string()
|
||||
})
|
||||
));
|
||||
});
|
||||
});
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue