Skip to content

Commit 0d08a00

Browse files
committed
Update OpAdaptationInfo.toString()
Much easier to read now!
1 parent 392e2c5 commit 0d08a00

File tree

4 files changed

+63
-20
lines changed

4 files changed

+63
-20
lines changed

scijava-ops-api/src/main/java/org/scijava/ops/api/InfoTree.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,8 @@ public class InfoTree {
6161
public static final Character DEP_START_DELIM = '{';
6262
public static final Character DEP_END_DELIM = '}';
6363

64+
public static final String DEPENDENCY_DELIM = "\n\tDepends upon: ";
65+
6466
private final List<InfoTree> dependencies;
6567
private String id;
6668

@@ -136,4 +138,13 @@ private synchronized void generateSignature() {
136138
id = s.concat(String.valueOf(DEP_END_DELIM));
137139
}
138140

141+
@Override
142+
public String toString() {
143+
StringBuilder sb = new StringBuilder(info().implementationName());
144+
for (var dep: dependencies()) {
145+
sb.append(DEPENDENCY_DELIM).append(dep.toString().replace("\n", "\n\t"));
146+
}
147+
return sb.toString();
148+
}
149+
139150
}

scijava-ops-engine/src/main/java/org/scijava/ops/engine/matcher/adapt/OpAdaptationInfo.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -172,6 +172,16 @@ public String id() {
172172

173173
@Override
174174
public String toString() {
175-
return Infos.describeVerbose(this);
175+
// Get the original description
176+
String description = Infos.describeVerbose(this);
177+
// Make the name friendlier
178+
StringBuilder sb = new StringBuilder();
179+
sb.append(srcInfo.implementationName());
180+
sb.append("\n\tAdaptor: ");
181+
sb.append(adaptorChain.toString().replace("\n", "\n\t"));
182+
183+
int nameBreak = description.indexOf('\n');
184+
sb.append(description.substring(nameBreak));
185+
return sb.toString();
176186
}
177187
}

scijava-ops-engine/src/test/java/org/scijava/ops/engine/InfoTreeTest.java

Lines changed: 38 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -52,10 +52,26 @@
5252
*/
5353
public class InfoTreeTest extends AbstractTestEnvironment implements OpCollection {
5454

55+
private static InfoTree simpleTree;
56+
57+
private static InfoTree complexTree;
58+
5559
@BeforeAll
56-
public static void addNeededOps() {
60+
public static void additionalSetup() {
61+
// add needed ops
5762
ops.register(new InfoTreeTest());
5863
ops.register(new ComplexOp());
64+
65+
// get simple InfoTree
66+
OpInfo info = singularInfoOfName("test.infoTree");
67+
simpleTree = new InfoTree(info);
68+
69+
// get dependent InfoTree
70+
OpInfo complexInfo = singularInfoOfName("test.infoTreeBase");
71+
complexTree = new InfoTree( //
72+
complexInfo, //
73+
Collections.singletonList(simpleTree) //
74+
);
5975
}
6076

6177
public static final String S = "this Op is cool";
@@ -65,30 +81,34 @@ public static void addNeededOps() {
6581

6682
@Test
6783
public void testInfoChainInstantiation() {
68-
OpInfo info = singularInfoOfName("test.infoTree");
69-
InfoTree tree = new InfoTree(info);
7084
Nil<Producer<String>> nil = new Nil<>() {};
71-
Producer<String> op = ops.opFromInfoChain(tree, nil);
85+
Producer<String> op = ops.opFromInfoChain(simpleTree, nil);
7286
Assertions.assertEquals(S, op.create());
73-
}
7487

75-
@Test
76-
public void testInfoChainWithDependenciesInstantiation() {
7788
// Find dependency
78-
OpInfo info = singularInfoOfName("test.infoTree");
79-
InfoTree dependencyChain = new InfoTree(info);
80-
81-
// Find dependent Op
82-
OpInfo baseInfo = singularInfoOfName("test.infoTreeBase");
83-
InfoTree tree = new InfoTree(baseInfo, Collections.singletonList(
84-
dependencyChain));
85-
86-
Nil<Producer<String>> nil = new Nil<>() {};
87-
Producer<String> op = ops.opFromInfoChain(tree, nil);
89+
nil = new Nil<>() {};
90+
op = ops.opFromInfoChain(complexTree, nil);
8891
Assertions.assertEquals(S, op.create());
8992
}
9093

91-
private OpInfo singularInfoOfName(String name) {
94+
@Test
95+
public void testInfoChainToString() {
96+
Assertions.assertEquals( //
97+
simpleTree.info().implementationName(), //
98+
simpleTree.toString() //
99+
);
100+
101+
StringBuilder sb = new StringBuilder();
102+
sb.append(complexTree.info().implementationName());
103+
sb.append(InfoTree.DEPENDENCY_DELIM);
104+
sb.append(complexTree.dependencies().get(0).info().implementationName());
105+
Assertions.assertEquals( //
106+
sb.toString(), //
107+
complexTree.toString() //
108+
);
109+
}
110+
111+
private static OpInfo singularInfoOfName(String name) {
92112
Iterator<OpInfo> infos = ops.infos(name).iterator();
93113
Assertions.assertTrue(infos.hasNext());
94114
OpInfo info = infos.next();

scijava-ops-engine/src/test/java/org/scijava/ops/engine/matcher/adapt/OpAdaptationInfoTest.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,9 @@ public void testAdaptedDescription() {
7575
.inType(Double.class, Double.class) //
7676
.outType(double[].class) //
7777
.computer();
78-
String expected = "org.scijava.ops.engine.matcher.adapt.OpAdaptationInfoTest.adaptableOp(java.lang.Double,java.lang.Double)|Adaptor:|Info:org.scijava.ops.engine.adapt.functional.FunctionsToComputers$Function2ToComputer2@0-SNAPSHOT{|Info:org.scijava.ops.engine.copy.CopyOpCollection$copyDoubleArray@0-SNAPSHOT{}}\n\t" //
78+
String expected = "org.scijava.ops.engine.matcher.adapt.OpAdaptationInfoTest.adaptableOp(java.lang.Double,java.lang.Double)\n\t" +
79+
"Adaptor: org.scijava.ops.engine.adapt.functional.FunctionsToComputers$Function2ToComputer2\n\t\t" +
80+
"Depends upon: org.scijava.ops.engine.copy.CopyOpCollection$copyDoubleArray\n\t" //
7981
+ "> input1 : java.lang.Double\n\t" //
8082
+ "> input2 : java.lang.Double\n\t" //
8183
+ "> output1 : @CONTAINER double[]";

0 commit comments

Comments
 (0)