Skip to content

Commit 8b148e2

Browse files
committed
Implement Ternary
1 parent 45b88f3 commit 8b148e2

File tree

2 files changed

+34
-14
lines changed

2 files changed

+34
-14
lines changed

src/main/java/org/powerassert/PowerAssertProcessor.java

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,5 @@
11
package org.powerassert;
22

3-
import java.io.IOException;
4-
import java.util.Set;
5-
6-
import javax.annotation.processing.*;
7-
import javax.lang.model.SourceVersion;
8-
import javax.lang.model.element.Element;
9-
import javax.lang.model.element.TypeElement;
10-
113
import com.sun.source.tree.AssertTree;
124
import com.sun.source.util.TreePath;
135
import com.sun.source.util.TreePathScanner;
@@ -22,6 +14,13 @@
2214
import com.sun.tools.javac.util.List;
2315
import com.sun.tools.javac.util.Name;
2416

17+
import javax.annotation.processing.*;
18+
import javax.lang.model.SourceVersion;
19+
import javax.lang.model.element.Element;
20+
import javax.lang.model.element.TypeElement;
21+
import java.io.IOException;
22+
import java.util.Set;
23+
2524
@SupportedAnnotationTypes("*")
2625
public class PowerAssertProcessor extends AbstractProcessor {
2726
private Trees trees;
@@ -235,6 +234,17 @@ else if(expr instanceof JCTree.JCNewArray) {
235234
recordArgs(newArray.getInitializers(), expr)
236235
).setPos(newArray.pos);
237236
}
237+
else if(expr instanceof JCTree.JCConditional) {
238+
JCTree.JCConditional conditional = (JCTree.JCConditional) expr;
239+
return recordValue(
240+
treeMaker.Conditional(
241+
recordAllValues(conditional.getCondition(), expr),
242+
recordAllValues(conditional.getTrueExpression(), expr),
243+
recordAllValues(conditional.getFalseExpression(), expr)
244+
).setPos(conditional.pos),
245+
expr.pos
246+
);
247+
}
238248
return expr;
239249
}
240250

src/test/java/org/powerassert/PowerAssertProcessorTest.java

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,11 @@
11
package org.powerassert;
22

3-
import static org.assertj.core.api.Assertions.assertThat;
4-
import static org.assertj.core.api.Assertions.fail;
5-
63
import org.junit.Before;
7-
import org.junit.Ignore;
84
import org.junit.Test;
95

6+
import static org.assertj.core.api.Assertions.assertThat;
7+
import static org.assertj.core.api.Assertions.fail;
8+
109
public class PowerAssertProcessorTest {
1110
JavaCompilerHelper java;
1211

@@ -187,10 +186,21 @@ public void newArray() {
187186
" 1 1 false");
188187
}
189188

190-
@Ignore
191189
@Test
192190
public void ternary() {
193-
// TODO
191+
java.compile(
192+
"public class A {" +
193+
" @org.junit.Test public void test() {" +
194+
" boolean b = false;" +
195+
" boolean a = true;" +
196+
" assert \"a\".contains(\"b\") ? a : b;" + // extraordinarily contrived, I know...
197+
" }" +
198+
"}");
199+
200+
testFailsWithMessage("A", "test",
201+
"\"a\".contains(\"b\") ? a : b",
202+
" | | |",
203+
" false false false");
194204
}
195205

196206
@Test

0 commit comments

Comments
 (0)