Skip to content

Commit 7fd5fa8

Browse files
committed
move some stuff into separate class for better unit testing
1 parent 9c440d5 commit 7fd5fa8

File tree

2 files changed

+98
-99
lines changed

2 files changed

+98
-99
lines changed

src/test/java/org/htmlunit/junit/BrowserStatement.java

Lines changed: 2 additions & 99 deletions
Original file line numberDiff line numberDiff line change
@@ -14,15 +14,9 @@
1414
*/
1515
package org.htmlunit.junit;
1616

17-
import static org.junit.Assert.assertFalse;
18-
19-
import java.util.Arrays;
20-
2117
import org.htmlunit.BrowserVersion;
2218
import org.htmlunit.WebDriverTestCase;
23-
import org.htmlunit.junit.annotation.Alerts;
24-
import org.htmlunit.junit.annotation.AlertsStandards;
25-
import org.htmlunit.junit.annotation.HtmlUnitNYI;
19+
import org.htmlunit.junit.annotation.AnnotationUtils;
2620
import org.junit.runners.model.FrameworkMethod;
2721
import org.junit.runners.model.Statement;
2822

@@ -75,98 +69,7 @@ public void evaluate() throws Throwable {
7569
}
7670
}
7771
}
78-
assertAlerts();
79-
}
80-
81-
private void assertAlerts() {
82-
final Alerts alerts = method_.getAnnotation(Alerts.class);
83-
if (alerts != null) {
84-
if (!BrowserVersionClassRunner.isDefined(alerts.value())) {
85-
assertFalse("Obsolete DEFAULT because all browser expectations are defined individually",
86-
BrowserVersionClassRunner.isDefined(alerts.DEFAULT())
87-
&& BrowserVersionClassRunner.isDefined(alerts.CHROME())
88-
&& BrowserVersionClassRunner.isDefined(alerts.FF())
89-
&& BrowserVersionClassRunner.isDefined(alerts.FF_ESR())
90-
&& BrowserVersionClassRunner.isDefined(alerts.EDGE()));
91-
92-
assertFalse("Obsolete DEFAULT because all browser expectations are defined individually",
93-
BrowserVersionClassRunner.isDefined(alerts.DEFAULT())
94-
&& BrowserVersionClassRunner.isDefined(alerts.CHROME())
95-
&& BrowserVersionClassRunner.isDefined(alerts.FF())
96-
&& BrowserVersionClassRunner.isDefined(alerts.FF_ESR())
97-
&& BrowserVersionClassRunner.isDefined(alerts.EDGE()));
98-
99-
assertNotEquals(BrowserVersion.EDGE, alerts.EDGE(), alerts.DEFAULT());
100-
assertNotEquals(BrowserVersion.CHROME, alerts.CHROME(), alerts.DEFAULT());
101-
assertNotEquals(BrowserVersion.FIREFOX, alerts.FF(), alerts.DEFAULT());
102-
assertNotEquals(BrowserVersion.FIREFOX_ESR, alerts.FF_ESR(), alerts.DEFAULT());
103-
}
104-
105-
final HtmlUnitNYI nyiAlerts = method_.getAnnotation(HtmlUnitNYI.class);
106-
if (nyiAlerts != null) {
107-
if (BrowserVersionClassRunner.isDefined(alerts.CHROME())
108-
&& BrowserVersionClassRunner.isDefined(nyiAlerts.CHROME())) {
109-
assertNotEquals(BrowserVersion.CHROME, alerts.CHROME(), nyiAlerts.CHROME());
110-
}
111-
else if (BrowserVersionClassRunner.isDefined(alerts.DEFAULT())
112-
&& BrowserVersionClassRunner.isDefined(nyiAlerts.CHROME())) {
113-
assertNotEquals(BrowserVersion.CHROME, alerts.DEFAULT(), nyiAlerts.CHROME());
114-
}
115-
116-
if (BrowserVersionClassRunner.isDefined(alerts.FF_ESR())
117-
&& BrowserVersionClassRunner.isDefined(nyiAlerts.FF_ESR())) {
118-
assertNotEquals(BrowserVersion.FIREFOX_ESR, alerts.FF_ESR(), nyiAlerts.FF_ESR());
119-
}
120-
else if (BrowserVersionClassRunner.isDefined(alerts.DEFAULT())
121-
&& BrowserVersionClassRunner.isDefined(nyiAlerts.FF_ESR())) {
122-
assertNotEquals(BrowserVersion.FIREFOX_ESR, alerts.DEFAULT(), nyiAlerts.FF_ESR());
123-
}
124-
125-
if (BrowserVersionClassRunner.isDefined(alerts.FF())
126-
&& BrowserVersionClassRunner.isDefined(nyiAlerts.FF())) {
127-
assertNotEquals(BrowserVersion.FIREFOX, alerts.FF(), nyiAlerts.FF());
128-
}
129-
else if (BrowserVersionClassRunner.isDefined(alerts.DEFAULT())
130-
&& BrowserVersionClassRunner.isDefined(nyiAlerts.FF())) {
131-
assertNotEquals(BrowserVersion.FIREFOX, alerts.DEFAULT(), nyiAlerts.FF());
132-
}
133-
134-
if (BrowserVersionClassRunner.isDefined(alerts.EDGE())
135-
&& BrowserVersionClassRunner.isDefined(nyiAlerts.EDGE())) {
136-
assertNotEquals(BrowserVersion.EDGE, alerts.EDGE(), nyiAlerts.EDGE());
137-
}
138-
else if (BrowserVersionClassRunner.isDefined(alerts.DEFAULT())
139-
&& BrowserVersionClassRunner.isDefined(nyiAlerts.EDGE())) {
140-
assertNotEquals(BrowserVersion.EDGE, alerts.DEFAULT(), nyiAlerts.EDGE());
141-
}
142-
}
143-
}
144-
145-
final AlertsStandards alerts2 = method_.getAnnotation(AlertsStandards.class);
146-
if (alerts2 != null) {
147-
if (!BrowserVersionClassRunner.isDefined(alerts2.value())) {
148-
assertFalse("Obsolete DEFAULT because all browser expectations are defined individually",
149-
BrowserVersionClassRunner.isDefined(alerts2.DEFAULT())
150-
&& BrowserVersionClassRunner.isDefined(alerts2.CHROME())
151-
&& BrowserVersionClassRunner.isDefined(alerts2.FF())
152-
&& BrowserVersionClassRunner.isDefined(alerts2.FF_ESR())
153-
&& BrowserVersionClassRunner.isDefined(alerts2.EDGE()));
154-
155-
assertNotEquals(BrowserVersion.EDGE, alerts2.EDGE(), alerts2.DEFAULT());
156-
assertNotEquals(BrowserVersion.CHROME, alerts2.CHROME(), alerts2.DEFAULT());
157-
assertNotEquals(BrowserVersion.FIREFOX, alerts2.FF(), alerts2.DEFAULT());
158-
assertNotEquals(BrowserVersion.FIREFOX_ESR, alerts2.FF_ESR(), alerts2.DEFAULT());
159-
}
160-
}
161-
}
162-
163-
private void assertNotEquals(final BrowserVersion browser, final String[] value1, final String[] value2) {
164-
if (value1.length != 0 && !BrowserRunner.EMPTY_DEFAULT.equals(value1[0])
165-
&& value1.length == value2.length
166-
&& Arrays.asList(value1).toString().equals(Arrays.asList(value2).toString())) {
167-
throw new AssertionError("Redundant alert for " + browser.getNickname() + " in "
168-
+ method_.getDeclaringClass().getSimpleName() + '.' + method_.getName() + "()");
169-
}
72+
AnnotationUtils.assertAlerts(method_.getMethod());
17073
}
17174

