Skip to content

Commit 3abef66

Browse files
Treiblesschorlectrueden
authored andcommitted
Add nullary computer + test
1 parent 74ae9fc commit 3abef66

3 files changed

Lines changed: 55 additions & 0 deletions

File tree

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package org.scijava.ops;
2+
3+
import java.util.function.Consumer;
4+
5+
@FunctionalInterface
6+
public interface NullaryComputer<O> extends Consumer<O> {
7+
void compute(O out);
8+
9+
@Override
10+
default void accept(O u) {
11+
compute(u);
12+
}
13+
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package org.scijava.ops.math;
2+
3+
import java.util.stream.IntStream;
4+
5+
import org.scijava.ops.NullaryComputer;
6+
import org.scijava.ops.Op;
7+
import org.scijava.param.Parameter;
8+
import org.scijava.plugin.Plugin;
9+
import org.scijava.struct.ItemIO;
10+
11+
public class Zero {
12+
13+
public interface MathZeroOp extends Op {
14+
}
15+
16+
// --------- Computers ---------
17+
18+
@Plugin(type = MathZeroOp.class)
19+
@Parameter(key = "resultArray", type = ItemIO.BOTH)
20+
public static class MathParallelPointwiseZeroDoubleArrayComputer implements MathZeroOp, NullaryComputer<double[]> {
21+
@Override
22+
public void compute(double[] out) {
23+
IntStream.range(0, out.length).parallel().forEach(i -> {
24+
out[i] = 0.0;
25+
});
26+
}
27+
}
28+
}

src/test/java/org/scijava/ops/OpsTest.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
import org.scijava.ops.math.Add.MathAddOp;
3838
import org.scijava.ops.math.Power.MathPowerOp;
3939
import org.scijava.ops.math.Sqrt.MathSqrtOp;
40+
import org.scijava.ops.math.Zero.MathZeroOp;
4041
import org.scijava.ops.types.Nil;
4142

4243
public class OpsTest extends AbstractTestEnvironment {
@@ -99,6 +100,19 @@ public void binaryFunction() {
99100
assert 86.0 == addFunction.apply(10.0, 76.0);
100101
}
101102

103+
@Test
104+
public void nullaryComputer() {
105+
NullaryComputer<double[]> sqrtComputer = ops().findOp( //
106+
MathZeroOp.class, new Nil<NullaryComputer<double[]>>() {
107+
}, //
108+
new Nil[] { nilDoubleArray }, //
109+
nilDoubleArray//
110+
);
111+
double[] result = new double[] { 1.2323, 13231.1232, 37373773};
112+
sqrtComputer.compute(result);
113+
assert arrayEquals(result, 0.0, 0.0, 0.0);
114+
}
115+
102116
@Test
103117
@SuppressWarnings("unchecked")
104118
public void unaryComputer() {

0 commit comments

Comments
 (0)