Skip to content

Commit

Permalink
bytedeco#391 Add unit test for HyperslabIndex
Browse files Browse the repository at this point in the history
  • Loading branch information
matteodg committed May 3, 2020
1 parent 32132d3 commit a60d5a4
Showing 1 changed file with 143 additions and 71 deletions.
214 changes: 143 additions & 71 deletions src/test/java/org/bytedeco/javacpp/indexer/HyperslabIndexTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,114 +21,186 @@
*/
package org.bytedeco.javacpp.indexer;

import org.junit.BeforeClass;
import org.junit.Test;

import static org.bytedeco.javacpp.indexer.Index.create;
import static org.junit.Assert.assertEquals;

public class HyperslabIndexTest {

private static float[] ARRAY;
private static final FloatIndexer INDEXER_1D;
private static final FloatIndexer INDEXER_2D;
private static final FloatIndexer INDEXER_3D;

@BeforeClass
public static void beforeClass() {
ARRAY = new float[12 * 10];
static {
float[] array = new float[12 * 10];
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
ARRAY[i * 10 + j] = i * 10f + j;
array[i * 10 + j] = i * 10f + j;
}
}
for (int i = 11; i < 12; i++) {
for (int j = 0; j < 10; j++) {
ARRAY[i * 10 + j] = -1f;
array[i * 10 + j] = -1f;
}
}
INDEXER_1D = FloatIndexer.create(array, HyperslabIndex.create(
new long[]{120}, // size
new long[]{1}, // offset
new long[]{4}, // stride
new long[]{2}, // count
new long[]{3} // block
));
INDEXER_2D = FloatIndexer.create(array, HyperslabIndex.create(
new long[]{12, 10}, // size
new long[]{1, 1}, // offset
new long[]{4, 3}, // stride
new long[]{2, 3}, // count
new long[]{3, 2} // block
));
INDEXER_3D = FloatIndexer.create(new float[]{
1, 2, 3,
4, 5, 6,
//
7, 8, 9,
10, 11, 12
}, HyperslabIndex.create(
new long[]{2, 2, 3}, // size
new long[]{0, 0, 1}, // offset
new long[]{1, 1, 1}, // stride
new long[]{1, 1, 1}, // count
new long[]{2, 1, 1} // block
));
}

@Test
public void testIndexI() {
long[] sizes = new long[]{120};
Index index = create(
sizes,
new long[]{1},
new long[]{4},
new long[]{2},
new long[]{3}
);
FloatIndexer indexer1d = FloatIndexer.create(ARRAY, index);

assertEquals(1f, indexer1d.get(0), 0f);
assertEquals(2f, indexer1d.get(1), 0f);
assertEquals(3f, indexer1d.get(2), 0f);
assertEquals(5f, indexer1d.get(3), 0f);
assertEquals(6f, indexer1d.get(4), 0f);
assertEquals(7f, indexer1d.get(5), 0f);
assertEquals(1f, INDEXER_1D.get(0), 0f);
assertEquals(2f, INDEXER_1D.get(1), 0f);
assertEquals(3f, INDEXER_1D.get(2), 0f);
assertEquals(5f, INDEXER_1D.get(3), 0f);
assertEquals(6f, INDEXER_1D.get(4), 0f);
assertEquals(7f, INDEXER_1D.get(5), 0f);
}

