package com.heatonresearch.aifh.ann.general.data; import com.heatonresearch.aifh.AIFH; import com.heatonresearch.aifh.general.data.BasicData; import com.heatonresearch.aifh.general.data.TimeSeriesUtil; import org.junit.Assert; import org.junit.Test; import java.util.List; public class TestTimeSeriesUtil { @Test public void testSingleDimension() { double[][] dataset = { new double[] { 1 }, new double[] { 2 }, new double[] { 3 }, new double[] { 4 }, new double[] { 5 }, new double[] { 6 }, new double[] { 7 }, new double[] { 8 }, new double[] { 9 }, new double[] { 10 } }; List<BasicData> result = TimeSeriesUtil.slidingWindow(dataset,3,1,new int[]{0},new int[]{0}); Assert.assertEquals(7,result.size()); Assert.assertEquals(3,result.get(0).getInput().length); Assert.assertEquals(1,result.get(0).getIdeal().length); Assert.assertArrayEquals(new double[] {1,2,3},result.get(0).getInput(), AIFH.DEFAULT_PRECISION); Assert.assertArrayEquals(new double[] {2,3,4},result.get(1).getInput(), AIFH.DEFAULT_PRECISION); Assert.assertArrayEquals(new double[] {3,4,5},result.get(2).getInput(), AIFH.DEFAULT_PRECISION); Assert.assertArrayEquals(new double[] {4,5,6},result.get(3).getInput(), AIFH.DEFAULT_PRECISION); Assert.assertArrayEquals(new double[] {5,6,7},result.get(4).getInput(), AIFH.DEFAULT_PRECISION); Assert.assertArrayEquals(new double[] {6,7,8},result.get(5).getInput(), AIFH.DEFAULT_PRECISION); Assert.assertArrayEquals(new double[] {7,8,9},result.get(6).getInput(), AIFH.DEFAULT_PRECISION); Assert.assertEquals(4,result.get(0).getIdeal()[0],AIFH.DEFAULT_PRECISION); Assert.assertEquals(5,result.get(1).getIdeal()[0],AIFH.DEFAULT_PRECISION); Assert.assertEquals(6,result.get(2).getIdeal()[0],AIFH.DEFAULT_PRECISION); Assert.assertEquals(7,result.get(3).getIdeal()[0],AIFH.DEFAULT_PRECISION); Assert.assertEquals(8,result.get(4).getIdeal()[0],AIFH.DEFAULT_PRECISION); Assert.assertEquals(9,result.get(5).getIdeal()[0],AIFH.DEFAULT_PRECISION); Assert.assertEquals(10,result.get(6).getIdeal()[0],AIFH.DEFAULT_PRECISION); } @Test public void testMultipleDimension() { double[][] dataset = { new double[] { 1, 10 }, new double[] { 2, 20 }, new double[] { 3, 30 }, new double[] { 4, 40 }, new double[] { 5, 50 }, new double[] { 6, 60 }, new double[] { 7, 70 }, new double[] { 8, 80 }, new double[] { 9, 90 }, new double[] { 10, 100 } }; List<BasicData> result = TimeSeriesUtil.slidingWindow(dataset,3,1,new int[]{0,1},new int[]{0}); Assert.assertEquals(7,result.size()); Assert.assertEquals(6,result.get(0).getInput().length); Assert.assertEquals(1,result.get(0).getIdeal().length); Assert.assertArrayEquals(new double[] {1,10,2,20,3,30},result.get(0).getInput(), AIFH.DEFAULT_PRECISION); Assert.assertArrayEquals(new double[] {2,20,3,30,4,40},result.get(1).getInput(), AIFH.DEFAULT_PRECISION); Assert.assertArrayEquals(new double[] {3,30,4,40,5,50},result.get(2).getInput(), AIFH.DEFAULT_PRECISION); Assert.assertArrayEquals(new double[] {4,40,5,50,6,60},result.get(3).getInput(), AIFH.DEFAULT_PRECISION); Assert.assertArrayEquals(new double[] {5,50,6,60,7,70},result.get(4).getInput(), AIFH.DEFAULT_PRECISION); Assert.assertArrayEquals(new double[] {6,60,7,70,8,80},result.get(5).getInput(), AIFH.DEFAULT_PRECISION); Assert.assertArrayEquals(new double[] {7,70,8,80,9,90},result.get(6).getInput(), AIFH.DEFAULT_PRECISION); Assert.assertEquals(4,result.get(0).getIdeal()[0],AIFH.DEFAULT_PRECISION); Assert.assertEquals(5,result.get(1).getIdeal()[0],AIFH.DEFAULT_PRECISION); Assert.assertEquals(6,result.get(2).getIdeal()[0],AIFH.DEFAULT_PRECISION); Assert.assertEquals(7,result.get(3).getIdeal()[0],AIFH.DEFAULT_PRECISION); Assert.assertEquals(8,result.get(4).getIdeal()[0],AIFH.DEFAULT_PRECISION); Assert.assertEquals(9,result.get(5).getIdeal()[0],AIFH.DEFAULT_PRECISION); Assert.assertEquals(10,result.get(6).getIdeal()[0],AIFH.DEFAULT_PRECISION); } }