17275
public void evaluateSolo() throws Throwable {

src/test/java/org/htmlunit/junit/annotation/AnnotationUtils.java

Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,19 @@
1414
*/
1515
package org.htmlunit.junit.annotation;
1616

17+
import static org.junit.Assert.assertFalse;
18+
1719
import java.lang.reflect.Method;
20+
import java.util.Arrays;
21+
22+
import org.htmlunit.BrowserVersion;
23+
import org.htmlunit.junit.BrowserRunner;
24+
import org.htmlunit.junit.BrowserVersionClassRunner;
1825

1926
/**
2027
* Utility functions for working with our annotations.
2128
*
29+
* @author Ahmed Ashour
2230
* @author Ronald Brill
2331
*/
2432
public final class AnnotationUtils {
@@ -36,6 +44,94 @@ private AnnotationUtils() {
3644
* @param method the method to validate
3745
*/
3846
public static void assertAlerts(final Method method) {
47+
final Alerts alerts = method.getAnnotation(Alerts.class);
48+
if (alerts != null) {
49+
if (!BrowserVersionClassRunner.isDefined(alerts.value())) {
50+
assertFalse("Obsolete DEFAULT because all browser expectations are defined individually",
51+
BrowserVersionClassRunner.isDefined(alerts.DEFAULT())
52+
&& BrowserVersionClassRunner.isDefined(alerts.CHROME())
53+
&& BrowserVersionClassRunner.isDefined(alerts.FF())
54+
&& BrowserVersionClassRunner.isDefined(alerts.FF_ESR())
55+
&& BrowserVersionClassRunner.isDefined(alerts.EDGE()));
56+
57+
assertFalse("Obsolete DEFAULT because all browser expectations are defined individually",
58+
BrowserVersionClassRunner.isDefined(alerts.DEFAULT())
59+
&& BrowserVersionClassRunner.isDefined(alerts.CHROME())
60+
&& BrowserVersionClassRunner.isDefined(alerts.FF())
61+
&& BrowserVersionClassRunner.isDefined(alerts.FF_ESR())
62+
&& BrowserVersionClassRunner.isDefined(alerts.EDGE()));
63+
64+
assertNotEquals(method, BrowserVersion.EDGE, alerts.EDGE(), alerts.DEFAULT());
65+
assertNotEquals(method, BrowserVersion.CHROME, alerts.CHROME(), alerts.DEFAULT());
66+
assertNotEquals(method, BrowserVersion.FIREFOX, alerts.FF(), alerts.DEFAULT());
67+
assertNotEquals(method, BrowserVersion.FIREFOX_ESR, alerts.FF_ESR(), alerts.DEFAULT());
68+
}
69+
70+
final HtmlUnitNYI nyiAlerts = method.getAnnotation(HtmlUnitNYI.class);
71+
if (nyiAlerts != null) {
72+
if (BrowserVersionClassRunner.isDefined(alerts.CHROME())
73+
&& BrowserVersionClassRunner.isDefined(nyiAlerts.CHROME())) {
74+
assertNotEquals(method, BrowserVersion.CHROME, alerts.CHROME(), nyiAlerts.CHROME());
75+
}
76+
else if (BrowserVersionClassRunner.isDefined(alerts.DEFAULT())
77+
&& BrowserVersionClassRunner.isDefined(nyiAlerts.CHROME())) {
78+
assertNotEquals(method, BrowserVersion.CHROME, alerts.DEFAULT(), nyiAlerts.CHROME());
79+
}
80+
81+
if (BrowserVersionClassRunner.isDefined(alerts.FF_ESR())
82+
&& BrowserVersionClassRunner.isDefined(nyiAlerts.FF_ESR())) {
83+
assertNotEquals(method, BrowserVersion.FIREFOX_ESR, alerts.FF_ESR(), nyiAlerts.FF_ESR());
84+
}
85+
else if (BrowserVersionClassRunner.isDefined(alerts.DEFAULT())
86+
&& BrowserVersionClassRunner.isDefined(nyiAlerts.FF_ESR())) {
87+
assertNotEquals(method, BrowserVersion.FIREFOX_ESR, alerts.DEFAULT(), nyiAlerts.FF_ESR());
88+
}
89+
90+
if (BrowserVersionClassRunner.isDefined(alerts.FF())
91+
&& BrowserVersionClassRunner.isDefined(nyiAlerts.FF())) {
92+
assertNotEquals(method, BrowserVersion.FIREFOX, alerts.FF(), nyiAlerts.FF());
93+
}
94+
else if (BrowserVersionClassRunner.isDefined(alerts.DEFAULT())
95+
&& BrowserVersionClassRunner.isDefined(nyiAlerts.FF())) {
96+
assertNotEquals(method, BrowserVersion.FIREFOX, alerts.DEFAULT(), nyiAlerts.FF());
97+
}
98+
99+
if (BrowserVersionClassRunner.isDefined(alerts.EDGE())
100+
&& BrowserVersionClassRunner.isDefined(nyiAlerts.EDGE())) {
101+
assertNotEquals(method, BrowserVersion.EDGE, alerts.EDGE(), nyiAlerts.EDGE());
102+
}
103+
else if (BrowserVersionClassRunner.isDefined(alerts.DEFAULT())
104+
&& BrowserVersionClassRunner.isDefined(nyiAlerts.EDGE())) {
105+
assertNotEquals(method, BrowserVersion.EDGE, alerts.DEFAULT(), nyiAlerts.EDGE());
106+
}
107+
}
108+
}
109+
110+
final AlertsStandards alerts2 = method.getAnnotation(AlertsStandards.class);
111+
if (alerts2 != null) {
112+
if (!BrowserVersionClassRunner.isDefined(alerts2.value())) {
113+
assertFalse("Obsolete DEFAULT because all browser expectations are defined individually",
114+
BrowserVersionClassRunner.isDefined(alerts2.DEFAULT())
115+
&& BrowserVersionClassRunner.isDefined(alerts2.CHROME())
116+
&& BrowserVersionClassRunner.isDefined(alerts2.FF())
117+
&& BrowserVersionClassRunner.isDefined(alerts2.FF_ESR())
118+
&& BrowserVersionClassRunner.isDefined(alerts2.EDGE()));
119+
120+
assertNotEquals(method, BrowserVersion.EDGE, alerts2.EDGE(), alerts2.DEFAULT());
121+
assertNotEquals(method, BrowserVersion.CHROME, alerts2.CHROME(), alerts2.DEFAULT());
122+
assertNotEquals(method, BrowserVersion.FIREFOX, alerts2.FF(), alerts2.DEFAULT());
123+
assertNotEquals(method, BrowserVersion.FIREFOX_ESR, alerts2.FF_ESR(), alerts2.DEFAULT());
124+
}
125+
}
126+
}
39127

128+
private static void assertNotEquals(final Method method, final BrowserVersion browser,
129+
final String[] value1, final String[] value2) {
130+
if (value1.length != 0 && !BrowserRunner.EMPTY_DEFAULT.equals(value1[0])
131+
&& value1.length == value2.length
132+
&& Arrays.asList(value1).toString().equals(Arrays.asList(value2).toString())) {
133+
throw new AssertionError("Redundant alert for " + browser.getNickname() + " in "
134+
+ method.getDeclaringClass().getSimpleName() + '.' + method.getName() + "()");
135+
}
40136
}
41137
}

0 commit comments

Comments
 (0)