@Test
public void testIndexIJ() {
long[] sizes = new long[]{12, 10};
Index index = create(
sizes,
new long[]{1, 1},
new long[]{4, 3},
new long[]{2, 3},
new long[]{3, 2}
);

FloatIndexer indexer2d = FloatIndexer.create(ARRAY, index);

assertEquals(11f, indexer2d.get(0, 0), 0f);
assertEquals(21f, indexer2d.get(1, 0), 0f);
assertEquals(31f, indexer2d.get(2, 0), 0f);
assertEquals(51f, indexer2d.get(3, 0), 0f);
assertEquals(61f, indexer2d.get(4, 0), 0f);
assertEquals(71f, indexer2d.get(5, 0), 0f);
assertEquals(11f, INDEXER_2D.get(0, 0), 0f);
assertEquals(21f, INDEXER_2D.get(1, 0), 0f);
assertEquals(31f, INDEXER_2D.get(2, 0), 0f);
assertEquals(51f, INDEXER_2D.get(3, 0), 0f);
assertEquals(61f, INDEXER_2D.get(4, 0), 0f);
assertEquals(71f, INDEXER_2D.get(5, 0), 0f);
//
assertEquals(12f, indexer2d.get(0, 1), 0f);
assertEquals(22f, indexer2d.get(1, 1), 0f);
assertEquals(32f, indexer2d.get(2, 1), 0f);
assertEquals(52f, indexer2d.get(3, 1), 0f);
assertEquals(62f, indexer2d.get(4, 1), 0f);
assertEquals(72f, indexer2d.get(5, 1), 0f);
assertEquals(12f, INDEXER_2D.get(0, 1), 0f);
assertEquals(22f, INDEXER_2D.get(1, 1), 0f);
assertEquals(32f, INDEXER_2D.get(2, 1), 0f);
assertEquals(52f, INDEXER_2D.get(3, 1), 0f);
assertEquals(62f, INDEXER_2D.get(4, 1), 0f);
assertEquals(72f, INDEXER_2D.get(5, 1), 0f);
//
//
assertEquals(14f, indexer2d.get(0, 2), 0f);
assertEquals(24f, indexer2d.get(1, 2), 0f);
assertEquals(34f, indexer2d.get(2, 2), 0f);
assertEquals(54f, indexer2d.get(3, 2), 0f);
assertEquals(64f, indexer2d.get(4, 2), 0f);
assertEquals(74f, indexer2d.get(5, 2), 0f);
assertEquals(14f, INDEXER_2D.get(0, 2), 0f);
assertEquals(24f, INDEXER_2D.get(1, 2), 0f);
assertEquals(34f, INDEXER_2D.get(2, 2), 0f);
assertEquals(54f, INDEXER_2D.get(3, 2), 0f);
assertEquals(64f, INDEXER_2D.get(4, 2), 0f);
assertEquals(74f, INDEXER_2D.get(5, 2), 0f);
//
assertEquals(15f, indexer2d.get(0, 3), 0f);
assertEquals(25f, indexer2d.get(1, 3), 0f);
assertEquals(35f, indexer2d.get(2, 3), 0f);
assertEquals(55f, indexer2d.get(3, 3), 0f);
assertEquals(65f, indexer2d.get(4, 3), 0f);
assertEquals(75f, indexer2d.get(5, 3), 0f);
assertEquals(15f, INDEXER_2D.get(0, 3), 0f);
assertEquals(25f, INDEXER_2D.get(1, 3), 0f);
assertEquals(35f, INDEXER_2D.get(2, 3), 0f);
assertEquals(55f, INDEXER_2D.get(3, 3), 0f);
assertEquals(65f, INDEXER_2D.get(4, 3), 0f);
assertEquals(75f, INDEXER_2D.get(5, 3), 0f);
//
//
assertEquals(17f, indexer2d.get(0, 4), 0f);
assertEquals(27f, indexer2d.get(1, 4), 0f);
assertEquals(37f, indexer2d.get(2, 4), 0f);
assertEquals(57f, indexer2d.get(3, 4), 0f);
assertEquals(67f, indexer2d.get(4, 4), 0f);
assertEquals(77f, indexer2d.get(5, 4), 0f);
assertEquals(17f, INDEXER_2D.get(0, 4), 0f);
assertEquals(27f, INDEXER_2D.get(1, 4), 0f);
assertEquals(37f, INDEXER_2D.get(2, 4), 0f);
assertEquals(57f, INDEXER_2D.get(3, 4), 0f);
assertEquals(67f, INDEXER_2D.get(4, 4), 0f);
assertEquals(77f, INDEXER_2D.get(5, 4), 0f);
//
assertEquals(18f, indexer2d.get(0, 5), 0f);
assertEquals(28f, indexer2d.get(1, 5), 0f);
assertEquals(38f, indexer2d.get(2, 5), 0f);
assertEquals(58f, indexer2d.get(3, 5), 0f);
assertEquals(68f, indexer2d.get(4, 5), 0f);
assertEquals(78f, indexer2d.get(5, 5), 0f);
assertEquals(18f, INDEXER_2D.get(0, 5), 0f);
assertEquals(28f, INDEXER_2D.get(1, 5), 0f);
assertEquals(38f, INDEXER_2D.get(2, 5), 0f);
assertEquals(58f, INDEXER_2D.get(3, 5), 0f);
assertEquals(68f, INDEXER_2D.get(4, 5), 0f);
assertEquals(78f, INDEXER_2D.get(5, 5), 0f);
}

@Test
public void testIndexIJK() {
assertEquals(2, INDEXER_3D.get(0, 0, 0), 0f);
assertEquals(5, INDEXER_3D.get(0, 1, 0), 0f);
assertEquals(8, INDEXER_3D.get(1, 0, 0), 0f);
assertEquals(11, INDEXER_3D.get(1, 1, 0), 0f);
}

