From a60d5a46c05ecf9eb9cafe6a5f2d82214611e608 Mon Sep 17 00:00:00 2001 From: Matteo Di Giovinazzo Date: Sat, 2 May 2020 13:13:58 -0600 Subject: [PATCH] #391 Add unit test for HyperslabIndex --- .../javacpp/indexer/HyperslabIndexTest.java | 214 ++++++++++++------ 1 file changed, 143 insertions(+), 71 deletions(-) diff --git a/src/test/java/org/bytedeco/javacpp/indexer/HyperslabIndexTest.java b/src/test/java/org/bytedeco/javacpp/indexer/HyperslabIndexTest.java index 87bb1b6eb..6673e24c5 100644 --- a/src/test/java/org/bytedeco/javacpp/indexer/HyperslabIndexTest.java +++ b/src/test/java/org/bytedeco/javacpp/indexer/HyperslabIndexTest.java @@ -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); } }