HyperslabIndexTest.java
/*
* Copyright (C) 2020 Matteo Di Giovinazzo
*
* Licensed either under the Apache License, Version 2.0, or (at your option)
* under the terms of the GNU General Public License as published by
* the Free Software Foundation (subject to the "Classpath" exception),
* either version 2, or any later version (collectively, the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
* http://www.gnu.org/licenses/
* http://www.gnu.org/software/classpath/license.html
*
* or as provided in the LICENSE.txt file that accompanied this code.
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.bytedeco.javacpp.indexer;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
public class HyperslabIndexTest {
private static final FloatIndexer INDEXER_1D;
private static final FloatIndexer INDEXER_2D;
private static final FloatIndexer INDEXER_3D;
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;
}
}
for (int i = 11; i < 12; i++) {
for (int j = 0; j < 10; j++) {
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() {
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() {
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, 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, 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, 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, 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, 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 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);
}
}