@Test
public void testIndexIndices1D() {
assertEquals(1f, INDEXER_1D.get(new long[]{0}), 0f);
assertEquals(2f, INDEXER_1D.get(new long[]{1}), 0f);
assertEquals(3f, INDEXER_1D.get(new long[]{2}), 0f);
assertEquals(5f, INDEXER_1D.get(new long[]{3}), 0f);
assertEquals(6f, INDEXER_1D.get(new long[]{4}), 0f);
assertEquals(7f, INDEXER_1D.get(new long[]{5}), 0f);
}

@Test
public void testIndexIndices2D() {

assertEquals(11f, INDEXER_2D.get(new long[]{0, 0}), 0f);
assertEquals(21f, INDEXER_2D.get(new long[]{1, 0}), 0f);
assertEquals(31f, INDEXER_2D.get(new long[]{2, 0}), 0f);
assertEquals(51f, INDEXER_2D.get(new long[]{3, 0}), 0f);
assertEquals(61f, INDEXER_2D.get(new long[]{4, 0}), 0f);
assertEquals(71f, INDEXER_2D.get(new long[]{5, 0}), 0f);
//
assertEquals(12f, INDEXER_2D.get(new long[]{0, 1}), 0f);
assertEquals(22f, INDEXER_2D.get(new long[]{1, 1}), 0f);
assertEquals(32f, INDEXER_2D.get(new long[]{2, 1}), 0f);
assertEquals(52f, INDEXER_2D.get(new long[]{3, 1}), 0f);
assertEquals(62f, INDEXER_2D.get(new long[]{4, 1}), 0f);
assertEquals(72f, INDEXER_2D.get(new long[]{5, 1}), 0f);
//
//
assertEquals(14f, INDEXER_2D.get(new long[]{0, 2}), 0f);
assertEquals(24f, INDEXER_2D.get(new long[]{1, 2}), 0f);
assertEquals(34f, INDEXER_2D.get(new long[]{2, 2}), 0f);
assertEquals(54f, INDEXER_2D.get(new long[]{3, 2}), 0f);
assertEquals(64f, INDEXER_2D.get(new long[]{4, 2}), 0f);
assertEquals(74f, INDEXER_2D.get(new long[]{5, 2}), 0f);
//
assertEquals(15f, INDEXER_2D.get(new long[]{0, 3}), 0f);
assertEquals(25f, INDEXER_2D.get(new long[]{1, 3}), 0f);
assertEquals(35f, INDEXER_2D.get(new long[]{2, 3}), 0f);
assertEquals(55f, INDEXER_2D.get(new long[]{3, 3}), 0f);
assertEquals(65f, INDEXER_2D.get(new long[]{4, 3}), 0f);
assertEquals(75f, INDEXER_2D.get(new long[]{5, 3}), 0f);
//
//
assertEquals(17f, INDEXER_2D.get(new long[]{0, 4}), 0f);
assertEquals(27f, INDEXER_2D.get(new long[]{1, 4}), 0f);
assertEquals(37f, INDEXER_2D.get(new long[]{2, 4}), 0f);
assertEquals(57f, INDEXER_2D.get(new long[]{3, 4}), 0f);
assertEquals(67f, INDEXER_2D.get(new long[]{4, 4}), 0f);
assertEquals(77f, INDEXER_2D.get(new long[]{5, 4}), 0f);
//
assertEquals(18f, INDEXER_2D.get(new long[]{0, 5}), 0f);
assertEquals(28f, INDEXER_2D.get(new long[]{1, 5}), 0f);
assertEquals(38f, INDEXER_2D.get(new long[]{2, 5}), 0f);
assertEquals(58f, INDEXER_2D.get(new long[]{3, 5}), 0f);
assertEquals(68f, INDEXER_2D.get(new long[]{4, 5}), 0f);
assertEquals(78f, INDEXER_2D.get(new long[]{5, 5}), 0f);
}

@Test
public void testIndexIndices() {
public void testIndexIndices3D() {
assertEquals(2, INDEXER_3D.get(new long[]{0, 0, 0}), 0f);
assertEquals(5, INDEXER_3D.get(new long[]{0, 1, 0}), 0f);
assertEquals(8, INDEXER_3D.get(new long[]{1, 0, 0}), 0f);
assertEquals(11, INDEXER_3D.get(new long[]{1, 1, 0}), 0f);
}
}

0 comments on commit a60d5a4

Please sign in to comment.