Skip to content
This repository was archived by the owner on Mar 25, 2025. It is now read-only.

Commit 57b9595

Browse files
committed
Added test for conditions
1 parent 83cbc86 commit 57b9595

File tree

2 files changed

+136
-3
lines changed

2 files changed

+136
-3
lines changed

webtester-core/src/main/java/info/novatec/testit/webtester/conditions/Condition.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package info.novatec.testit.webtester.conditions;
22

3-
import java.util.Objects;
43
import java.util.function.Predicate;
54

65

@@ -23,13 +22,11 @@ default Condition<T> negate() {
2322

2423
@Override
2524
default Condition<T> and(Predicate<? super T> other) {
26-
Objects.requireNonNull(other);
2725
return (t) -> test(t) && other.test(t);
2826
}
2927

3028
@Override
3129
default Condition<T> or(Predicate<? super T> other) {
32-
Objects.requireNonNull(other);
3330
return (t) -> test(t) || other.test(t);
3431
}
3532

Lines changed: 136 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,136 @@
1+
package info.novatec.testit.webtester.conditions;
2+
3+
import static org.assertj.core.api.Assertions.assertThat;
4+
import static org.mockito.Mockito.doReturn;
5+
import static org.mockito.Mockito.inOrder;
6+
import static org.mockito.Mockito.mock;
7+
8+
import org.junit.Test;
9+
import org.junit.experimental.runners.Enclosed;
10+
import org.junit.runner.RunWith;
11+
import org.mockito.InOrder;
12+
import org.mockito.Mock;
13+
import org.mockito.runners.MockitoJUnitRunner;
14+
15+
16+
@RunWith(Enclosed.class)
17+
public class ConditionTest {
18+
19+
@RunWith(MockitoJUnitRunner.class)
20+
public static abstract class AbstractConditionTest {
21+
22+
@Mock
23+
Object object;
24+
25+
Condition<Object> trueCondition = object -> true;
26+
Condition<Object> falseCondition = object -> false;
27+
28+
Condition<Object> mockCondition(boolean result) {
29+
Condition<Object> condition = mock(Condition.class);
30+
doReturn(result).when(condition).test(object);
31+
return condition;
32+
}
33+
34+
}
35+
36+
public static class Negate extends AbstractConditionTest {
37+
38+
@Test
39+
public void trueBecomesFalse() {
40+
Condition<Object> condition = object -> true;
41+
assertThat(condition.negate().test(object)).isFalse();
42+
}
43+
44+
@Test
45+
public void falseBecomesTrue() {
46+
Condition<Object> condition = object -> false;
47+
assertThat(condition.negate().test(object)).isTrue();
48+
}
49+
50+
}
51+
52+
public static class And extends AbstractConditionTest {
53+
54+
@Test
55+
public void trueAndTrueIsTrue() {
56+
assertThat(trueCondition.and(trueCondition).test(object)).isTrue();
57+
}
58+
59+
@Test
60+
public void trueAndFalseIsFalse() {
61+
assertThat(trueCondition.and(falseCondition).test(object)).isFalse();
62+
}
63+
64+
@Test
65+
public void falseAndTrueIsFalse() {
66+
assertThat(falseCondition.and(trueCondition).test(object)).isFalse();
67+
}
68+
69+
@Test
70+
public void falseAndFalseIsFalse() {
71+
assertThat(falseCondition.and(falseCondition).test(object)).isFalse();
72+
}
73+
74+
@Test
75+
public void allConditionsAreEvaluatedInOrder() {
76+
77+
Condition<Object> startCondition = object -> true;
78+
Condition<Object> condition1 = mockCondition(true);
79+
Condition<Object> condition2 = mockCondition(true);
80+
Condition<Object> condition3 = mockCondition(true);
81+
82+
startCondition.and(condition1).and(condition2).and(condition3).test(object);
83+
84+
InOrder inOrder = inOrder(condition1, condition2, condition3);
85+
inOrder.verify(condition1).test(object);
86+
inOrder.verify(condition2).test(object);
87+
inOrder.verify(condition3).test(object);
88+
inOrder.verifyNoMoreInteractions();
89+
90+
}
91+
92+
}
93+
94+
public static class Or extends AbstractConditionTest {
95+
96+
@Test
97+
public void trueOrTrueIsTrue() {
98+
assertThat(trueCondition.or(trueCondition).test(object)).isTrue();
99+
}
100+
101+
@Test
102+
public void trueOrFalseIsTrue() {
103+
assertThat(trueCondition.or(falseCondition).test(object)).isTrue();
104+
}
105+
106+
@Test
107+
public void falseOrTrueIsTrue() {
108+
assertThat(falseCondition.or(trueCondition).test(object)).isTrue();
109+
}
110+
111+
@Test
112+
public void falseOrFalseIsFalse() {
113+
assertThat(falseCondition.or(falseCondition).test(object)).isFalse();
114+
}
115+
116+
@Test
117+
public void allConditionsAreEvaluatedInOrder() {
118+
119+
Condition<Object> startCondition = object -> false;
120+
Condition<Object> condition1 = mockCondition(false);
121+
Condition<Object> condition2 = mockCondition(false);
122+
Condition<Object> condition3 = mockCondition(false);
123+
124+
startCondition.or(condition1).or(condition2).or(condition3).test(object);
125+
126+
InOrder inOrder = inOrder(condition1, condition2, condition3);
127+
inOrder.verify(condition1).test(object);
128+
inOrder.verify(condition2).test(object);
129+
inOrder.verify(condition3).test(object);
130+
inOrder.verifyNoMoreInteractions();
131+
132+
}
133+
134+
}
135+
136+
}

0 commit comments

Comments
 (0)