-
-
Notifications
You must be signed in to change notification settings - Fork 1.9k
/
TagsTest.java
82 lines (75 loc) · 3.91 KB
/
TagsTest.java
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
package com.intuit.karate.core;
import static org.junit.jupiter.api.Assertions.*;
import org.junit.jupiter.api.Test;
import java.util.ArrayList;
import java.util.List;
/**
*
* @author pthomas3
*/
class TagsTest {
@Test
public void testCucumberOptionsTagsConversion() {
assertEquals("anyOf('@foo')", Tags.fromKarateOptionsTags("@foo"));
assertEquals("anyOf('@foo','@bar')", Tags.fromKarateOptionsTags("@foo,@bar"));
assertEquals("anyOf('@foo') && anyOf('@bar')", Tags.fromKarateOptionsTags("@foo", "@bar"));
assertEquals("anyOf('@foo') && not('@bar')", Tags.fromKarateOptionsTags("@foo", "~@bar"));
// detect new syntax and use as-is
assertEquals("anyOf('@foo')", Tags.fromKarateOptionsTags("anyOf('@foo')"));
}
private boolean eval(String tagSelector, String ... strs) {
List<Tag> list = new ArrayList(strs.length);
for (String s : strs) {
list.add(new Tag(0, s));
}
Tags tags = new Tags(list);
return tags.evaluate(tagSelector);
}
@Test
public void testTagSelectors() {
assertTrue(eval(null));
assertTrue(eval(null, "@foo", "@bar"));
assertTrue(eval("anyOf('@foo')", "@foo", "@bar"));
assertTrue(eval("not('@ignore')"));
assertTrue(eval("not('@ignore')", "@foo", "@bar"));
assertTrue(eval("anyOf('@foo', '@bar')", "@foo", "@bar"));
assertTrue(eval("anyOf('@foo', '@baz')", "@foo", "@bar"));
assertTrue(eval("allOf('@foo')", "@foo", "@bar"));
assertTrue(eval("allOf('@foo', '@bar')", "@foo", "@bar"));
assertTrue(eval("allOf('@foo', '@bar') && not('@ignore')", "@foo", "@bar"));
assertTrue(eval("anyOf('@foo') && !anyOf('@ignore')", "@foo", "@bar"));
assertFalse(eval("!anyOf('@ignore')", "@ignore"));
assertFalse(eval("not('@ignore')", "@ignore"));
assertFalse(eval("not('@ignore', '@foo')", "@ignore"));
assertFalse(eval("!anyOf('@ignore')", "@foo", "@bar", "@ignore"));
assertFalse(eval("anyOf('@foo') && !anyOf('@ignore')", "@foo", "@bar", "@ignore"));
assertFalse(eval("anyOf('@foo')", "@bar", "@ignore"));
assertFalse(eval("allOf('@foo', '@baz')", "@foo", "@bar"));
assertFalse(eval("anyOf('@foo') && anyOf('@baz')", "@foo", "@bar"));
assertFalse(eval("!anyOf('@foo')", "@foo", "@bar"));
assertFalse(eval("allOf('@foo', '@bar') && not('@ignore')", "@foo", "@bar", "@ignore"));
}
@Test
public void testTagValueSelectors() {
assertFalse(eval("valuesFor('@id').isPresent"));
assertFalse(eval("valuesFor('@id').isPresent", "@foo"));
assertFalse(eval("valuesFor('@id').isPresent", "@id"));
assertFalse(eval("valuesFor('@id').isPresent", "@foo", "@id"));
assertFalse(eval("valuesFor('@id').isPresent", "@id="));
assertTrue(eval("valuesFor('@id').isPresent", "@id=1"));
assertTrue(eval("valuesFor('@id').isOnly(1)", "@id=1"));
assertTrue(eval("valuesFor('@id').isAnyOf(1)", "@id=1"));
assertTrue(eval("valuesFor('@id').isAllOf(1)", "@id=1"));
assertTrue(eval("valuesFor('@id').isAllOf(1)", "@id=1,2"));
assertFalse(eval("valuesFor('@id').isAnyOf(2)", "@id=1"));
assertTrue(eval("valuesFor('@id').isAnyOf(1)", "@id=1,2"));
assertTrue(eval("valuesFor('@id').isAnyOf(2)", "@id=1,2"));
assertTrue(eval("valuesFor('@id').isAllOf(1, 2)", "@id=1,2"));
assertTrue(eval("valuesFor('@id').isOnly(1, 2)", "@id=1,2"));
assertFalse(eval("valuesFor('@id').isOnly(1, 3)", "@id=1,2"));
assertTrue(eval("valuesFor('@id').isAnyOf(1, 2)", "@id=1,2"));
assertTrue(eval("valuesFor('@id').isAnyOf(1, 3)", "@id=1,2"));
assertTrue(eval("valuesFor('@id').isEach(s => s.startsWith('1'))", "@id=100,1000"));
assertTrue(eval("valuesFor('@id').isEach(s => /^1.*/.test(s))", "@id=100,1000"));
}
}