diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml
index 153b8279..c6cb5e2d 100644
--- a/.github/workflows/ci.yaml
+++ b/.github/workflows/ci.yaml
@@ -8,7 +8,7 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
- java: [ '11' ]
+ java: [ '17' ]
name: Java ${{ matrix.java }} compile
steps:
- uses: actions/checkout@v2
diff --git a/org.eclipse.january.test/META-INF/MANIFEST.MF b/org.eclipse.january.test/META-INF/MANIFEST.MF
index 240a1a37..dd803777 100644
--- a/org.eclipse.january.test/META-INF/MANIFEST.MF
+++ b/org.eclipse.january.test/META-INF/MANIFEST.MF
@@ -5,7 +5,7 @@ Bundle-SymbolicName: org.eclipse.january.test
Bundle-Version: 2.3.3.qualifier
Fragment-Host: org.eclipse.january;bundle-version="2.3.3"
Bundle-RequiredExecutionEnvironment: JavaSE-1.7
-Require-Bundle: org.junit;bundle-version="[4.12.0,5.0.0)",
+Require-Bundle: org.junit;bundle-version="[4.13.0,5.0.0)",
org.eclipse.january.asserts;bundle-version="2.3.2"
Bundle-Vendor: Eclipse January
Automatic-Module-Name: org.eclipse.january.test
diff --git a/org.eclipse.january.test/src/org/eclipse/january/dataset/AbstractDatasetTest.java b/org.eclipse.january.test/src/org/eclipse/january/dataset/AbstractDatasetTest.java
index b4445a06..6cd73261 100644
--- a/org.eclipse.january.test/src/org/eclipse/january/dataset/AbstractDatasetTest.java
+++ b/org.eclipse.january.test/src/org/eclipse/january/dataset/AbstractDatasetTest.java
@@ -13,8 +13,8 @@
import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertThrows;
import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
@@ -31,6 +31,7 @@
import org.eclipse.january.metadata.StatisticsMetadata;
import org.junit.Assert;
import org.junit.Test;
+import org.junit.function.ThrowingRunnable;
public class AbstractDatasetTest {
@Test
@@ -426,9 +427,7 @@ public void testSqueeze() {
ds.setShape(2,1,5);
ds.squeeze();
- assertEquals(2, ds.getShapeRef().length);
- assertEquals(2, ds.getShapeRef()[0]);
- assertEquals(5, ds.getShapeRef()[1]);
+ assertArrayEquals(new int[] {2, 5}, ds.getShapeRef());
int[] os, ns;
os = new int[] { 1, 1 };
@@ -439,47 +438,27 @@ public void testSqueeze() {
os = new int[] { 2, 1, 5 };
ns = ShapeUtils.squeezeShape(os, false);
- assertEquals(2, ns.length);
- assertEquals(2, ns[0]);
- assertEquals(5, ns[1]);
+ assertArrayEquals(new int[] {2, 5}, ns);
ns = ShapeUtils.squeezeShape(os, true);
- assertEquals(3, ns.length);
- assertEquals(2, ns[0]);
- assertEquals(1, ns[1]);
- assertEquals(5, ns[2]);
+ assertArrayEquals(new int[] {2, 1, 5}, ns);
os = new int[] { 2, 1, 5, 1 };
ns = ShapeUtils.squeezeShape(os, false);
- assertEquals(2, ns.length);
- assertEquals(2, ns[0]);
- assertEquals(5, ns[1]);
+ assertArrayEquals(new int[] {2, 5}, ns);
ns = ShapeUtils.squeezeShape(os, true);
- assertEquals(3, ns.length);
- assertEquals(2, ns[0]);
- assertEquals(1, ns[1]);
- assertEquals(5, ns[2]);
+ assertArrayEquals(new int[] {2, 1, 5}, ns);
os = new int[] { 1, 2, 1, 5 };
ns = ShapeUtils.squeezeShape(os, false);
- assertEquals(2, ns.length);
- assertEquals(2, ns[0]);
- assertEquals(5, ns[1]);
+ assertArrayEquals(new int[] {2, 5}, ns);
ns = ShapeUtils.squeezeShape(os, true);
- assertEquals(3, ns.length);
- assertEquals(2, ns[0]);
- assertEquals(1, ns[1]);
- assertEquals(5, ns[2]);
+ assertArrayEquals(new int[] {2, 1, 5}, ns);
os = new int[] { 1, 2, 1, 5, 1 };
ns = ShapeUtils.squeezeShape(os, false);
- assertEquals(2, ns.length);
- assertEquals(2, ns[0]);
- assertEquals(5, ns[1]);
+ assertArrayEquals(new int[] {2, 5}, ns);
ns = ShapeUtils.squeezeShape(os, true);
- assertEquals(3, ns.length);
- assertEquals(2, ns[0]);
- assertEquals(1, ns[1]);
- assertEquals(5, ns[2]);
+ assertArrayEquals(new int[] {2, 1, 5}, ns);
}
/**
@@ -493,26 +472,21 @@ public void testTile() {
Dataset ta = DatasetUtils.tile(ds, 2);
double[] xa = { 0., 1., 2., 0., 1., 2. };
- assertEquals(1, ta.getShapeRef().length);
- assertEquals(6, ta.getShapeRef()[0]);
+ assertArrayEquals(new int[] {6}, ta.getShapeRef());
for (int i = 0; i < xa.length; i++) {
assertEquals(xa[i], ((DoubleDataset) ta).getData()[i], 1e-6);
}
Dataset tb = DatasetUtils.tile(ds, 1, 2);
- assertEquals(2, tb.getShapeRef().length);
- assertEquals(1, tb.getShapeRef()[0]);
- assertEquals(6, tb.getShapeRef()[1]);
+ assertArrayEquals(new int[] {1, 6}, tb.getShapeRef());
for (int i = 0; i < xa.length; i++) {
assertEquals(xa[i], ((DoubleDataset) tb).getData()[i], 1e-6);
}
Dataset tc = DatasetUtils.tile(ds, 2, 1);
- assertEquals(2, tc.getShapeRef().length);
- assertEquals(2, tc.getShapeRef()[0]);
- assertEquals(3, tc.getShapeRef()[1]);
+ assertArrayEquals(new int[] {2, 3}, tc.getShapeRef());
for (int i = 0; i < xa.length; i++) {
assertEquals(xa[i], ((DoubleDataset) tc).getData()[i], 1e-6);
}
@@ -523,18 +497,14 @@ public void testTile() {
Dataset td = DatasetUtils.tile(ds, 2);
double[] xd = { 0., 1., 2., 0., 1., 2., 3., 4., 5., 3., 4., 5. };
- assertEquals(2, td.getShapeRef().length);
- assertEquals(2, td.getShapeRef()[0]);
- assertEquals(6, td.getShapeRef()[1]);
+ assertArrayEquals(new int[] {2, 6}, td.getShapeRef());
for (int i = 0; i < xd.length; i++) {
assertEquals(xd[i], ((DoubleDataset) td).getData()[i], 1e-6);
}
Dataset te = DatasetUtils.tile(ds, 1, 2);
- assertEquals(2, te.getShapeRef().length);
- assertEquals(2, te.getShapeRef()[0]);
- assertEquals(6, te.getShapeRef()[1]);
+ assertArrayEquals(new int[] {2, 6}, te.getShapeRef());
for (int i = 0; i < xd.length; i++) {
assertEquals(xd[i], ((DoubleDataset) te).getData()[i], 1e-6);
}
@@ -542,9 +512,7 @@ public void testTile() {
Dataset tf = DatasetUtils.tile(ds, 2, 1);
double[] xf = { 0., 1., 2., 3., 4., 5., 0., 1., 2., 3., 4., 5. };
- assertEquals(2, tf.getShapeRef().length);
- assertEquals(4, tf.getShapeRef()[0]);
- assertEquals(3, tf.getShapeRef()[1]);
+ assertArrayEquals(new int[] {4, 3}, tf.getShapeRef());
for (int i = 0; i < xf.length; i++) {
assertEquals(xf[i], ((DoubleDataset) tf).getData()[i], 1e-6);
}
@@ -624,9 +592,7 @@ public void testTranspose() {
Dataset ta = DatasetUtils.transpose(ds, 1, 0);
double[][] xa = { { 0., 1., 2. }, { 3., 4., 5. } };
- assertEquals(2, ta.getShapeRef().length);
- assertEquals(3, ta.getShapeRef()[0]);
- assertEquals(2, ta.getShapeRef()[1]);
+ assertArrayEquals(new int[] {3, 2}, ta.getShapeRef());
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 3; j++) {
assertEquals(xa[i][j], ta.getDouble(j, i), 1e-6);
@@ -647,37 +613,30 @@ public void testTranspose() {
double[][][] xb = { {{ 0., 1., 2., 3.}, {4., 5., 6., 7.}, {8., 9., 10., 11. }},
{{12., 13., 14., 15.}, {16., 17., 18., 19.}, {20., 21., 22., 23.}} };
- Dataset tb;
-
- try {
- tb = DatasetUtils.transpose(ds, 0);
- } catch (IllegalArgumentException e) {
- // this is correct.
- } catch (Exception e) {
- fail("wrong exception type passed from incorrect arguments being passed to the constructor");
- }
+ final Dataset df = ds;
+ assertThrows(IllegalArgumentException.class, new ThrowingRunnable() {
+ @Override
+ public void run() {
+ DatasetUtils.transpose(df, 0);
+ }
+ });
- try {
- tb = DatasetUtils.transpose(ds, 0, -1, 0);
- } catch (IllegalArgumentException e) {
- // this is correct.
- } catch (Exception e) {
- fail("wrong exception type passed from incorrect arguments being passed to the constructor");
- }
+ assertThrows(IllegalArgumentException.class, new ThrowingRunnable() {
+ @Override
+ public void run() {
+ DatasetUtils.transpose(df, 0, -1, 0);
+ }
+ });
- try {
- tb = DatasetUtils.transpose(ds, 0, 1, 1);
- } catch (IllegalArgumentException e) {
- // this is correct.
- } catch (Exception e) {
- fail("wrong exception type passed from incorrect arguments being passed to the constructor");
- }
+ assertThrows(IllegalArgumentException.class, new ThrowingRunnable() {
+ @Override
+ public void run() {
+ DatasetUtils.transpose(df, 0, 1, 1);
+ }
+ });
- tb = DatasetUtils.transpose(ds, 0, 1, 2);
- assertEquals(3, tb.getShapeRef().length);
- assertEquals(2, tb.getShapeRef()[0]);
- assertEquals(3, tb.getShapeRef()[1]);
- assertEquals(4, tb.getShapeRef()[2]);
+ Dataset tb = DatasetUtils.transpose(ds, 0, 1, 2);
+ assertArrayEquals(new int[] {2, 3, 4}, tb.getShapeRef());
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 3; j++) {
for (int k = 0; k < 4; k++) {
@@ -687,10 +646,7 @@ public void testTranspose() {
}
tb = DatasetUtils.transpose(ds, 1, 0, 2);
- assertEquals(3, tb.getShapeRef().length);
- assertEquals(3, tb.getShapeRef()[0]);
- assertEquals(2, tb.getShapeRef()[1]);
- assertEquals(4, tb.getShapeRef()[2]);
+ assertArrayEquals(new int[] {3, 2, 4}, tb.getShapeRef());
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 3; j++) {
for (int k = 0; k < 4; k++) {
@@ -700,10 +656,7 @@ public void testTranspose() {
}
tb = DatasetUtils.transpose(ds, 2, 0, 1);
- assertEquals(3, tb.getShapeRef().length);
- assertEquals(4, tb.getShapeRef()[0]);
- assertEquals(2, tb.getShapeRef()[1]);
- assertEquals(3, tb.getShapeRef()[2]);
+ assertArrayEquals(new int[] {4, 2, 3}, tb.getShapeRef());
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 3; j++) {
for (int k = 0; k < 4; k++) {
@@ -719,22 +672,19 @@ public void testTranspose() {
@Test
public void testRepeat() {
// 2D
- Dataset ds = DatasetFactory.createRange(DoubleDataset.class, 6);
+ final Dataset ds = DatasetFactory.createRange(DoubleDataset.class, 6);
ds.setShape(2,3);
double[] xa = { 0., 0., 1., 1., 2., 2., 3., 3., 4., 4., 5., 5. };
DoubleDataset ta = (DoubleDataset) DatasetUtils.repeat(ds, new int[] {2}, -1);
- assertEquals(1, ta.getShapeRef().length);
- assertEquals(12, ta.getShapeRef()[0]);
+ assertArrayEquals(new int[] {12}, ta.getShapeRef());
for (int i = 0; i < 12; i++) {
assertEquals(xa[i], ta.get(i), 1e-6);
}
double[][] xb = { { 0., 0., 1., 1., 2., 2. }, { 3., 3., 4., 4., 5., 5. } };
DoubleDataset tb = (DoubleDataset) DatasetUtils.repeat(ds, new int[] {2}, 1);
- assertEquals(2, tb.getShapeRef().length);
- assertEquals(2, tb.getShapeRef()[0]);
- assertEquals(6, tb.getShapeRef()[1]);
+ assertArrayEquals(new int[] {2, 6}, tb.getShapeRef());
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 6; j++) {
assertEquals(xb[i][j], tb.get(i, j), 1e-6);
@@ -743,9 +693,7 @@ public void testRepeat() {
double[][] xc = { { 0., 1., 2. }, { 0., 1., 2. }, { 3., 4., 5. }, { 3., 4., 5. } };
DoubleDataset tc = (DoubleDataset) DatasetUtils.repeat(ds, new int[] {2}, 0);
- assertEquals(2, tc.getShapeRef().length);
- assertEquals(4, tc.getShapeRef()[0]);
- assertEquals(3, tc.getShapeRef()[1]);
+ assertArrayEquals(new int[] {4, 3}, tc.getShapeRef());
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 3; j++) {
assertEquals(xc[i][j], tc.get(i, j), 1e-6);
@@ -754,9 +702,7 @@ public void testRepeat() {
double[][] xd = { { 0., 1., 2. }, { 0., 1., 2. }, { 3., 4., 5. } };
DoubleDataset td = (DoubleDataset) DatasetUtils.repeat(ds, new int[] {2, 1}, 0);
- assertEquals(2, td.getShapeRef().length);
- assertEquals(3, td.getShapeRef()[0]);
- assertEquals(3, td.getShapeRef()[1]);
+ assertArrayEquals(new int[] {3, 3}, td.getShapeRef());
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
assertEquals(xd[i][j], td.get(i, j), 1e-6);
@@ -765,9 +711,7 @@ public void testRepeat() {
double[][] xe = { { 0., 1., 1., 2., 2., 2.}, { 3., 4., 4., 5., 5., 5. } };
DoubleDataset te = (DoubleDataset) DatasetUtils.repeat(ds, new int[] {1, 2, 3}, 1);
- assertEquals(2, te.getShapeRef().length);
- assertEquals(2, te.getShapeRef()[0]);
- assertEquals(6, te.getShapeRef()[1]);
+ assertArrayEquals(new int[] {2, 6}, te.getShapeRef());
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 6; j++) {
assertEquals(xe[i][j], te.get(i, j), 1e-6);
@@ -776,35 +720,31 @@ public void testRepeat() {
double[] xf = { 0., 1., 2., 2., 5., 5., 5. };
DoubleDataset tf = (DoubleDataset) DatasetUtils.repeat(ds, new int[] {1, 1, 2, 0, 0, 3}, -1);
- assertEquals(1, tf.getShapeRef().length);
- assertEquals(7, tf.getShapeRef()[0]);
+ assertArrayEquals(new int[] {7}, tf.getShapeRef());
for (int i = 0; i < 7; i++) {
assertEquals(xf[i], tf.get(i), 1e-6);
}
- try {
- tf = (DoubleDataset) DatasetUtils.repeat(ds, new int[] {0}, 3);
- } catch (IllegalArgumentException e) {
- // this is correct.
- } catch (Exception e) {
- fail("wrong exception type passed from incorrect arguments being passed to the constructor");
- }
+ assertThrows(IllegalArgumentException.class, new ThrowingRunnable() {
+ @Override
+ public void run() {
+ DatasetUtils.repeat(ds, new int[] {0}, 3);
+ }
+ });
- try {
- tf = (DoubleDataset) DatasetUtils.repeat(ds, new int[] {2, 1}, -1);
- } catch (IllegalArgumentException e) {
- // this is correct.
- } catch (Exception e) {
- fail("wrong exception type passed from incorrect arguments being passed to the constructor");
- }
+ assertThrows(IllegalArgumentException.class, new ThrowingRunnable() {
+ @Override
+ public void run() {
+ DatasetUtils.repeat(ds, new int[] {2, 1}, -1);
+ }
+ });
- try {
- tf = (DoubleDataset) DatasetUtils.repeat(ds, new int[] {-1}, -1);
- } catch (IllegalArgumentException e) {
- // this is correct.
- } catch (Exception e) {
- fail("wrong exception type passed from incorrect arguments being passed to the constructor");
- }
+ assertThrows(IllegalArgumentException.class, new ThrowingRunnable() {
+ @Override
+ public void run() {
+ DatasetUtils.repeat(ds, new int[] {-1}, -1);
+ }
+ });
}
/**
@@ -994,13 +934,12 @@ public void testToString() {
@Test
public void testSlicing() {
- Dataset a = DatasetFactory.createRange(IntegerDataset.class, 1000);
+ final Dataset a = DatasetFactory.createRange(IntegerDataset.class, 1000);
Dataset s, t;
IndexIterator is, it;
s = a.getSlice(null, new int[] {10}, null);
- assertEquals(1, s.getShapeRef().length);
- assertEquals(10, s.getShapeRef()[0]);
+ assertArrayEquals(new int[] {10}, s.getShapeRef());
is = s.getIterator();
for (int i = 0; is.hasNext(); i++) {
@@ -1008,8 +947,7 @@ public void testSlicing() {
}
t = a.getSlice(new Slice(10));
- assertEquals(1, t.getShapeRef().length);
- assertEquals(10, t.getShapeRef()[0]);
+ assertArrayEquals(new int[] {10}, t.getShapeRef());
it = t.getIterator();
for (int i = 0; it.hasNext(); i++) {
@@ -1023,16 +961,13 @@ public void testSlicing() {
}
s = a.getSlice(new int[]{0}, new int[] {10}, null);
- assertEquals(1, s.getShapeRef().length);
- assertEquals(10, s.getShapeRef()[0]);
+ assertArrayEquals(new int[] {10}, s.getShapeRef());
s = a.getSlice(new int[]{-1000}, new int[] {10}, null);
- assertEquals(1, s.getShapeRef().length);
- assertEquals(10, s.getShapeRef()[0]);
+ assertArrayEquals(new int[] {10}, s.getShapeRef());
s = a.getSlice(new int[] {9}, null, new int[] {-1});
- assertEquals(1, s.getShapeRef().length);
- assertEquals(10, s.getShapeRef()[0]);
+ assertArrayEquals(new int[] {10}, s.getShapeRef());
is = s.getIterator();
for (int i = 9; is.hasNext(); i--) {
@@ -1040,8 +975,7 @@ public void testSlicing() {
}
t = a.getSlice(new Slice(9, null, -1));
- assertEquals(1, t.getShapeRef().length);
- assertEquals(10, t.getShapeRef()[0]);
+ assertArrayEquals(new int[] {10}, s.getShapeRef());
it = t.getIterator();
for (int i = 9; it.hasNext(); i--) {
@@ -1123,26 +1057,26 @@ public void testSlicing() {
}
// test input SliceND checking
- try {
- a.getSlice(new SliceND(null));
- fail();
- } catch (IllegalArgumentException e) {
- System.out.println("As expected: " + e);
- }
+ assertThrows(IllegalArgumentException.class, new ThrowingRunnable() {
+ @Override
+ public void run() {
+ a.getSlice(new SliceND(null));
+ }
+ });
- try {
- a.getSlice(new SliceND(new int[0]));
- fail();
- } catch (IllegalArgumentException e) {
- System.out.println("As expected: " + e);
- }
+ assertThrows(IllegalArgumentException.class, new ThrowingRunnable() {
+ @Override
+ public void run() {
+ a.getSlice(new SliceND(new int[0]));
+ }
+ });
- try {
- a.getSlice(new SliceND(new int[2]));
- fail();
- } catch (IllegalArgumentException e) {
- System.out.println("As expected: " + e);
- }
+ assertThrows(IllegalArgumentException.class, new ThrowingRunnable() {
+ @Override
+ public void run() {
+ a.getSlice(new SliceND(new int[2]));
+ }
+ });
s = a.getSlice(new SliceND(a.getShape()));
assertEquals("Full slice", a, s);
@@ -1173,14 +1107,14 @@ public void testSlicingViews() {
c.setShape(6,2,2);
assertEquals(c, b);
b.setShape(6,4);
- try {
- b.setShape(2,12);
- fail("Should have raised an exception");
- } catch (IllegalArgumentException iae) {
- // expected
- } catch (Exception e) {
- fail("Unexpected exception: " + e);
- }
+
+ final Dataset fb = b;
+ assertThrows(IllegalArgumentException.class, new ThrowingRunnable() {
+ @Override
+ public void run() {
+ fb.setShape(2,12);
+ }
+ });
b = checkSliceView(a, new int[] {1, -1}, new int[] {-1, 2}, new int[] {1, -2}); // 4x4
checkSliceView(b, new int[] {1, 0}, new int[] {4, 3}, new int[] {2, 1});
@@ -1197,26 +1131,22 @@ public void testSlicingViews() {
// test input SliceND checking
a = DatasetFactory.createRange(60).reshape(6, 10);
- try {
- a.getSliceView(new SliceND(null));
- fail();
- } catch (IllegalArgumentException e) {
- System.out.println("As expected: " + e);
- }
+ final Dataset fa = a;
+ assertThrows(IllegalArgumentException.class, new ThrowingRunnable() {
+ @Override
+ public void run() {
+ fa.getSliceView(new SliceND(null));
+ }
+ });
- try {
- a.getSliceView(new SliceND(new int[0]));
- fail();
- } catch (IllegalArgumentException e) {
- System.out.println("As expected: " + e);
- }
+ assertThrows(IllegalArgumentException.class, new ThrowingRunnable() {
+ @Override
+ public void run() {
+ fa.getSliceView(new SliceND(new int[0]));
+ }
+ });
- try {
- a.getSliceView(new SliceND(new int[2]));
- fail();
- } catch (IllegalArgumentException e) {
- System.out.println("As expected: " + e);
- }
+ a.getSliceView(new SliceND(new int[2]));
b = a.getSliceView(new SliceND(a.getShape()));
assertEquals("Full slice", a, b);
@@ -1317,6 +1247,7 @@ public void testSetSlice() {
// with broadcasting
a = DatasetFactory.createRange(100).reshape(20, 5);
+ // (20, 5) [2:10, ::2] => (8,3)
a.setSlice(DatasetFactory.createRange(ShortDataset.class, 3), new Slice(2, 10), new Slice(null, null, 2));
assertEquals(0, a.getDouble(0, 0), 1e-15);
@@ -1337,11 +1268,14 @@ public void testSetSlice() {
assertEquals(13, a.getDouble(2, 3), 1e-15);
assertEquals(2, a.getDouble(2, 4), 1e-15);
- try {
- a.setSlice(DatasetFactory.createRange(ShortDataset.class, 3), new Slice(2, 7, 2), new Slice(2, 3));
- fail("Should have thrown an IAE");
- } catch (IllegalArgumentException e) {
- }
+ final Dataset fa = a;
+ assertThrows(IllegalArgumentException.class, new ThrowingRunnable() {
+ @Override
+ public void run() {
+ // (20, 5) [2:7:2, 2:3] => (3,1)
+ fa.setSlice(DatasetFactory.createRange(ShortDataset.class, 3), new Slice(2, 7, 2), new Slice(2, 3));
+ }
+ });
// compound
CompoundDataset c = DatasetFactory.createRange(3, CompoundDoubleDataset.class, 100).reshape(20, 5);
@@ -1366,7 +1300,6 @@ public void testFillDataset() {
@Test
public void test1DErrors() {
-
// test 1D errors for single value
Dataset a = DatasetFactory.createRange(IntegerDataset.class, 100);
a.setErrors(5);
@@ -1381,12 +1314,8 @@ public void test1DErrors() {
Dataset error = a.getErrors();
// check compatibility
- try {
- ShapeUtils.checkCompatibility(a, error);
- } catch (Exception e) {
- fail("Error shape is not the same as input datasets");
- }
-
+ ShapeUtils.checkCompatibility(a, error);
+
assertEquals(5.0, error.getDouble(0), 0.001);
assertEquals(5.0, error.getDouble(50), 0.001);
assertEquals(5.0, error.getDouble(99), 0.001);
@@ -1402,21 +1331,15 @@ public void test1DErrors() {
Dataset error2 = a.getErrors();
// check compatibility
- try {
- ShapeUtils.checkCompatibility(a, error2);
- } catch (Exception e) {
- fail("Error shape is not the same as input datasets");
- }
-
+ ShapeUtils.checkCompatibility(a, error2);
+
assertEquals(10.0, error2.getDouble(0), 0.001);
assertEquals(10.0, error2.getDouble(50), 0.001);
assertEquals(10.0, error2.getDouble(99), 0.001);
}
-
-
+
@Test
public void test2DErrors() {
-
// test 1D errors for single value
Dataset a = DatasetFactory.zeros(IntegerDataset.class, 100, 100);
a.setErrors(5);
@@ -1431,12 +1354,8 @@ public void test2DErrors() {
Dataset error = a.getErrors();
// check compatibility
- try {
- ShapeUtils.checkCompatibility(a, error);
- } catch (Exception e) {
- fail("Error shape is not the same as input datasets");
- }
-
+ ShapeUtils.checkCompatibility(a, error);
+
assertEquals(5.0, error.getDouble(0,0), 0.001);
assertEquals(5.0, error.getDouble(50,50), 0.001);
assertEquals(5.0, error.getDouble(99,99), 0.001);
@@ -1452,12 +1371,8 @@ public void test2DErrors() {
Dataset error2 = a.getErrors();
// check compatibility
- try {
- ShapeUtils.checkCompatibility(a, error2);
- } catch (Exception e) {
- fail("Error shape is not the same as input datasets");
- }
-
+ ShapeUtils.checkCompatibility(a, error2);
+
assertEquals(10.0, error2.getDouble(0,0), 0.001);
assertEquals(10.0, error2.getDouble(50,50), 0.001);
assertEquals(10.0, error2.getDouble(99,99), 0.001);
@@ -1484,7 +1399,6 @@ public void testErrors() {
@Test
public void testSetErrorBuffer() {
-
Dataset a = DatasetFactory.zeros(IntegerDataset.class, 100, 100);
Dataset err = DatasetFactory.createLinearSpace(DoubleDataset.class, 0, a.getSize() - 1, a.getSize());
err.setShape(a.getShapeRef());
@@ -1501,13 +1415,8 @@ public void testSetErrorBuffer() {
assertTrue(a.hasErrors());
// now for pulling out the full error array and check compatibility
- Dataset error = a.getErrors();
- try {
- ShapeUtils.checkCompatibility(a, error);
- } catch (Exception e) {
- fail("Error shape is not the same as input datasets");
- }
-
+ ShapeUtils.checkCompatibility(a, a.getErrors());
+
a.setErrorBuffer(err);
assertEquals(0.0, a.getError(0,0), 0.001);
@@ -1517,13 +1426,8 @@ public void testSetErrorBuffer() {
assertTrue(a.hasErrors());
// now for pulling out the full error array and check compatibility
- error = a.getErrors();
- try {
- ShapeUtils.checkCompatibility(a, error);
- } catch (Exception e) {
- fail("Error shape is not the same as input datasets");
- }
-
+ ShapeUtils.checkCompatibility(a, a.getErrors());
+
a.setErrorBuffer(err.getBuffer());
assertEquals(0.0, a.getError(0,0), 0.001);
@@ -1533,12 +1437,7 @@ public void testSetErrorBuffer() {
assertTrue(a.hasErrors());
// now for pulling out the full error array and check compatibility
- error = a.getErrors();
- try {
- ShapeUtils.checkCompatibility(a, error);
- } catch (Exception e) {
- fail("Error shape is not the same as input datasets");
- }
+ ShapeUtils.checkCompatibility(a, a.getErrors());
}
@Test
@@ -1675,7 +1574,7 @@ public void testCast() {
udata = new long[] {0, 1, 127, 128, 255, 256, 32767, 32768, 65535, 65536, 2147483647L, 2147483648L, 4294967295L, 4294967296L};
d = new LongDataset(udata);
c = DatasetUtils.cast(IntegerDataset.class, d);
- Assert.assertTrue(c.max().doubleValue() < d.max().doubleValue()); // check stored values
+ assertTrue(c.max().doubleValue() < d.max().doubleValue()); // check stored values
a = DatasetFactory.createFromObject(true, c);
assertEquals("Cast", 0, a.getLong(13));
for (int i = 0; i < 13; i++) {
@@ -1683,7 +1582,7 @@ public void testCast() {
}
c = DatasetUtils.cast(ShortDataset.class, d);
- Assert.assertTrue(c.max().doubleValue() < d.max().doubleValue());
+ assertTrue(c.max().doubleValue() < d.max().doubleValue());
a = DatasetFactory.createFromObject(true, c);
assertEquals("Cast", 0, a.getLong(9));
for (int i = 0; i < 9; i++) {
@@ -1691,7 +1590,7 @@ public void testCast() {
}
c = DatasetUtils.cast(ByteDataset.class, d);
- Assert.assertTrue(c.max().doubleValue() < d.max().doubleValue());
+ assertTrue(c.max().doubleValue() < d.max().doubleValue());
a = DatasetFactory.createFromObject(true, c);
assertEquals("Cast", 0, a.getLong(5));
for (int i = 0; i < 5; i++) {
@@ -1758,10 +1657,10 @@ public void testRoll() {
@Test
public void testRollAxis() {
Dataset a = DatasetFactory.ones(ByteDataset.class, 3, 4, 5, 6);
- Assert.assertArrayEquals(new int[] {3, 6, 4, 5}, DatasetUtils.rollAxis(a, 3, 1).getShapeRef());
- Assert.assertArrayEquals(new int[] {5, 3, 4, 6}, DatasetUtils.rollAxis(a, 2, 0).getShapeRef());
- Assert.assertArrayEquals(new int[] {3, 5, 6, 4}, DatasetUtils.rollAxis(a, 1, 4).getShapeRef());
- Assert.assertArrayEquals(new int[] {3, 6, 4, 5}, DatasetUtils.rollAxis(a, -1, 1).getShapeRef());
+ assertArrayEquals(new int[] {3, 6, 4, 5}, DatasetUtils.rollAxis(a, 3, 1).getShapeRef());
+ assertArrayEquals(new int[] {5, 3, 4, 6}, DatasetUtils.rollAxis(a, 2, 0).getShapeRef());
+ assertArrayEquals(new int[] {3, 5, 6, 4}, DatasetUtils.rollAxis(a, 1, 4).getShapeRef());
+ assertArrayEquals(new int[] {3, 6, 4, 5}, DatasetUtils.rollAxis(a, -1, 1).getShapeRef());
}
@Test
@@ -1849,38 +1748,40 @@ public void testChoose() {
Dataset a = DatasetFactory.createFromObject(new double[] { 0, 1, 3, 5, -7, -9 });
Dataset b = DatasetFactory.createFromObject(new double[] { 0.01, 1.2, 2.9, 5, -7.1, -9 });
- Dataset c = a.clone().reshape(2, 3);
+ final Dataset c = a.clone().reshape(2, 3);
IntegerDataset d = DatasetFactory.createFromObject(IntegerDataset.class, new int[] {0, 0, 1, 1, 0, 1}, 2, 3);
Dataset e = DatasetUtils.choose(d, new Object[] {c, -2}, true, false);
assertDatasetEquals(DatasetFactory.createFromObject(new double[] {0, 1, -2, -2, -7, -2}, 2, 3), e);
d = DatasetFactory.createFromObject(IntegerDataset.class, new int[] {-2, 0, 3, 1, 0, 2}, 2, 3);
- try {
- e = DatasetUtils.choose(d, new Object[] {c, -2}, true, false);
- fail("Should have thrown an array index OOB exception");
- } catch (ArrayIndexOutOfBoundsException oob) {
- // expected
- }
+ final IntegerDataset fd = d;
+ assertThrows(ArrayIndexOutOfBoundsException.class, new ThrowingRunnable() {
+ @Override
+ public void run() {
+ DatasetUtils.choose(fd, new Object[] {c, -2}, true, false);
+ }
+ });
+
e = DatasetUtils.choose(d, new Object[] {c, -2}, false, false);
assertDatasetEquals(DatasetFactory.createFromObject(new double[] {0, 1, -2, -2, -7, -9}, 2, 3), e);
e = DatasetUtils.choose(d, new Object[] {c, -2}, false, true);
assertDatasetEquals(DatasetFactory.createFromObject(new double[] {0, 1, -2, -2, -7, -2}, 2, 3), e);
- Dataset f = b.clone().reshape(2, 3);
+ final Dataset f = b.clone().reshape(2, 3);
IntegerDataset g = DatasetFactory.createFromObject(IntegerDataset.class, new int[] {1, 0, 1, 1, 2, 2}, 2, 3);
e = DatasetUtils.choose(g, new Object[] {c, f, -2}, true, false);
assertDatasetEquals(DatasetFactory.createFromObject(new double[] {0.01, 1, 2.9, 5, -2, -2}, 2, 3), e);
g = DatasetFactory.createFromObject(IntegerDataset.class, new int[] {-1, 3, 1, 1, 2, 2}, 2, 3);
- try {
- e = DatasetUtils.choose(d, new Object[] {c, f, -2}, true, false);
- fail("Should have thrown an array index OOB exception");
- } catch (ArrayIndexOutOfBoundsException oob) {
- // expected
- }
+ assertThrows(ArrayIndexOutOfBoundsException.class, new ThrowingRunnable() {
+ @Override
+ public void run() {
+ DatasetUtils.choose(fd, new Object[] {c, f, -2}, true, false);
+ }
+ });
e = DatasetUtils.choose(g, new Object[] {c, f, -2}, false, false);
assertDatasetEquals(DatasetFactory.createFromObject(new double[] {-2, 1, 2.9, 5, -2, -2}, 2, 3), e);
@@ -1896,8 +1797,8 @@ public void testSize() {
int[] small = new int[] {2};
int[] medium = new int[] {1024, 1024};
int[] large = new int[] {1024, 1024, 1024};
- int[] xxxlarge = new int[] {1024, 1024, 1024, 1024};
- int[] bad = new int[] {1024, -1, 1024};
+ final int[] xxxlarge = new int[] {1024, 1024, 1024, 1024};
+ final int[] bad = new int[] {1024, -1, 1024};
assertEquals(0, ShapeUtils.calcLongSize(zero));
assertEquals(0, ShapeUtils.calcSize(zero));
@@ -1915,37 +1816,31 @@ public void testSize() {
assertEquals(1024*1024*1024, ShapeUtils.calcSize(large));
assertEquals(1024*1024*1024*1024L, ShapeUtils.calcLongSize(xxxlarge));
- try {
- ShapeUtils.calcSize(xxxlarge);
- fail("Should have thrown an illegal argument exception");
- } catch (IllegalArgumentException e) {
- // expected
- } catch (Throwable t) {
- fail("Should have thrown an illegal argument exception");
- }
+ assertThrows(IllegalArgumentException.class, new ThrowingRunnable() {
+ @Override
+ public void run() {
+ ShapeUtils.calcSize(xxxlarge);
+ }
+ });
- try {
- ShapeUtils.calcLongSize(bad);
- fail("Should have thrown an illegal argument exception");
- } catch (IllegalArgumentException e) {
- // expected
- } catch (Throwable t) {
- fail("Should have thrown an illegal argument exception");
- }
+ assertThrows(IllegalArgumentException.class, new ThrowingRunnable() {
+ @Override
+ public void run() {
+ ShapeUtils.calcLongSize(bad);
+ }
+ });
- try {
- ShapeUtils.calcSize(bad);
- fail("Should have thrown an illegal argument exception");
- } catch (IllegalArgumentException e) {
- // expected
- } catch (Throwable t) {
- fail("Should have thrown an illegal argument exception");
- }
+ assertThrows(IllegalArgumentException.class, new ThrowingRunnable() {
+ @Override
+ public void run() {
+ ShapeUtils.calcSize(bad);
+ }
+ });
}
@Test
public void testFill() {
- Dataset a = DatasetFactory.createRange(DoubleDataset.class, 12);
+ final Dataset a = DatasetFactory.createRange(DoubleDataset.class, 12);
Dataset b = DatasetFactory.zeros(a);
a.fill(0);
@@ -1966,11 +1861,12 @@ public void testFill() {
a.fill(DatasetFactory.createFromObject(new int[] {0}));
assertDatasetEquals(b, a, 1e-15, 1e-20);
- try {
- a.fill(DatasetFactory.createFromObject(new int[] {0, 1}));
- fail();
- } catch (IllegalArgumentException e) {
- }
+ assertThrows(IllegalArgumentException.class, new ThrowingRunnable() {
+ @Override
+ public void run() {
+ a.fill(DatasetFactory.createFromObject(new int[] {0, 1}));
+ }
+ });
}
@Test
@@ -2176,7 +2072,7 @@ public void testBroadcast() {
private Dataset checkBroadcast2D(Dataset a, boolean broadcastFirstDim, int... broadcastShape) {
Dataset b = a.getBroadcastView(broadcastShape);
- Assert.assertArrayEquals(broadcastShape, b.getShapeRef());
+ assertArrayEquals(broadcastShape, b.getShapeRef());
int size = ShapeUtils.calcSize(broadcastShape);
assertEquals(size, b.getSize());
diff --git a/org.eclipse.january.test/src/org/eclipse/january/dataset/LazyDatasetTest.java b/org.eclipse.january.test/src/org/eclipse/january/dataset/LazyDatasetTest.java
index ff40fb7c..c8158751 100644
--- a/org.eclipse.january.test/src/org/eclipse/january/dataset/LazyDatasetTest.java
+++ b/org.eclipse.january.test/src/org/eclipse/january/dataset/LazyDatasetTest.java
@@ -15,6 +15,7 @@
import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertThrows;
import static org.junit.Assert.fail;
import java.util.Arrays;
@@ -24,6 +25,7 @@
import org.eclipse.january.metadata.AxesMetadata;
import org.eclipse.january.metadata.MetadataFactory;
import org.junit.Test;
+import org.junit.function.ThrowingRunnable;
public class LazyDatasetTest {
@@ -81,7 +83,7 @@ public void testSetShape() {
public void testGetSlice() throws Exception {
final int[] shape = new int[] {1, 2, 3, 4};
final Dataset d = Random.randn(shape);
- LazyDataset ld = LazyDataset.createLazyDataset(d);
+ final LazyDataset ld = LazyDataset.createLazyDataset(d);
Slice[] slice;
slice = new Slice[]{null, new Slice(1), null, new Slice(1, 3)};
@@ -135,26 +137,26 @@ public void testGetSlice() throws Exception {
assertEquals("Full negative slice", d.getSlice(slice), nd);
// test input SliceND checking
- try {
- ld.getSlice(new SliceND(null));
- fail();
- } catch (IllegalArgumentException e) {
- System.out.println("As expected: " + e);
- }
+ assertThrows(IllegalArgumentException.class, new ThrowingRunnable() {
+ @Override
+ public void run() throws Throwable {
+ ld.getSlice(new SliceND(null));
+ }
+ });
- try {
- ld.getSlice(new SliceND(new int[0]));
- fail();
- } catch (IllegalArgumentException e) {
- System.out.println("As expected: " + e);
- }
+ assertThrows(IllegalArgumentException.class, new ThrowingRunnable() {
+ @Override
+ public void run() throws Throwable {
+ ld.getSlice(new SliceND(new int[0]));
+ }
+ });
- try {
- ld.getSlice(new SliceND(new int[2]));
- fail();
- } catch (IllegalArgumentException e) {
- System.out.println("As expected: " + e);
- }
+ assertThrows(IllegalArgumentException.class, new ThrowingRunnable() {
+ @Override
+ public void run() throws Throwable {
+ ld.getSlice(new SliceND(new int[2]));
+ }
+ });
nd = ld.getSlice(new SliceND(ld.getShape()));
assertEquals("Full slice", d.getSlice(), nd);
@@ -164,7 +166,7 @@ public void testGetSlice() throws Exception {
public void testGetSliceView() throws Exception {
final int[] shape = new int[] {6, 2, 4, 1};
final Dataset d = Random.randn(shape);
- LazyDataset ld = LazyDataset.createLazyDataset(d);
+ final LazyDataset ld = LazyDataset.createLazyDataset(d);
Slice[] slice;
slice = new Slice[]{new Slice(1, null, 3), new Slice(1), new Slice(1, 3), null};
@@ -196,26 +198,26 @@ public void testGetSliceView() throws Exception {
assertEquals("Full negative slice", d.getSlice(slice), l.getSlice());
// test input SliceND checking
- try {
- ld.getSliceView(new SliceND(null));
- fail();
- } catch (IllegalArgumentException e) {
- System.out.println("As expected: " + e);
- }
+ assertThrows(IllegalArgumentException.class, new ThrowingRunnable() {
+ @Override
+ public void run() throws Throwable {
+ ld.getSliceView(new SliceND(null));
+ }
+ });
- try {
- ld.getSliceView(new SliceND(new int[0]));
- fail();
- } catch (IllegalArgumentException e) {
- System.out.println("As expected: " + e);
- }
+ assertThrows(IllegalArgumentException.class, new ThrowingRunnable() {
+ @Override
+ public void run() throws Throwable {
+ ld.getSliceView(new SliceND(new int[0]));
+ }
+ });
- try {
- ld.getSliceView(new SliceND(new int[2]));
- fail();
- } catch (IllegalArgumentException e) {
- System.out.println("As expected: " + e);
- }
+ assertThrows(IllegalArgumentException.class, new ThrowingRunnable() {
+ @Override
+ public void run() throws Throwable {
+ ld.getSliceView(new SliceND(new int[2]));
+ }
+ });
l = ld.getSliceView(new SliceND(ld.getShape()));
assertEquals("Full slice", d, l.getSlice());
diff --git a/org.eclipse.january.test/src/org/eclipse/january/dataset/SliceNDTest.java b/org.eclipse.january.test/src/org/eclipse/january/dataset/SliceNDTest.java
index 0d60160a..076d2b7c 100644
--- a/org.eclipse.january.test/src/org/eclipse/january/dataset/SliceNDTest.java
+++ b/org.eclipse.january.test/src/org/eclipse/january/dataset/SliceNDTest.java
@@ -12,16 +12,18 @@
import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertThrows;
import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
import org.junit.Test;
+import org.junit.function.ThrowingRunnable;
public class SliceNDTest {
@Test
public void testSliceND() {
- int[] step;
+ final int[] step;
int[] lstart;
int[] lstop;
SliceND slice;
@@ -30,6 +32,7 @@ public void testSliceND() {
slice = new SliceND(null);
assertTrue(slice.isAll());
assertEquals("", slice.toString());
+ assertNull(slice.convertToSlice());
// zero-rank dataset
slice = new SliceND(new int[0]);
@@ -41,33 +44,32 @@ public void testSliceND() {
assertFalse(slice.isAll());
assertEquals(":", slice.toString());
- step = new int[] {};
lstart = new int[] {};
lstop = new int[] {};
- slice = new SliceND(new int[] {}, null, null, step);
+ slice = new SliceND(new int[] {}, null, null, new int[] {});
assertArrayEquals(new int[] {}, slice.getShape());
- try {
- slice = new SliceND(new int[] {1}, null, null, step);
- fail();
- } catch (IllegalArgumentException e) {
- System.out.println("As expected: " + e);
- }
+ assertThrows(IllegalArgumentException.class, new ThrowingRunnable() {
+ @Override
+ public void run() throws Throwable {
+ new SliceND(new int[] {1}, null, null, new int[] {});
+ }
+ });
- try {
- slice = new SliceND(new int[] {3}, null, null, new int[1]);
- fail();
- } catch (IllegalArgumentException e) {
- System.out.println("As expected: " + e);
- }
+ assertThrows(IllegalArgumentException.class, new ThrowingRunnable() {
+ @Override
+ public void run() throws Throwable {
+ new SliceND(new int[] {3}, null, null, new int[1]);
+ }
+ });
step = new int[] {2};
- try {
- slice = new SliceND(new int[] {2, 3}, null, null, step);
- fail();
- } catch (IllegalArgumentException e) {
- System.out.println("As expected: " + e);
- }
+ assertThrows(IllegalArgumentException.class, new ThrowingRunnable() {
+ @Override
+ public void run() throws Throwable {
+ new SliceND(new int[] {2, 3}, null, null, step);
+ }
+ });
lstart = new int[1];
lstop = new int[1];
@@ -75,6 +77,7 @@ public void testSliceND() {
assertArrayEquals(new int[] {4}, slice.getShape());
assertArrayEquals(new int[] {0}, slice.getStart());
assertArrayEquals(new int[] {7}, slice.getStop());
+ assertArrayEquals(new int[] {7}, slice.getMaxShape());
lstart[0] = 0;
slice = new SliceND(new int[] {7}, lstart, null, step);
@@ -155,13 +158,13 @@ public void testSliceND() {
assertArrayEquals(new int[] {4}, slice.getStart());
assertArrayEquals(new int[] {4}, slice.getStop());
- step = new int[] {-2};
- try {
- slice = new SliceND(new int[] {2, 3}, null, null, step);
- fail();
- } catch (IllegalArgumentException e) {
- System.out.println("As expected: " + e);
- }
+ step[0] = -2;
+ assertThrows(IllegalArgumentException.class, new ThrowingRunnable() {
+ @Override
+ public void run() throws Throwable {
+ new SliceND(new int[] {2, 3}, null, null, step);
+ }
+ });
slice = new SliceND(new int[] {7}, null, null, step);
assertArrayEquals(new int[] {4}, slice.getShape());
@@ -291,32 +294,76 @@ public void testSliceND() {
assertArrayEquals(new int[] {0, 3}, slice.getShape());
assertArrayEquals(new int[] {1, 1}, slice.getStart());
assertArrayEquals(new int[] {1, 4}, slice.getStop());
- }
+
+ slice = new SliceND(new int[] {8, 4}, new Slice(1,8,-3), new Slice(1, 4));
+ assertArrayEquals(new int[] {0, 3}, slice.getShape());
+ assertArrayEquals(new int[] {1, 1}, slice.getStart());
+ assertArrayEquals(new int[] {1, 4}, slice.getStop());
+
+ assertThrows(IllegalArgumentException.class, new ThrowingRunnable() {
+ @Override
+ public void run() throws Throwable {
+ new SliceND(new int[] {2, 3}, new Slice[] {null, null, null});
+ }
+ });
+}
@Test
public void testExpandedSliceND() {
- int[] step;
+ final int[] step;
int[] lstart;
int[] lstop;
SliceND slice;
- step = new int[] {};
lstart = new int[] {};
lstop = new int[] {};
- try {
- slice = new SliceND(new int[] {1}, new int[] {}, null, null, null);
- fail();
- } catch (IllegalArgumentException e) {
- System.out.println("As expected: " + e);
- }
-
- try {
- slice = new SliceND(new int[] {1}, new int[] {2, 2}, null, null, null);
- fail();
- } catch (IllegalArgumentException e) {
- System.out.println("As expected: " + e);
- }
+ slice = new SliceND(null, null, null, null, null);
+ assertArrayEquals(new int[] {}, slice.getShape());
+ assertArrayEquals(new int[] {}, slice.getStart());
+ assertArrayEquals(new int[] {}, slice.getStop());
+
+ assertThrows(IllegalArgumentException.class, new ThrowingRunnable() {
+ @Override
+ public void run() throws Throwable {
+ new SliceND(new int[] {1}, new int[] {}, null, null, null);
+ }
+ });
+
+ assertThrows(IllegalArgumentException.class, new ThrowingRunnable() {
+ @Override
+ public void run() throws Throwable {
+ new SliceND(new int[] {1}, new int[] {2, 2}, null, null, null);
+ }
+ });
+
+ assertThrows(IllegalArgumentException.class, new ThrowingRunnable() {
+ @Override
+ public void run() throws Throwable {
+ new SliceND(new int[] {5}, new int[] {2}, null, null, null);
+ }
+ });
+
+ assertThrows(IllegalArgumentException.class, new ThrowingRunnable() {
+ @Override
+ public void run() throws Throwable {
+ new SliceND(new int[] {5}, new int[] {2}, new int[0], null, null);
+ }
+ });
+
+ assertThrows(IllegalArgumentException.class, new ThrowingRunnable() {
+ @Override
+ public void run() throws Throwable {
+ new SliceND(new int[] {5}, new int[] {2}, null, new int[2], null);
+ }
+ });
+
+ assertThrows(IllegalArgumentException.class, new ThrowingRunnable() {
+ @Override
+ public void run() throws Throwable {
+ new SliceND(new int[] {5}, new int[] {2}, null, null, new int[0]);
+ }
+ });
step = new int[] {2};
@@ -326,12 +373,15 @@ public void testExpandedSliceND() {
assertArrayEquals(new int[] {4}, slice.getShape());
assertArrayEquals(new int[] {0}, slice.getStart());
assertArrayEquals(new int[] {7}, slice.getStop());
+ assertArrayEquals(new int[] {9}, slice.getMaxShape());
+ assertFalse(slice.isExpanded());
lstart[0] = 0;
slice = new SliceND(new int[] {7}, new int[] {9}, lstart, null, step);
assertArrayEquals(new int[] {4}, slice.getShape());
assertArrayEquals(new int[] {0}, slice.getStart());
assertArrayEquals(new int[] {7}, slice.getStop());
+ assertFalse(slice.isExpanded());
lstart[0] = 3;
slice = new SliceND(new int[] {7}, new int[] {9}, lstart, null, step);
@@ -341,22 +391,45 @@ public void testExpandedSliceND() {
lstart[0] = 8;
slice = new SliceND(new int[] {7}, new int[] {9}, lstart, null, step);
- assertArrayEquals(new int[] {1}, slice.getShape());
+ assertArrayEquals(new int[] {0}, slice.getShape());
assertArrayEquals(new int[] {8}, slice.getStart());
- assertArrayEquals(new int[] {9}, slice.getStop());
+ assertArrayEquals(new int[] {8}, slice.getStop());
+ assertTrue(slice.isExpanded());
lstart[0] = 8;
- slice = new SliceND(new int[] {7}, new int[] {9}, lstart, new int[] {10}, step);
+ lstop[0] = 10;
+ slice = new SliceND(new int[] {7}, new int[] {9}, lstart, lstop, step);
assertArrayEquals(new int[] {1}, slice.getShape());
assertArrayEquals(new int[] {8}, slice.getStart());
assertArrayEquals(new int[] {9}, slice.getStop());
+ assertTrue(slice.isExpanded());
lstart[0] = 10;
- slice = new SliceND(new int[] {7}, new int[] {9}, lstart, new int[] {10}, step);
+ slice = new SliceND(new int[] {7}, new int[] {9}, lstart, lstop, step);
assertArrayEquals(new int[] {0}, slice.getShape());
assertArrayEquals(new int[] {9}, slice.getStart());
assertArrayEquals(new int[] {9}, slice.getStop());
+ lstart[0] = 5;
+ lstop[0] = 2;
+ slice = new SliceND(new int[] {7}, new int[] {9}, lstart, lstop, step);
+ assertArrayEquals(new int[] {0}, slice.getShape());
+ assertArrayEquals(new int[] {5}, slice.getStart());
+ assertArrayEquals(new int[] {5}, slice.getStop());
+
+ lstart[0] = 12;
+ lstop[0] = 6;
+ slice = new SliceND(new int[] {7}, new int[] {19}, lstart, lstop, step);
+ assertArrayEquals(new int[] {0}, slice.getShape());
+ assertArrayEquals(new int[] {12}, slice.getStart());
+ assertArrayEquals(new int[] {12}, slice.getStop());
+
+ lstop[0] = 8;
+ slice = new SliceND(new int[] {7}, new int[] {19}, lstart, lstop, step);
+ assertArrayEquals(new int[] {0}, slice.getShape());
+ assertArrayEquals(new int[] {12}, slice.getStart());
+ assertArrayEquals(new int[] {12}, slice.getStop());
+
lstart[0] = 10;
slice = new SliceND(new int[] {7}, new int[] {9}, lstart, null, step);
assertArrayEquals(new int[] {0}, slice.getShape());
@@ -377,17 +450,17 @@ public void testExpandedSliceND() {
lstart[0] = 7;
slice = new SliceND(new int[] {7}, new int[] {9}, lstart, null, step);
- assertArrayEquals(new int[] {1}, slice.getShape());
+ assertArrayEquals(new int[] {0}, slice.getShape());
assertArrayEquals(new int[] {7}, slice.getStart());
- assertArrayEquals(new int[] {9}, slice.getStop());
- assertArrayEquals(new int[] {9}, slice.getSourceShape());
+ assertArrayEquals(new int[] {7}, slice.getStop());
+ assertArrayEquals(new int[] {7}, slice.getSourceShape());
lstart[0] = 8;
slice = new SliceND(new int[] {7}, new int[] {9}, lstart, null, step);
- assertArrayEquals(new int[] {1}, slice.getShape());
+ assertArrayEquals(new int[] {0}, slice.getShape());
assertArrayEquals(new int[] {8}, slice.getStart());
- assertArrayEquals(new int[] {9}, slice.getStop());
- assertArrayEquals(new int[] {9}, slice.getSourceShape());
+ assertArrayEquals(new int[] {8}, slice.getStop());
+ assertArrayEquals(new int[] {8}, slice.getSourceShape());
assertFalse(slice.isAll());
lstop[0] = 7;
@@ -436,13 +509,13 @@ public void testExpandedSliceND() {
assertArrayEquals(new int[] {9}, slice.getStop());
assertArrayEquals(new int[] {9}, slice.getSourceShape());
- step = new int[] {-2};
- try {
- slice = new SliceND(new int[] {2, 3}, null, null, step);
- fail();
- } catch (IllegalArgumentException e) {
- System.out.println("As expected: " + e);
- }
+ step[0] = -2;
+ assertThrows(IllegalArgumentException.class, new ThrowingRunnable() {
+ @Override
+ public void run() throws Throwable {
+ new SliceND(new int[] {2, 3}, null, null, step);
+ }
+ });
slice = new SliceND(new int[] {7}, new int[] {9}, null, null, step);
assertArrayEquals(new int[] {4}, slice.getShape());
@@ -550,12 +623,22 @@ public void testExpandedSliceND() {
assertArrayEquals(new int[] {4}, slice.getShape());
assertArrayEquals(new int[] {6}, slice.getStart());
assertArrayEquals(new int[] {-1}, slice.getStop());
+
+ slice = new SliceND(new int[] {7, 12}, new int[] {9, 12}, (Slice[]) null);
+ assertArrayEquals(new int[] {7, 12}, slice.getShape());
+ assertArrayEquals(new int[] {0, 0}, slice.getStart());
+ assertArrayEquals(new int[] {7, 12}, slice.getStop());
+
+ slice = new SliceND(new int[] {7, 12}, new int[] {9, 12}, new Slice(null, -8, step[0]), null);
+ assertArrayEquals(new int[] {4, 12}, slice.getShape());
+ assertArrayEquals(new int[] {6, 0}, slice.getStart());
+ assertArrayEquals(new int[] {-1, 12}, slice.getStop());
}
@Test
public void testUnlimitedSliceND() {
- int[] step;
- int[] lstart;
+ final int[] step;
+ final int[] lstart;
int[] lstop;
SliceND slice;
@@ -593,20 +676,16 @@ public void testUnlimitedSliceND() {
assertArrayEquals(new int[] {7}, slice.getStop());
lstart[0] = 7;
- try {
- slice = new SliceND(new int[] {7}, new int[] {-1}, lstart, null, step);
- fail();
- } catch (IllegalArgumentException e) {
- System.out.println("As expected: " + e);
- }
+ slice = new SliceND(new int[] {7}, new int[] {-1}, lstart, null, step);
+ assertArrayEquals(new int[] {0}, slice.getShape());
+ assertArrayEquals(new int[] {7}, slice.getStart());
+ assertArrayEquals(new int[] {7}, slice.getStop());
lstart[0] = 8;
- try {
- slice = new SliceND(new int[] {7}, new int[] {-1}, lstart, null, step);
- fail();
- } catch (IllegalArgumentException e) {
- System.out.println("As expected: " + e);
- }
+ slice = new SliceND(new int[] {7}, new int[] {-1}, lstart, null, step);
+ assertArrayEquals(new int[] {0}, slice.getShape());
+ assertArrayEquals(new int[] {8}, slice.getStart());
+ assertArrayEquals(new int[] {8}, slice.getStop());
lstop[0] = 7;
slice = new SliceND(new int[] {7}, new int[] {-1}, null, lstop, step);
@@ -676,14 +755,28 @@ public void testUnlimitedSliceND() {
assertArrayEquals(new int[] {12}, slice.getStop());
assertArrayEquals(new int[] {12}, slice.getSourceShape());
+ lstart[0] = 9;
+ lstop[0] = 8;
+ slice = new SliceND(new int[] {7}, new int[] {-1}, lstart, lstop, step);
+ assertArrayEquals(new int[] {0}, slice.getShape());
+ assertArrayEquals(new int[] {9}, slice.getStart());
+ assertArrayEquals(new int[] {9}, slice.getStop());
+ assertArrayEquals(new int[] {9}, slice.getSourceShape());
- step = new int[] {-2};
- try {
- slice = new SliceND(new int[] {2, 3}, null, null, step);
- fail();
- } catch (IllegalArgumentException e) {
- System.out.println("As expected: " + e);
- }
+ lstop[0] = 2;
+ slice = new SliceND(new int[] {7}, new int[] {-1}, lstart, lstop, step);
+ assertArrayEquals(new int[] {0}, slice.getShape());
+ assertArrayEquals(new int[] {9}, slice.getStart());
+ assertArrayEquals(new int[] {9}, slice.getStop());
+ assertArrayEquals(new int[] {9}, slice.getSourceShape());
+
+ step[0]= -2;
+ assertThrows(IllegalArgumentException.class, new ThrowingRunnable() {
+ @Override
+ public void run() throws Throwable {
+ new SliceND(new int[] {2, 3}, null, null, step);
+ }
+ });
slice = new SliceND(new int[] {7}, new int[] {-1}, null, null, step);
assertArrayEquals(new int[] {4}, slice.getShape());
@@ -801,6 +894,10 @@ public void testIsAll() {
slice = new SliceND(new int[] {}, null, null, step);
assertTrue(slice.isAll());
+ step = new int[] {1};
+ slice = new SliceND(new int[] {7}, null, null, step);
+ assertTrue(slice.isAll());
+
step = new int[] {-1};
slice = new SliceND(new int[] {7}, null, null, step);
assertFalse(slice.isAll());
@@ -934,21 +1031,18 @@ public void testIsAll() {
@Test
public void testFlip() {
+ assertThrows(IllegalArgumentException.class, new ThrowingRunnable() {
+ @Override
+ public void run() throws Throwable {
+ new SliceND(new int[] {}, null, null, new int[] {}).flip(0);
+ }
+ });
+
int[] step;
int[] lstart;
SliceND slice;
- step = new int[] {};
- slice = new SliceND(new int[] {}, null, null, step);
- try {
- slice.flip(0);
- fail();
- } catch (IllegalArgumentException e) {
- System.out.println("As expected: " + e);
- }
-
step = new int[] {2};
-
lstart = new int[1];
slice = new SliceND(new int[] {7}, null, null, step).flip();
assertArrayEquals(new int[] {4}, slice.getShape());
@@ -1068,12 +1162,17 @@ public void testSliceNDNegativeStepEndPoints() {
@Test
public void testSliceWithinShape() {
assertTrue(SliceND.isSliceWithinShape(0, 0, 0, 1));
+ assertFalse(SliceND.isSliceWithinShape(0, 1, 0, 1));
+ assertFalse(SliceND.isSliceWithinShape(0, 0, 1, 1));
assertTrue(SliceND.isSliceWithinShape(5, 0, 5, 1));
assertTrue(SliceND.isSliceWithinShape(5, 1, 1, 1));
+ assertFalse(SliceND.isSliceWithinShape(5, -1, 1, 1));
+ assertFalse(SliceND.isSliceWithinShape(5, 3, 2, 1));
assertTrue(SliceND.isSliceWithinShape(5, 1, 5, 1));
assertTrue(SliceND.isSliceWithinShape(5, 4, 4, 1));
assertFalse(SliceND.isSliceWithinShape(5, 5, 5, 1));
+ assertFalse(SliceND.isSliceWithinShape(5, 4, 6, 1));
assertFalse(SliceND.isSliceWithinShape(5, 2, 1, 1));
assertTrue(SliceND.isSliceWithinShape(5, 4, -1, -1));
@@ -1083,148 +1182,360 @@ public void testSliceWithinShape() {
assertFalse(SliceND.isSliceWithinShape(5, 5, 5, -1));
assertFalse(SliceND.isSliceWithinShape(5, -1, -1, -1));
assertFalse(SliceND.isSliceWithinShape(5, 1, 2, -1));
+ assertFalse(SliceND.isSliceWithinShape(5, 4, -2, -1));
}
@Test
public void testUpdateSourceShape() {
- SliceND slice = new SliceND(new int[] {8, 4}, new int[] {6 , 1}, new int[] {2, 4}, new int[] {-3, 1});
-
- slice.updateSourceShape(13, 4);
-
- slice.updateSourceShape(8, 6);
-
- try {
- slice.updateSourceShape(8, 3);
- fail();
- } catch (IllegalArgumentException e) {
- System.out.println("As expected: " + e);
- }
-
- try {
- slice.updateSourceShape(3, 4);
- fail();
- } catch (IllegalArgumentException e) {
- System.out.println("As expected: " + e);
- }
-
- try {
- slice.updateSourceShape(1, 4);
- fail();
- } catch (IllegalArgumentException e) {
- System.out.println("As expected: " + e);
- }
-
- try {
- slice.updateSourceShape(3);
- fail();
- } catch (IllegalArgumentException e) {
- System.out.println("As expected: " + e);
- }
-
- try {
- slice.updateSourceShape();
- fail();
- } catch (IllegalArgumentException e) {
- System.out.println("As expected: " + e);
- }
-
- try {
- slice.updateSourceShape(null);
- fail();
- } catch (IllegalArgumentException e) {
- System.out.println("As expected: " + e);
- }
-
- slice = new SliceND(null);
- slice.updateSourceShape(null);
-
- try {
- slice.updateSourceShape();
- fail();
- } catch (IllegalArgumentException e) {
- System.out.println("As expected: " + e);
- }
-
- try {
- slice.updateSourceShape(3);
- fail();
- } catch (IllegalArgumentException e) {
- System.out.println("As expected: " + e);
- }
+ // (8,12)[6:2:-3, 5:9] => (2,3)
+ final SliceND slice = new SliceND(new int[] {8, 12}, new int[] {6 , 5}, new int[] {2, 9}, new int[] {-3, 1});
+
+ slice.updateSourceShape(13, 12);
+
+ slice.updateSourceShape(8,14);
+
+ assertThrows(IllegalArgumentException.class, new ThrowingRunnable() {
+ @Override
+ public void run() throws Throwable {
+ slice.updateSourceShape(8, 3);
+ }
+ });
+
+ assertThrows(IllegalArgumentException.class, new ThrowingRunnable() {
+ @Override
+ public void run() throws Throwable {
+ slice.updateSourceShape(8, 3);
+ }
+ });
+
+ assertThrows(IllegalArgumentException.class, new ThrowingRunnable() {
+ @Override
+ public void run() throws Throwable {
+ slice.updateSourceShape(3, 4);
+ }
+ });
+
+ assertThrows(IllegalArgumentException.class, new ThrowingRunnable() {
+ @Override
+ public void run() throws Throwable {
+ slice.updateSourceShape(1, 4);
+ }
+ });
+
+ assertThrows(IllegalArgumentException.class, new ThrowingRunnable() {
+ @Override
+ public void run() throws Throwable {
+ slice.updateSourceShape(3);
+ }
+ });
+
+ assertThrows(IllegalArgumentException.class, new ThrowingRunnable() {
+ @Override
+ public void run() throws Throwable {
+ slice.updateSourceShape();
+ }
+ });
+
+ assertThrows(IllegalArgumentException.class, new ThrowingRunnable() {
+ @Override
+ public void run() throws Throwable {
+ slice.updateSourceShape(null);
+ }
+ });
+
+ assertThrows(IllegalArgumentException.class, new ThrowingRunnable() {
+ @Override
+ public void run() throws Throwable {
+ slice.updateSourceShape();
+ }
+ });
+
+ final SliceND slice1 = new SliceND(null);
+ slice1.updateSourceShape(null);
+
+ assertThrows(IllegalArgumentException.class, new ThrowingRunnable() {
+ @Override
+ public void run() throws Throwable {
+ slice1.updateSourceShape(3);
+ }
+ });
}
@Test
public void testCheckShapes() {
- SliceND slice = new SliceND(new int[] {8, 4}, new int[] {6 , 1}, new int[] {2, 4}, new int[] {-3, 1});
-
- slice.checkShapes(new int[] {8, 4}, null);
-
- try {
- slice.checkShapes(new int[] {7}, null);
- fail();
- } catch (IllegalArgumentException e) {
- System.out.println("As expected: " + e);
- }
+ // [6:2:-3, 1:] in (8,4) has output shape is (2,3)
+ final SliceND slice1 = new SliceND(new int[] {8, 4}, new int[] {6 , 1}, new int[] {2, 4}, new int[] {-3, 1});
+
+ slice1.checkShapes(new int[] {8, 4}, null);
+
+ assertThrows(IllegalArgumentException.class, new ThrowingRunnable() {
+ @Override
+ public void run() throws Throwable {
+ slice1.checkShapes(new int[] {7}, null);
+ }
+ });
+
+ assertThrows(IllegalArgumentException.class, new ThrowingRunnable() {
+ @Override
+ public void run() throws Throwable {
+ slice1.checkShapes(new int[] {7, 2}, null);
+ }
+ });
+
+ assertThrows(IllegalArgumentException.class, new ThrowingRunnable() {
+ @Override
+ public void run() throws Throwable {
+ slice1.checkShapes(new int[] {6, 4}, null);
+ }
+ });
+
+ slice1.checkShapes(new int[] {6, 4}, new int[] {12, ILazyWriteableDataset.UNLIMITED});
+
+ slice1.checkShapes(new int[] {6, 4}, new int[] {ILazyWriteableDataset.UNLIMITED, 4});
+
+ // [6:2:-3, 2:] in (8,4) [max (12,6)] has output shape (2,3)
+ final SliceND slice2 = new SliceND(new int[] {8, 4}, new int[] {12, 6},
+ new int[] {6 , 1}, new int[] {2, 4}, new int[] {-3, 1});
- try {
- slice.checkShapes(new int[] {7, 4}, null);
- fail();
- } catch (IllegalArgumentException e) {
- System.out.println("As expected: " + e);
- }
+ slice2.checkShapes(new int[] {10, 4}, null);
- try {
- slice.checkShapes(new int[] {6, 4}, null);
- fail();
- } catch (IllegalArgumentException e) {
- System.out.println("As expected: " + e);
- }
+ slice2.checkShapes(new int[] {8, 4}, null);
- slice.checkShapes(new int[] {6, 4}, new int[] {12, ILazyWriteableDataset.UNLIMITED});
+ assertThrows(IllegalArgumentException.class, new ThrowingRunnable() {
+ @Override
+ public void run() throws Throwable {
+ slice2.checkShapes(new int[] {6, 4}, null);
+ }
+ });
- slice.checkShapes(new int[] {6, 4}, new int[] {ILazyWriteableDataset.UNLIMITED, 4});
+ assertThrows(IllegalArgumentException.class, new ThrowingRunnable() {
+ @Override
+ public void run() throws Throwable {
+ slice2.checkShapes(new int[] {5, 5}, null);
+ }
+ });
- slice = new SliceND(new int[] {8, 4}, new int[] {12, 6},
- new int[] {6 , 1}, new int[] {2, 4}, new int[] {-3, 1});
+ slice2.checkShapes(new int[] {7, 5}, new int[] {8, 4});
+ slice2.checkShapes(new int[] {5, 5}, new int[] {8, 4});
+ assertThrows(IllegalArgumentException.class, new ThrowingRunnable() {
+ @Override
+ public void run() throws Throwable {
+ // b >= m
+ slice2.checkShapes(new int[] {5, 5}, new int[] {5, 4});
+ }
+ });
- slice.checkShapes(new int[] {10, 4}, null);
+ slice2.checkShapes(new int[] {7, 3}, new int[] {8, 4});
+ assertThrows(IllegalArgumentException.class, new ThrowingRunnable() {
+ @Override
+ public void run() throws Throwable {
+ slice2.checkShapes(new int[] {7, 3}, new int[] {8, 3});
+ }
+ });
- slice.checkShapes(new int[] {8, 4}, null);
+ slice2.checkShapes(new int[] {5, 5}, new int[] {ILazyWriteableDataset.UNLIMITED, 6});
- try {
- slice.checkShapes(new int[] {7, 4}, null);
- fail();
- } catch (IllegalArgumentException e) {
- System.out.println("As expected: " + e);
- }
+ slice2.checkShapes(new int[] {6, 5}, new int[] {ILazyWriteableDataset.UNLIMITED, 6});
- try {
- slice.checkShapes(new int[] {5, 5}, null);
- fail();
- } catch (IllegalArgumentException e) {
- System.out.println("As expected: " + e);
- }
+ slice2.checkShapes(new int[] {5, 5}, new int[] {12, ILazyWriteableDataset.UNLIMITED});
- slice.checkShapes(new int[] {5, 5}, new int[] {ILazyWriteableDataset.UNLIMITED, 6});
+ slice2.checkShapes(new int[] {5, 3}, new int[] {12, ILazyWriteableDataset.UNLIMITED});
- slice.checkShapes(new int[] {5, 5}, new int[] {12, ILazyWriteableDataset.UNLIMITED});
+ final SliceND slice3 = new SliceND(null);
- try {
- slice.checkShapes(new int[] {5, 2}, new int[] {12, 3});
- fail();
- } catch (IllegalArgumentException e) {
- System.out.println("As expected: " + e);
- }
+ slice3.checkShapes(null, null);
- slice = new SliceND(null);
+ assertThrows(IllegalArgumentException.class, new ThrowingRunnable() {
+ @Override
+ public void run() throws Throwable {
+ slice3.checkShapes(new int[] {5, 5}, null);
+ }
+ });
+ }
- slice.checkShapes(null, null);
+ @Test
+ public void testSetStartStop() {
+ int length = 12;
+ int step = 1;
+ int last = length - 1;
+ int stop = 5;
+ SliceND sl;
+
+ sl = new SliceND(new int[] {length});
+ assertEquals(0, sl.getStart()[0]);
+ assertEquals(length, sl.getShape()[0]);
+
+ sl.setSlice(0, 1, null, step);
+ assertEquals(1, sl.getStart()[0]);
+ assertEquals(last, sl.getShape()[0]);
+
+ sl.setSlice(0, -1, null, step);
+ assertEquals(last, sl.getStart()[0]);
+ assertEquals(1, sl.getShape()[0]);
+
+ sl.setSlice(0, -length-1, null, step);
+ assertEquals(0, sl.getStart()[0]);
+ assertEquals(length, sl.getShape()[0]);
+
+ sl.setSlice(0, last, null, step);
+ assertEquals(last, sl.getStart()[0]);
+ assertEquals(1, sl.getShape()[0]);
+
+
+ sl.setSlice(0, last + 2, null, step);
+ assertEquals(length, sl.getStart()[0]);
+ assertEquals(0, sl.getShape()[0]);
+
+ sl.setSlice(0, 1, null, -step);
+ assertEquals(1, sl.getStart()[0]);
+ assertEquals(2, sl.getShape()[0]);
+
+ sl.setSlice(0, -1, null, -step);
+ assertEquals(last, sl.getStart()[0]);
+ assertEquals(length, sl.getShape()[0]);
+
+ sl.setSlice(0, -length-2, null, -step);
+ assertEquals(-1, sl.getStart()[0]);
+ assertEquals(0, sl.getShape()[0]);
+
+ sl.setSlice(0, last, null, -step);
+ assertEquals(last, sl.getStart()[0]);
+ assertEquals(length, sl.getShape()[0]);
+
+ sl.setSlice(0, last + 2, null, -step);
+ assertEquals(last, sl.getStart()[0]);
+ assertEquals(length, sl.getShape()[0]);
+
+ // with a stop defined
+ sl.setSlice(0, 1, stop, step);
+ assertEquals(1, sl.getStart()[0]);
+ assertEquals(stop - 1, sl.getShape()[0]);
+
+ sl.setSlice(0, -1, stop, step);
+ assertEquals(last, sl.getStart()[0]);
+ assertEquals(0, sl.getShape()[0]);
+
+ sl.setSlice(0, -length-1, stop, step);
+ assertEquals(0, sl.getStart()[0]);
+ assertEquals(stop, sl.getShape()[0]);
+
+ sl.setSlice(0, last, stop, step);
+ assertEquals(last, sl.getStart()[0]);
+ assertEquals(0, sl.getShape()[0]);
+
+ sl.setSlice(0, last + 2, stop, step);
+ assertEquals(length, sl.getStart()[0]);
+ assertEquals(0, sl.getShape()[0]);
+
+ sl.setSlice(0, last + 2, stop - 2, step);
+ assertEquals(length, sl.getStart()[0]);
+ assertEquals(0, sl.getShape()[0]);
+
+ sl.setSlice(0, null, null, step);
+ assertEquals(length, sl.getStop()[0]);
+ assertEquals(0, sl.getStart()[0]);
+ assertEquals(length, sl.getShape()[0]);
+
+ sl.setSlice(0, null, -length-1, step);
+ assertEquals(0, sl.getStop()[0]);
+ assertEquals(0, sl.getStart()[0]);
+ assertEquals(0, sl.getShape()[0]);
+
+ sl.setSlice(0, null, length+1, step);
+ assertEquals(length, sl.getStop()[0]);
+ assertEquals(length, sl.getShape()[0]);
+
+ sl.setSlice(0, 1, stop, -step);
+ assertEquals(1, sl.getStart()[0]);
+ assertEquals(0, sl.getShape()[0]);
+
+ int expected = last - stop;
+ sl.setSlice(0, -1, stop, -step);
+ assertEquals(last, sl.getStart()[0]);
+ assertEquals(expected, sl.getShape()[0]);
+
+ sl.setSlice(0, -length-1, stop, -step);
+ assertEquals(-1, sl.getStart()[0]);
+ assertEquals(0, sl.getShape()[0]);
+
+ sl.setSlice(0, last, stop, -step);
+ assertEquals(last, sl.getStart()[0]);
+ assertEquals(expected, sl.getShape()[0]);
+
+ sl.setSlice(0, last+1, stop, -step);
+ assertEquals(last, sl.getStart()[0]);
+ assertEquals(expected, sl.getShape()[0]);
+
+ sl.setSlice(0, null, null, -step);
+ assertEquals(-1, sl.getStop()[0]);
+ assertEquals(length, sl.getShape()[0]);
+
+ sl.setSlice(0, null, -length-1, -step);
+ assertEquals(-1, sl.getStop()[0]);
+ assertEquals(length, sl.getShape()[0]);
+
+ sl.setSlice(0, null, length+1, -step);
+ assertEquals(last, sl.getStop()[0]);
+ assertEquals(0, sl.getShape()[0]);
+
+ sl.setSlice(0, stop, length+1, -step);
+ assertEquals(stop, sl.getStop()[0]);
+ assertEquals(0, sl.getShape()[0]);
+
+ assertThrows(IllegalArgumentException.class, new ThrowingRunnable() {
+ @Override
+ public void run() throws Throwable {
+ new SliceND(null).setSlice(0, null, null, -2);
+ }
+ });
+ }
- try {
- slice.checkShapes(new int[] {5, 5}, null);
- fail();
- } catch (IllegalArgumentException e) {
- System.out.println("As expected: " + e);
- }
+ @Test
+ public void testCreateSlice() {
+ assertThrows(IllegalArgumentException.class, new ThrowingRunnable() {
+ @Override
+ public void run() throws Throwable {
+ SliceND.createSlice(null, null, null, null, null);
+ }
+ });
+
+ assertThrows(IllegalArgumentException.class, new ThrowingRunnable() {
+ @Override
+ public void run() throws Throwable {
+ SliceND.createSlice(new int[0], new int[1], null, null, null);
+ }
+ });
+
+ assertThrows(IllegalArgumentException.class, new ThrowingRunnable() {
+ @Override
+ public void run() throws Throwable {
+ SliceND.createSlice(new int[1], null, new int[2], null, null);
+ }
+ });
+
+ assertThrows(IllegalArgumentException.class, new ThrowingRunnable() {
+ @Override
+ public void run() throws Throwable {
+ SliceND.createSlice(new int[1], null, null, new int[2], null);
+ }
+ });
+
+ assertThrows(IllegalArgumentException.class, new ThrowingRunnable() {
+ @Override
+ public void run() throws Throwable {
+ SliceND.createSlice(new int[1], null, null, null, new int[2]);
+ }
+ });
+
+ SliceND s = SliceND.createSlice(new int[0], null, null, null, null);
+ assertEquals(0, s.getShape().length);
+
+ LazyDataset lazy = LazyDataset.createLazyDataset(DatasetFactory.createRange(12));
+ s = SliceND.createSlice(lazy, new int[] {2}, new int[] {8});
+ assertArrayEquals(new int[] {6}, s.getShape());
+
+ lazy = new LazyDynamicDataset(lazy.getLoader(), lazy.getName(), lazy.getElementsPerItem(), DoubleDataset.class, lazy.getShape(), new int[] {20});
+ s = SliceND.createSlice(lazy, new int[] {2}, new int[] {8});
+ assertArrayEquals(new int[] {6}, s.getShape());
}
}
diff --git a/org.eclipse.january.test/src/org/eclipse/january/dataset/SliceTest.java b/org.eclipse.january.test/src/org/eclipse/january/dataset/SliceTest.java
index 4a2e6196..60d9e626 100644
--- a/org.eclipse.january.test/src/org/eclipse/january/dataset/SliceTest.java
+++ b/org.eclipse.january.test/src/org/eclipse/january/dataset/SliceTest.java
@@ -11,13 +11,15 @@
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertThrows;
import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
import org.junit.Test;
+import org.junit.function.ThrowingRunnable;
public class SliceTest {
-
+
@Test
public void testSlice() {
Slice sl;
@@ -25,6 +27,8 @@ public void testSlice() {
assertEquals(":", sl.toString());
sl = new Slice(12);
assertEquals(":12", sl.toString());
+ sl = sl.clone();
+ assertEquals(":12", sl.toString());
sl = new Slice(1, 12);
assertEquals("1:12", sl.toString());
sl = new Slice(0, 12);
@@ -51,6 +55,8 @@ public void testSlice() {
assertEquals("::3", sl.toString());
sl = new Slice(null, null, 3).setLength(12);
assertEquals("::3", sl.toString());
+ sl = new Slice(null, null, null).setLength(12);
+ assertEquals(":", sl.toString());
sl = new Slice(11, 12);
assertEquals("11", sl.toString());
sl = new Slice(0, 1);
@@ -103,18 +109,18 @@ public void testSliceSteps() {
sl = new Slice(6, 0, -2).setLength(12);
assertEquals(3, sl.getNumSteps());
- try {
- sl = new Slice();
- sl.getNumSteps();
- fail("No exception thrown");
- } catch (IllegalStateException ise) {
- // passed
- } catch (Exception e) {
- fail("Wrong exception type passed, this should give an IllegalStateException");
- }
+ assertThrows(IllegalStateException.class, new ThrowingRunnable() {
+ @Override
+ public void run() throws Throwable {
+ Slice sa = new Slice();
+ sa.getNumSteps();
+ }
+ });
sl = new Slice(12);
assertEquals(12, sl.getNumSteps());
+ sl = new Slice(null, 12);
+ assertEquals(12, sl.getNumSteps());
sl = new Slice(1, 12);
assertEquals(11, sl.getNumSteps());
sl = new Slice(12, 1);
@@ -134,15 +140,13 @@ public void testSliceSteps() {
sl = new Slice(null, 11, 1);
assertEquals(11, sl.getNumSteps());
- try {
- sl = new Slice(11, null, -1);
- sl.getNumSteps();
- fail("No exception thrown");
- } catch (IllegalStateException ise) {
- // passed
- } catch (Exception e) {
- fail("Wrong exception type passed, this should give an IllegalStateException");
- }
+ assertThrows(IllegalStateException.class, new ThrowingRunnable() {
+ @Override
+ public void run() throws Throwable {
+ Slice sa = new Slice(null, 1, -1);
+ sa.getNumSteps();
+ }
+ });
sl = new Slice(null, null, 15).setLength(4096);
assertEquals(274, sl.getNumSteps());
@@ -186,123 +190,212 @@ public void testGetter() {
Slice sl;
sl = new Slice().setLength(12);
- assertEquals(null, sl.getStart());
- assertEquals(null, sl.getStop());
+ assertNull(sl.getStart());
+ assertNull(sl.getStop());
assertEquals(1, sl.getStep());
assertEquals(12, sl.getLength());
sl = new Slice(10).setLength(12);
- assertEquals(null, sl.getStart());
+ assertNull(sl.getStart());
assertEquals(10, (int) sl.getStop());
assertEquals(1, sl.getStep());
assertEquals(12, sl.getLength());
}
@Test
- public void testSetter() {
+ public void testSetStartStop() {
+ int length = 12;
+ int step = 1;
+ int last = length - 1;
+ int stop = 5;
Slice sl;
- sl = new Slice().setLength(12);
+ sl = new Slice().setLength(length);
+ sl.setStep(step);
+ sl.setStart(null);
+ assertNull(sl.getStart());
+ assertEquals(length, sl.getNumSteps());
+
sl.setStart(1);
assertEquals(1, (int) sl.getStart());
- sl.setStop(10);
- assertEquals(10, (int) sl.getStop());
- sl.setStep(2);
- assertEquals(2, sl.getStep());
- sl.setLength(11);
- assertEquals(11, sl.getLength());
+ assertEquals(last, sl.getNumSteps());
+
+ sl.setStart(-1);
+ assertEquals(last, (int) sl.getStart());
+ assertEquals(1, sl.getNumSteps());
+
+ sl.setStart(-length-1);
+ assertEquals(0, (int) sl.getStart());
+ assertEquals(length, sl.getNumSteps());
+
+ sl.setStart(last);
+ assertEquals(last, (int) sl.getStart());
+ assertEquals(1, sl.getNumSteps());
+
+ sl.setStart(last + 2);
+ assertEquals(length, (int) sl.getStart());
+ assertEquals(0, sl.getNumSteps());
+
+ sl.setStep(-step);
+ sl.setStart(1);
+ assertEquals(1, (int) sl.getStart());
+ assertEquals(2, sl.getNumSteps());
+
+ sl.setStart(-1);
+ assertEquals(last, (int) sl.getStart());
+ assertEquals(length, sl.getNumSteps());
+
+ sl.setStart(-length-2);
+ assertEquals(-1, (int) sl.getStart());
+ assertEquals(0, sl.getNumSteps());
+
+ sl.setStart(last);
+ assertEquals(last, (int) sl.getStart());
+ assertEquals(length, sl.getNumSteps());
+ sl.setStart(last + 2);
+ assertEquals(last, (int) sl.getStart());
+ assertEquals(length, sl.getNumSteps());
+
+ // with a stop defined
+ sl.setStep(step);
+ sl.setStart(1);
+ sl.setStop(stop);
+ assertEquals(1, (int) sl.getStart());
+ assertEquals(stop - 1, sl.getNumSteps());
+
+ sl.setStart(-1);
+ assertEquals(stop, (int) sl.getStart());
+ assertEquals(0, sl.getNumSteps());
+
+ sl.setStart(-length-1);
+ assertEquals(0, (int) sl.getStart());
+ assertEquals(stop, sl.getNumSteps());
+
+ sl.setStart(last);
+ assertEquals(stop, (int) sl.getStart());
+ assertEquals(0, sl.getNumSteps());
+
+ sl.setStart(last + 2);
+ assertEquals(stop, (int) sl.getStart());
+ assertEquals(0, sl.getNumSteps());
+
+ sl.setStop(stop - 2);
+ assertEquals(stop, (int) sl.getStart());
+ assertEquals(0, sl.getNumSteps());
+
+ sl.setStart(null);
+ sl.setStop(null);
+ assertNull(sl.getStop());
+ assertEquals(length, sl.getNumSteps());
+
+ sl.setStop(-length-1);
+ assertEquals(0, (int) sl.getStop());
+ assertEquals(0, sl.getNumSteps());
+
+ sl.setStop(length + 1);
+ assertEquals(length, (int) sl.getStop());
+ assertEquals(length, sl.getNumSteps());
+
+ sl.setStop(stop);
+ sl.setStep(-step);
+ sl.setStart(1);
+ assertEquals(stop, (int) sl.getStart());
+ assertEquals(0, sl.getNumSteps());
+
+ sl.setStart(-1);
+ assertEquals(last, (int) sl.getStart());
+ int expected = last - stop;
+ assertEquals(expected, sl.getNumSteps());
+
+ sl.setStart(-length-1);
+ assertEquals(stop, (int) sl.getStart());
+ assertEquals(0, sl.getNumSteps());
+
+ sl.setStart(last);
+ assertEquals(last, (int) sl.getStart());
+ assertEquals(expected, sl.getNumSteps());
+
+ sl.setStart(last + 2);
+ assertEquals(last, (int) sl.getStart());
+ assertEquals(expected, sl.getNumSteps());
+
+ sl.setStart(null);
+ sl.setStop(null);
+ assertNull(sl.getStop());
+ assertEquals(length, sl.getNumSteps());
+
+ sl.setStop(-length-4);
+ assertEquals(-1, (int) sl.getStop());
+ assertEquals(length, sl.getNumSteps());
+
+ sl.setStop(-length-1);
+ assertEquals(-1, (int) sl.getStop());
+ assertEquals(length, sl.getNumSteps());
+
+ sl.setStop(length + 1);
+ assertEquals(last, (int) sl.getStop());
+ assertEquals(0, sl.getNumSteps());
+
+ sl.setStop(null);
+ sl.setStart(stop);
+ sl.setStop(length + 1);
+ assertEquals(stop, (int) sl.getStop());
+ assertEquals(0, sl.getNumSteps());
+ }
+
+ @Test
+ public void testSetLengthStep() {
+ Slice sl;
sl = new Slice().setLength(12);
- sl.setStart(3);
sl.setStop(10);
- try {
- sl.setLength(9);
- fail("No exception thrown");
- } catch (IllegalArgumentException iae) {
- // passed
- } catch (Exception e) {
- fail("Wrong exception type passed, this should give an IllegalArgumentException");
- }
-
- try {
- sl.setStart(11);
- fail("No exception thrown");
- } catch (IllegalArgumentException iae) {
- // passed
- } catch (Exception e) {
- fail("Wrong exception type passed, this should give an IllegalArgumentException");
- }
+ final Slice sa = sl;
+ assertThrows(IllegalArgumentException.class, new ThrowingRunnable() {
+ public void run() throws Throwable {
+ sa.setLength(9);
+ }
+ });
sl = new Slice().setLength(12);
sl.setStart(3);
sl.setStop(10);
- try {
- sl.setLength(9);
- fail("No exception thrown");
- } catch (IllegalArgumentException iae) {
- // passed
- } catch (Exception e) {
- fail("Wrong exception type passed, this should give an IllegalArgumentException");
- }
-
- try {
- sl.setStart(11);
- fail("No exception thrown");
- } catch (IllegalArgumentException iae) {
- // passed
- } catch (Exception e) {
- fail("Wrong exception type passed, this should give an IllegalArgumentException");
- }
- try {
- sl.setStop(0);
- fail("No exception thrown");
- } catch (IllegalArgumentException iae) {
- // passed
- } catch (Exception e) {
- fail("Wrong exception type passed, this should give an IllegalArgumentException");
- }
+ assertEquals(10, (int) sl.getStop());
+ assertEquals(7, sl.getNumSteps());
+ final Slice sb = sl;
+ assertThrows(IllegalArgumentException.class, new ThrowingRunnable() {
+ public void run() throws Throwable {
+ sb.setLength(9);
+ }
+ });
sl = new Slice().setLength(12);
sl.setStep(-2);
sl.setStart(10);
+ assertEquals(10, (int) sl.getStart());
+ assertEquals(6, sl.getNumSteps());
sl.setStop(3);
- try {
- sl.setLength(9);
- fail("No exception thrown");
- } catch (IllegalArgumentException iae) {
- // passed
- } catch (Exception e) {
- fail("Wrong exception type passed, this should give an IllegalArgumentException");
- }
-
- try {
- sl.setStart(2);
- fail("No exception thrown");
- } catch (IllegalArgumentException iae) {
- // passed
- } catch (Exception e) {
- fail("Wrong exception type passed, this should give an IllegalArgumentException");
- }
- try {
- sl.setStop(10);
- fail("No exception thrown");
- } catch (IllegalArgumentException iae) {
- // passed
- } catch (Exception e) {
- fail("Wrong exception type passed, this should give an IllegalArgumentException");
- }
-
- try {
- sl.setStep(0);
- fail("No exception thrown");
- } catch (IllegalArgumentException iae) {
- // passed
- } catch (Exception e) {
- fail("Wrong exception type passed, this should give an IllegalArgumentException");
- }
+ assertEquals(4, sl.getNumSteps());
+ final Slice sc = sl;
+ assertThrows(IllegalArgumentException.class, new ThrowingRunnable() {
+ public void run() throws Throwable {
+ sc.setLength(9);
+ }
+ });
+
+ sl.setStart(10);
+ sl.setStop(10);
+ assertEquals(10, (int) sl.getStop());
+ assertEquals(0, sl.getNumSteps());
+
+ final Slice sd = sl;
+ assertThrows(IllegalArgumentException.class, new ThrowingRunnable() {
+ public void run() throws Throwable {
+ sd.setStep(0);
+ }
+ });
sl = new Slice(10).setLength(12);
- assertEquals(null, sl.getStart());
+ assertNull(sl.getStart());
assertEquals(10, (int) sl.getStop());
assertEquals(1, sl.getStep());
assertEquals(12, sl.getLength());
@@ -331,15 +424,12 @@ public void testSliceEnd() {
assertEquals(11, sl.getEnd());
sl = new Slice(1, 12);
assertEquals(11, sl.getEnd());
- try {
- sl = new Slice(12, 1);
- sl.getEnd();
- fail("No exception thrown");
- } catch (IllegalStateException ise) {
- // passed
- } catch (Exception e) {
- fail("Wrong exception type passed, this should give an IllegalStateException");
- }
+ final Slice sa = new Slice(12, 1);
+ assertThrows(IllegalStateException.class, new ThrowingRunnable() {
+ public void run() throws Throwable {
+ sa.getEnd();
+ }
+ });
sl = new Slice(1, 12, 2);
assertEquals(11, sl.getEnd());
sl = new Slice(1, 12, 12);
@@ -353,24 +443,18 @@ public void testSliceEnd() {
sl = new Slice(null, 12, 2);
assertEquals(10, sl.getEnd());
- try {
- sl = new Slice(null, 12, -2);
- sl.getEnd();
- fail("No exception thrown");
- } catch (IllegalStateException ise) {
- // passed
- } catch (Exception e) {
- fail("Wrong exception type passed, this should give an IllegalStateException");
- }
- try {
- sl = new Slice(null, null, -2);
- sl.getEnd();
- fail("No exception thrown");
- } catch (IllegalStateException ise) {
- // passed
- } catch (Exception e) {
- fail("Wrong exception type passed, this should give an IllegalStateException");
- }
+ final Slice sb = new Slice(null, 12, -2);
+ assertThrows(IllegalStateException.class, new ThrowingRunnable() {
+ public void run() throws Throwable {
+ sb.getEnd();
+ }
+ });
+ final Slice sc = new Slice(null, null, -2);
+ assertThrows(IllegalStateException.class, new ThrowingRunnable() {
+ public void run() throws Throwable {
+ sc.getEnd();
+ }
+ });
}
@Test
@@ -397,44 +481,103 @@ public void testFlip() {
assertEquals("11", sl.toString());
assertEquals("11", sl.flip().toString());
sl = new Slice(1, 12, 3).flip();
- assertEquals("10:-2:-3", sl.toString());
- assertEquals("1:13:3", sl.flip().toString());
+ assertEquals("10:0:-3", sl.toString());
+ assertEquals("1:11:3", sl.flip().toString());
sl = new Slice(11, 12, 3).flip();
assertEquals("11", sl.toString());
assertEquals("11", sl.flip().toString());
+
sl = new Slice().setLength(12);
sl.flip();
- assertEquals(null, sl.getStart());
- assertEquals(null, sl.getStop());
+ assertNull(sl.getStart());
+ assertNull(sl.getStop());
assertEquals(-1, sl.getStep());
- assertEquals(12, sl.getLength());
+ assertEquals(12, sl.getNumSteps());
sl = new Slice(10).setLength(12);
sl.flip();
assertEquals(9, (int) sl.getStart());
- assertEquals(null, sl.getStop());
+ assertNull(sl.getStop());
assertEquals(-1, sl.getStep());
- assertEquals(12, sl.getLength());
+ assertEquals(10, sl.getNumSteps());
+
+ sl = new Slice(null, 10).setLength(12);
+ sl.flip();
+ assertEquals(9, (int) sl.getStart());
+ assertNull(sl.getStop());
+ assertEquals(-1, sl.getStep());
+ assertEquals(10, sl.getNumSteps());
+
+ sl = new Slice(null, 4, -1).setLength(12);
+ sl.flip();
+ assertEquals(5, (int) sl.getStart());
+ assertNull(sl.getStop());
+ assertEquals(1, sl.getStep());
+ assertEquals(7, sl.getNumSteps());
+
+ sl = new Slice(3, 10).setLength(12);
+ sl.flip();
+ assertEquals(9, (int) sl.getStart());
+ assertEquals(2, (int) sl.getStop());
+ assertEquals(-1, sl.getStep());
+ assertEquals(7, sl.getNumSteps());
+
+ sl = new Slice(9, 2, -1).setLength(12);
+ sl.flip();
+ assertEquals(3, (int) sl.getStart());
+ assertEquals(10, (int) sl.getStop());
+ assertEquals(1, sl.getStep());
+ assertEquals(7, sl.getNumSteps());
}
@Test
public void testConverters() {
- int[] start = new int[1];
- int[] stop = new int[1];
- int[] step = new int[1];
+ final int[] start = new int[1];
+ final int[] stop = new int[1];
+ final int[] step = new int[1];
int[] shape = new int[] {12};
+ Slice.convertFromSlice(null, shape, start, stop, step);
+ assertEquals(0, start[0]);
+ assertEquals(12, stop[0]);
+ assertEquals(1, step[0]);
+
Slice.convertFromSlice(new Slice[] {null}, shape, start, stop, step);
assertEquals(0, start[0]);
assertEquals(12, stop[0]);
assertEquals(1, step[0]);
+ Slice.convertFromSlice(new Slice[] {new Slice(null,11,2)}, shape, start, stop, step);
+ assertEquals(0, start[0]);
+ assertEquals(11, stop[0]);
+ assertEquals(2, step[0]);
+
+ Slice.convertFromSlice(new Slice[] {new Slice(null,null,2)}, shape, start, stop, step);
+ assertEquals(0, start[0]);
+ assertEquals(12, stop[0]);
+ assertEquals(2, step[0]);
+
+ Slice.convertFromSlice(new Slice[] {new Slice(null,6,-2)}, shape, start, stop, step);
+ assertEquals(11, start[0]);
+ assertEquals(6, stop[0]);
+ assertEquals(-2, step[0]);
+
+ Slice.convertFromSlice(new Slice[] {new Slice(null,null,-2)}, shape, start, stop, step);
+ assertEquals(11, start[0]);
+ assertEquals(-1, stop[0]);
+ assertEquals(-2, step[0]);
+
Slice.convertFromSlice(new Slice[] {new Slice(1,11,2).setLength(12)}, shape, start, stop, step);
assertEquals(1, start[0]);
assertEquals(11, stop[0]);
assertEquals(2, step[0]);
+ Slice.convertFromSlice(new Slice[] {new Slice(3, 6).setLength(12), new Slice().setLength(12)}, shape, start, stop, step);
+ assertEquals(3, start[0]);
+ assertEquals(6, stop[0]);
+ assertEquals(1, step[0]);
+
Slice.convertFromSlice(new Slice[] {new Slice().setLength(12)}, shape, start, stop, step);
assertEquals(0, start[0]);
assertEquals(12, stop[0]);
@@ -446,29 +589,51 @@ public void testConverters() {
assertEquals(12, (int) sl[0].getStop());
assertEquals(1, sl[0].getStep());
+ assertThrows(IllegalArgumentException.class, new ThrowingRunnable() {
+ public void run() throws Throwable {
+ Slice.convertToSlice(start, new int[0], step);
+ }
+ });
+
+ assertThrows(IllegalArgumentException.class, new ThrowingRunnable() {
+ public void run() throws Throwable {
+ Slice.convertToSlice(start, stop, new int[0]);
+ }
+ });
+
sl = Slice.convertFromString("[:,:,:,:]");
assertEquals(4, sl.length);
assertEquals(0, (int) sl[0].getStart());
assertEquals(0, (int) sl[1].getStart());
assertEquals(0, (int) sl[2].getStart());
assertEquals(0, (int) sl[3].getStart());
- assertEquals(null, sl[0].getStop());
- assertEquals(null, sl[1].getStop());
- assertEquals(null, sl[2].getStop());
- assertEquals(null, sl[3].getStop());
+ assertNull(sl[0].getStop());
+ assertNull(sl[1].getStop());
+ assertNull(sl[2].getStop());
+ assertNull(sl[3].getStop());
assertEquals(1, sl[0].getStep());
assertEquals(1, sl[1].getStep());
assertEquals(1, sl[2].getStep());
assertEquals(1, sl[3].getStep());
+ sl = Slice.convertFromString("[7]");
+ assertEquals(7, (int) sl[0].getStart());
+ assertEquals(8, (int) sl[0].getStop());
+ assertEquals(1, sl[0].getStep());
+
+ sl = Slice.convertFromString("[7:12]");
+ assertEquals(7, (int) sl[0].getStart());
+ assertEquals(12, (int) sl[0].getStop());
+ assertEquals(1, sl[0].getStep());
+
sl = Slice.convertFromString("[::]");
assertEquals(0, (int) sl[0].getStart());
- assertEquals(null, sl[0].getStop());
+ assertNull(sl[0].getStop());
assertEquals(1, sl[0].getStep());
sl = Slice.convertFromString("[1::]");
assertEquals(1, (int) sl[0].getStart());
- assertEquals(null, sl[0].getStop());
+ assertNull(sl[0].getStop());
assertEquals(1, sl[0].getStep());
sl = Slice.convertFromString("[:3:]");
@@ -478,7 +643,7 @@ public void testConverters() {
sl = Slice.convertFromString("[::-1]");
assertEquals(0, (int) sl[0].getStart());
- assertEquals(null, sl[0].getStop());
+ assertNull(sl[0].getStop());
assertEquals(-1, sl[0].getStep());
sl = Slice.convertFromString("[10:2:-2]");
@@ -505,112 +670,92 @@ public void testShifts() {
@Test
public void testPos() {
- Slice sl;
-
- sl = new Slice(0, 10, 1);
- assertEquals(0, sl.getPosition(0));
- assertEquals(5, sl.getPosition(5));
- try {
- sl.getPosition(-1);
- fail("No exception thrown");
- } catch (IllegalArgumentException iae) {
- // passed
- } catch (Exception e) {
- fail("Wrong exception type passed, this should give an IllegalArgumentException");
- }
- try {
- sl.getPosition(10);
- fail("No exception thrown");
- } catch (IllegalArgumentException iae) {
- // passed
- } catch (Exception e) {
- fail("Wrong exception type passed, this should give an IllegalArgumentException");
- }
-
- sl = new Slice(5, 2, -1);
- assertEquals(5, sl.getPosition(0));
- assertEquals(3, sl.getPosition(2));
- try {
- sl.getPosition(3);
- fail("No exception thrown");
- } catch (IllegalArgumentException iae) {
- // passed
- } catch (Exception e) {
- fail("Wrong exception type passed, this should give an IllegalArgumentException");
- }
-
- sl = new Slice(null, null, 1).setLength(12);
- assertEquals(0, sl.getPosition(0));
- assertEquals(3, sl.getPosition(3));
- try {
- sl.getPosition(12);
- fail("No exception thrown");
- } catch (IllegalArgumentException iae) {
- // passed
- } catch (Exception e) {
- fail("Wrong exception type passed, this should give an IllegalArgumentException");
- }
-
- sl = new Slice(null, null, -1).setLength(12);
- assertEquals(11, sl.getPosition(0));
- assertEquals(8, sl.getPosition(3));
- try {
- sl.getPosition(12);
- fail("No exception thrown");
- } catch (IllegalArgumentException iae) {
- // passed
- } catch (Exception e) {
- fail("Wrong exception type passed, this should give an IllegalArgumentException");
- }
-
- sl = new Slice(null, null, -2).setLength(12);
- assertEquals(11, sl.getPosition(0));
- assertEquals(5, sl.getPosition(3));
- assertEquals(1, sl.getPosition(5));
- try {
- sl.getPosition(6);
- fail("No exception thrown");
- } catch (IllegalArgumentException iae) {
- // passed
- } catch (Exception e) {
- fail("Wrong exception type passed, this should give an IllegalArgumentException");
- }
-
- sl = new Slice(6, null, -2).setLength(12);
- assertEquals(6, sl.getPosition(0));
- assertEquals(0, sl.getPosition(3));
- try {
- sl.getPosition(4);
- fail("No exception thrown");
- } catch (IllegalArgumentException iae) {
- // passed
- } catch (Exception e) {
- fail("Wrong exception type passed, this should give an IllegalArgumentException");
- }
-
- sl = new Slice(6, 1, -2).setLength(12);
- assertEquals(6, sl.getPosition(0));
- assertEquals(2, sl.getPosition(2));
- try {
- sl.getPosition(3);
- fail("No exception thrown");
- } catch (IllegalArgumentException iae) {
- // passed
- } catch (Exception e) {
- fail("Wrong exception type passed, this should give an IllegalArgumentException");
- }
-
- sl = new Slice(6, 0, -2).setLength(12);
- assertEquals(6, sl.getPosition(0));
- assertEquals(2, sl.getPosition(2));
- try {
- sl.getPosition(3);
- fail("No exception thrown");
- } catch (IllegalArgumentException iae) {
- // passed
- } catch (Exception e) {
- fail("Wrong exception type passed, this should give an IllegalArgumentException");
- }
+ final Slice sa = new Slice(0, 10, 1);
+ assertEquals(0, sa.getPosition(0));
+ assertEquals(5, sa.getPosition(5));
+ assertThrows(IllegalArgumentException.class, new ThrowingRunnable() {
+ public void run() throws Throwable {
+ sa.getPosition(-1);
+ }
+ });
+ assertThrows(IllegalArgumentException.class, new ThrowingRunnable() {
+ public void run() throws Throwable {
+ sa.getPosition(10);
+ }
+ });
+
+ final Slice sb = new Slice(5, 2, -1);
+ assertEquals(5, sb.getPosition(0));
+ assertEquals(3, sb.getPosition(2));
+ assertThrows(IllegalArgumentException.class, new ThrowingRunnable() {
+ public void run() throws Throwable {
+ sb.getPosition(3);
+ }
+ });
+
+ final Slice sc = new Slice(null, null, 1).setLength(12);
+ assertEquals(0, sc.getPosition(0));
+ assertEquals(3, sc.getPosition(3));
+ assertThrows(IllegalArgumentException.class, new ThrowingRunnable() {
+ public void run() throws Throwable {
+ sc.getPosition(12);
+ }
+ });
+
+ final Slice sd = new Slice(null, null, -1).setLength(12);
+ assertEquals(11, sd.getPosition(0));
+ assertEquals(8, sd.getPosition(3));
+ assertThrows(IllegalArgumentException.class, new ThrowingRunnable() {
+ public void run() throws Throwable {
+ sd.getPosition(12);
+ }
+ });
+
+ sd.setLength(-1);
+ assertThrows(IllegalStateException.class, new ThrowingRunnable() {
+ public void run() throws Throwable {
+ sd.getPosition(1);
+ }
+ });
+ sd.setStart(12);
+ assertEquals(9, sd.getPosition(3));
+
+ final Slice se = new Slice(null, null, -2).setLength(12);
+ assertEquals(11, se.getPosition(0));
+ assertEquals(5, se.getPosition(3));
+ assertEquals(1, se.getPosition(5));
+ assertThrows(IllegalArgumentException.class, new ThrowingRunnable() {
+ public void run() throws Throwable {
+ se.getPosition(6);
+ }
+ });
+
+ final Slice sf = new Slice(6, null, -2).setLength(12);
+ assertEquals(6, sf.getPosition(0));
+ assertEquals(0, sf.getPosition(3));
+ assertThrows(IllegalArgumentException.class, new ThrowingRunnable() {
+ public void run() throws Throwable {
+ sf.getPosition(4);
+ }
+ });
+
+ final Slice sg = new Slice(6, 1, -2).setLength(12);
+ assertEquals(6, sg.getPosition(0));
+ assertEquals(2, sg.getPosition(2));
+ assertThrows(IllegalArgumentException.class, new ThrowingRunnable() {
+ public void run() throws Throwable {
+ sg.getPosition(3);
+ }
+ });
+
+ final Slice sh = new Slice(6, 0, -2).setLength(12);
+ assertEquals(6, sh.getPosition(0));
+ assertEquals(2, sh.getPosition(2));
+ assertThrows(IllegalArgumentException.class, new ThrowingRunnable() {
+ public void run() throws Throwable {
+ sh.getPosition(3);
+ }
+ });
}
@Test
@@ -624,4 +769,51 @@ public void testSetZeroLength() {
assertEquals(0, s.getNumSteps());
}
+
+ @Test
+ public void testCreateStrings() {
+ assertEquals("", Slice.createString());
+ assertEquals("", Slice.createString((Slice[]) null));
+ assertEquals(":", Slice.createString(new Slice[1]));
+ assertEquals(":", Slice.createString(new Slice()));
+ assertEquals(":4", Slice.createString(new Slice(4)));
+ assertEquals("4:", Slice.createString(new Slice(4, null)));
+ assertEquals("4:7", Slice.createString(new Slice(4, 7).setLength(12)));
+ assertEquals("4", Slice.createString(new Slice(4, 5).setLength(12)));
+ assertEquals("", Slice.createString(new int[0], new int[] {0}, new int[] {12}, new int[] {1}));
+ assertEquals(":", Slice.createString(new int[] {12}, new int[] {0}, new int[] {12}, new int[] {1}));
+ assertEquals("4:", Slice.createString(new int[] {12}, new int[] {4}, new int[] {12}, new int[] {1}));
+ assertEquals("4:7", Slice.createString(new int[] {12}, new int[] {4}, new int[] {7}, new int[] {1}));
+ assertEquals("4", Slice.createString(new int[] {12}, new int[] {4}, new int[] {5}, new int[] {1}));
+ assertEquals(":", Slice.createString(new int[] {12}, null, null, null));
+ assertEquals("::-1", Slice.createString(new int[] {12}, null, null, new int[] {-1}));
+ }
+
+ @Test
+ public void testIsSliceComplete() {
+ Slice s = new Slice();
+
+ assertTrue(s.isSliceComplete());
+ s.setStep(-1);
+ assertTrue(s.isSliceComplete());
+ s.setStep(2);
+ assertFalse(s.isSliceComplete());
+ s.setStep(-2);
+ assertFalse(s.isSliceComplete());
+ s.setStep(1);
+ s.setStart(4);
+ assertFalse(s.isSliceComplete());
+ s.setStart(null);
+ s.setStop(12);
+ assertFalse(s.isSliceComplete());
+ s.setStop(null);
+
+ s.setStart(4);
+ s.setLength(9);
+ assertFalse(s.isSliceComplete());
+ s.setStart(null);
+ assertTrue(s.isSliceComplete());
+ s.setStart(0);
+ assertTrue(s.isSliceComplete());
+ }
}
diff --git a/org.eclipse.january/pom.xml b/org.eclipse.january/pom.xml
index b2f66e35..9d3433fd 100644
--- a/org.eclipse.january/pom.xml
+++ b/org.eclipse.january/pom.xml
@@ -99,7 +99,7 @@
https://commons.apache.org/proper/commons-math/javadocs/api-3.5/
https://unitsofmeasurement.github.io/unit-api/site/apidocs/
https://www.slf4j.org/apidocs/
- https://junit.org/junit4/javadoc/4.12/
+ https://junit.org/junit4/javadoc/4.13/