Skip to content

Commit a45b057

Browse files
committed
ScriptInfoTest: add test for script param parsing
It is just a few down-the-middle tests right now. But much better than before, which was practically nothing.
1 parent 233c1b2 commit a45b057

File tree

1 file changed

+73
-0
lines changed

1 file changed

+73
-0
lines changed

src/test/java/org/scijava/script/ScriptInfoTest.java

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
package org.scijava.script;
3333

3434
import static org.junit.Assert.assertEquals;
35+
import static org.junit.Assert.assertSame;
3536
import static org.junit.Assert.assertTrue;
3637
import static org.junit.Assert.fail;
3738

@@ -53,6 +54,9 @@
5354
import org.junit.BeforeClass;
5455
import org.junit.Test;
5556
import org.scijava.Context;
57+
import org.scijava.ItemIO;
58+
import org.scijava.log.LogService;
59+
import org.scijava.module.ModuleItem;
5660
import org.scijava.plugin.Plugin;
5761
import org.scijava.test.TestUtils;
5862
import org.scijava.util.DigestUtils;
@@ -125,6 +129,75 @@ public void testVersion() throws IOException {
125129
FileUtils.deleteRecursively(tmpDir);
126130
}
127131

132+
/**
133+
* Tests {@link ScriptInfo} parameter declarations, including
134+
* {@link ScriptInfo#inputs()}, {@link ScriptInfo#outputs()},
135+
* {@link ScriptInfo#getInput(String)} and
136+
* {@link ScriptInfo#getOutput(String)}.
137+
*/
138+
@Test
139+
public void testParameters() {
140+
final String script = "" + //
141+
"% @LogService(required = false) log\n" + //
142+
"% @int(label=\"Slider Value\", softMin=5, softMax=15, " + //
143+
"stepSize=3, value=11, style=\"slider\") sliderValue\n" + //
144+
"% @BOTH java.lang.StringBuilder buffer";
145+
146+
final ScriptInfo info =
147+
new ScriptInfo(context, "params.bsizes", new StringReader(script));
148+
149+
final ModuleItem<?> log = info.getInput("log");
150+
assertItem("log", LogService.class, null, ItemIO.INPUT, false, true, null,
151+
null, null, null, null, null, null, null, log);
152+
153+
final ModuleItem<?> sliderValue = info.getInput("sliderValue");
154+
assertItem("sliderValue", int.class, "Slider Value", ItemIO.INPUT, true,
155+
true, null, "slider", 11, null, null, 5, 15, 3, sliderValue);
156+
157+
final ModuleItem<?> buffer = info.getOutput("buffer");
158+
assertItem("buffer", StringBuilder.class, null, ItemIO.BOTH, true, true,
159+
null, null, null, null, null, null, null, null, buffer);
160+
161+
final ModuleItem<?> result = info.getOutput("result");
162+
assertItem("result", Object.class, null, ItemIO.OUTPUT, true, true, null,
163+
null, null, null, null, null, null, null, result);
164+
165+
int inputCount = 0;
166+
final ModuleItem<?>[] inputs = { log, sliderValue, buffer };
167+
for (final ModuleItem<?> inItem : info.inputs()) {
168+
assertSame(inputs[inputCount++], inItem);
169+
}
170+
171+
int outputCount = 0;
172+
final ModuleItem<?>[] outputs = { buffer, result };
173+
for (final ModuleItem<?> outItem : info.outputs()) {
174+
assertSame(outputs[outputCount++], outItem);
175+
}
176+
}
177+
178+
private void assertItem(final String name, final Class<?> type,
179+
final String label, final ItemIO ioType, final boolean required,
180+
final boolean persist, final String persistKey, final String style,
181+
final Object value, final Object min, final Object max,
182+
final Object softMin, final Object softMax, final Number stepSize,
183+
final ModuleItem<?> item)
184+
{
185+
assertEquals(name, item.getName());
186+
assertSame(type, item.getType());
187+
assertEquals(label, item.getLabel());
188+
assertSame(ioType, item.getIOType());
189+
assertEquals(required, item.isRequired());
190+
assertEquals(persist, item.isPersisted());
191+
assertEquals(persistKey, item.getPersistKey());
192+
assertEquals(style, item.getWidgetStyle());
193+
assertEquals(value, item.getDefaultValue());
194+
assertEquals(min, item.getMinimumValue());
195+
assertEquals(max, item.getMaximumValue());
196+
assertEquals(softMin, item.getSoftMinimum());
197+
assertEquals(softMax, item.getSoftMaximum());
198+
// assertEquals(stepSize, item.getStepSize());
199+
}
200+
128201
/**
129202
* Ensures the ScriptInfos Reader can be reused for multiple executions of the
130203
* script.

0 commit comments

Comments
 (0)