Skip to content

Commit 2d09437

Browse files
matchers: doc string contain and regexp (#1527)
1 parent e750946 commit 2d09437

4 files changed

Lines changed: 94 additions & 2 deletions

File tree

webtau-core-groovy/src/test/groovy/org/testingisdocumenting/webtau/expectation/equality/handlers/StringMatchersGroovyExamplesTest.groovy

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,8 @@
1717
package org.testingisdocumenting.webtau.expectation.equality.handlers
1818

1919
import org.junit.Test
20-
import static org.testingisdocumenting.webtau.WebTauCore.*
20+
21+
import static org.testingisdocumenting.webtau.Matchers.*
2122

2223
class StringMatchersGroovyExamplesTest {
2324
@Test
@@ -31,7 +32,7 @@ class StringMatchersGroovyExamplesTest {
3132
}
3233

3334
@Test
34-
void multLine() {
35+
void multiLine() {
3536
code {
3637
// multi-line-compare
3738
String output = buildOutput()
@@ -50,6 +51,24 @@ class StringMatchersGroovyExamplesTest {
5051
} should throwException(AssertionError)
5152
}
5253

54+
@Test
55+
void regexp() {
56+
// single-line-regexp
57+
String output = 'final price: $8998'
58+
output.should == ~/final price: \$\d+/
59+
// single-line-regexp
60+
}
61+
62+
@Test
63+
void contains() {
64+
code {
65+
// multi-line-contains
66+
String output = buildOutput()
67+
output.should contain("four")
68+
// multi-line-contains
69+
} should throwException(AssertionError)
70+
}
71+
5372
private static String buildOutput() {
5473
return "line one\nline two\nline three"
5574
}

webtau-core/src/test/java/org/testingisdocumenting/webtau/expectation/equality/handlers/StringMatchersJavaExamplesTest.java

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818

1919
import org.junit.Test;
2020

21+
import java.util.regex.Pattern;
22+
2123
import static org.testingisdocumenting.webtau.Matchers.*;
2224
import static org.testingisdocumenting.webtau.testutils.TestConsoleOutput.*;
2325

@@ -59,6 +61,33 @@ public void extraEmptyLines() {
5961
});
6062
}
6163

64+
@Test
65+
public void regexp() {
66+
runCaptureAndValidateOutput("string-regexp-output", ". [value] equals ~/final price: \\$\\d+/ (Xms)", () -> {
67+
// single-line-regexp
68+
String output = "final price: $8998";
69+
actual(output).should(equal(Pattern.compile("final price: \\$\\d+")));
70+
// single-line-regexp
71+
});
72+
}
73+
74+
@Test
75+
public void contains() {
76+
runExpectExceptionCaptureAndValidateOutput(AssertionError.class, "string-contains-output", """
77+
X failed expecting [value] to contain "four": no match found (Xms)
78+
\s
79+
**__________**
80+
line one
81+
line two
82+
line three
83+
**__________**""", () -> {
84+
// multi-line-contains
85+
String output = buildOutput();
86+
actual(output).should(contain("four"));
87+
// multi-line-contains
88+
});
89+
}
90+
6291
private static String buildOutput() {
6392
return "line one\nline two\nline three";
6493
}

webtau-docs/znai/matchers/strings.md

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,3 +66,45 @@ Java:
6666
title: "console output"
6767
}
6868

69+
# Contains
70+
71+
Use `contains` matcher to check a presence of a substring:
72+
73+
```tabs
74+
Groovy:
75+
:include-file: org/testingisdocumenting/webtau/expectation/equality/handlers/StringMatchersGroovyExamplesTest.groovy {
76+
surroundedBy: "multi-line-contains"
77+
}
78+
79+
Java:
80+
:include-file: org/testingisdocumenting/webtau/expectation/equality/handlers/StringMatchersJavaExamplesTest.java {
81+
surroundedBy: "multi-line-contains"
82+
}
83+
```
84+
85+
:include-cli-output: doc-artifacts/string-contains-output.txt {
86+
title: "console output"
87+
}
88+
89+
# Regexp
90+
91+
Use `equal` matcher to match against a regular expression:
92+
93+
```tabs
94+
Groovy:
95+
:include-file: org/testingisdocumenting/webtau/expectation/equality/handlers/StringMatchersGroovyExamplesTest.groovy {
96+
surroundedBy: "single-line-regexp"
97+
}
98+
99+
Java:
100+
:include-file: org/testingisdocumenting/webtau/expectation/equality/handlers/StringMatchersJavaExamplesTest.java {
101+
surroundedBy: "single-line-regexp"
102+
}
103+
```
104+
105+
:include-cli-output: doc-artifacts/string-regexp-output.txt {
106+
title: "console output"
107+
}
108+
109+
110+
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
* Doc: [string contain](matchers/strings#contains)
2+
* Doc: [string regexp](matchers/strings#regexp)

0 commit comments

Comments
 (0)