/******************************************************************************* * Copyright 2014 Analog Devices, Inc. * * Licensed under the Apache License, Version 2.0 (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 * * 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 com.analog.lyric.benchmarking.utils.doublespace.test; import static com.analog.lyric.benchmarking.utils.doublespace.IndexerFactory.just; import static com.analog.lyric.benchmarking.utils.doublespace.IndexerFactory.range; import static com.analog.lyric.benchmarking.utils.doublespace.test.Utilities.compareIterables; import static org.hamcrest.CoreMatchers.equalTo; import static org.hamcrest.MatcherAssert.assertThat; import java.util.Arrays; import java.util.List; import org.junit.Test; import com.analog.lyric.benchmarking.utils.doublespace.Indexer; public class StrideIndexerTest { @Test public void negativeStride1HasCorrectCount() { final Indexer i = range(7, 5); final int expected = 3; final int actual = i.getCardinality(); assertThat(expected, equalTo(actual)); } @Test public void negativeStride1HasProperSequence() { final Indexer actual = range(7, 5); final List<Integer> expected = Arrays.asList(7, 6, 5); compareIterables(expected, actual); } @Test public void negativeStrideMatchedHasCorrectCount() { final Indexer i = range(11, -2, 5); final int expected = 4; final int actual = i.getCardinality(); assertThat(expected, equalTo(actual)); } @Test public void negativeStrideMatchedHasProperSequence() { final Indexer actual = range(11, -2, 5); final List<Integer> expected = Arrays.asList(11, 9, 7, 5); compareIterables(expected, actual); } @Test public void negativeStrideMismatchedHasCorrectCount() { final Indexer i = range(12, -2, 5); final int expected = 4; final int actual = i.getCardinality(); assertThat(expected, equalTo(actual)); } @Test public void negativeStrideMismatchedHasProperSequence() { final Indexer actual = range(12, -2, 5); final List<Integer> expected = Arrays.asList(12, 10, 8, 6); compareIterables(expected, actual); } @Test public void positiveStride1HasCorrectCount() { final Indexer i = range(5, 7); final int expected = 3; final int actual = i.getCardinality(); assertThat(expected, equalTo(actual)); } @Test public void positiveStride1HasProperSequence() { final Indexer actual = range(5, 7); final List<Integer> expected = Arrays.asList(5, 6, 7); compareIterables(expected, actual); } @Test public void positiveStrideMatchedHasCorrectCount() { final Indexer i = range(5, 2, 11); final int expected = 4; final int actual = i.getCardinality(); assertThat(expected, equalTo(actual)); } @Test public void positiveStrideMatchedHasProperSequence() { final Indexer actual = range(5, 2, 11); final List<Integer> expected = Arrays.asList(5, 7, 9, 11); compareIterables(expected, actual); } @Test public void positiveStrideMismatchedHasCorrectCount() { final Indexer i = range(5, 2, 12); final int expected = 4; final int actual = i.getCardinality(); assertThat(expected, equalTo(actual)); } @Test public void positiveStrideMismatchedHasProperSequence() { final Indexer actual = range(5, 2, 12); final List<Integer> expected = Arrays.asList(5, 7, 9, 11); compareIterables(expected, actual); } @Test public void testJustHasCount1() { final Indexer i = just(5); final int expected = 1; final int actual = i.getCardinality(); assertThat(expected, equalTo(actual)); } @Test public void testJustHasProperSequence() { final Indexer actual = just(5); final List<Integer> expected = Arrays.asList(5); compareIterables(expected, actual); } @Test public void testNegativeGetNth() { final Indexer i = range(18, -3, 12); final int actual = i.getNth(2); final int expected = 12; assertThat(actual, equalTo(expected)); } @Test public void testPositiveGetNth() { final Indexer i = range(12, 3, 18); final int actual = i.getNth(2); final int expected = 18; assertThat(actual, equalTo(expected)); } }