|
32 | 32 | package org.scijava.script; |
33 | 33 |
|
34 | 34 | import static org.junit.Assert.assertEquals; |
| 35 | +import static org.junit.Assert.assertSame; |
35 | 36 | import static org.junit.Assert.assertTrue; |
36 | 37 | import static org.junit.Assert.fail; |
37 | 38 |
|
|
53 | 54 | import org.junit.BeforeClass; |
54 | 55 | import org.junit.Test; |
55 | 56 | import org.scijava.Context; |
| 57 | +import org.scijava.ItemIO; |
| 58 | +import org.scijava.log.LogService; |
| 59 | +import org.scijava.module.ModuleItem; |
56 | 60 | import org.scijava.plugin.Plugin; |
57 | 61 | import org.scijava.test.TestUtils; |
58 | 62 | import org.scijava.util.DigestUtils; |
@@ -125,6 +129,75 @@ public void testVersion() throws IOException { |
125 | 129 | FileUtils.deleteRecursively(tmpDir); |
126 | 130 | } |
127 | 131 |
|
| 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 | + |
128 | 201 | /** |
129 | 202 | * Ensures the ScriptInfos Reader can be reused for multiple executions of the |
130 | 203 | * script. |
|
0 commit comments