blob: f2e94d29f6fadf1f8ece1e69bfcde458177ee124 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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 org.apache.commons.math3.util;
import org.apache.commons.math3.stat.StatUtils;
import org.junit.Assert;
import org.junit.Test;
/**
* This class contains test cases for the ExpandableDoubleArray.
*
*/
public abstract class DoubleArrayAbstractTest {
protected DoubleArray da = null;
// Array used to test rolling
protected DoubleArray ra = null;
@Test
public void testAdd1000() {
for (int i = 0; i < 1000; i++) {
da.addElement(i);
}
Assert.assertEquals(
"Number of elements should be equal to 1000 after adding 1000 values",
1000,
da.getNumElements());
Assert.assertEquals(
"The element at the 56th index should be 56",
56.0,
da.getElement(56),
Double.MIN_VALUE);
}
@Test
public void testGetValues() {
double[] controlArray = { 2.0, 4.0, 6.0 };
da.addElement(2.0);
da.addElement(4.0);
da.addElement(6.0);
double[] testArray = da.getElements();
for (int i = 0; i < da.getNumElements(); i++) {
Assert.assertEquals(
"The testArray values should equal the controlArray values, index i: "
+ i
+ " does not match",
testArray[i],
controlArray[i],
Double.MIN_VALUE);
}
}
@Test
public void testAddElementRolling() {
ra.addElement(0.5);
ra.addElement(1.0);
ra.addElement(1.0);
ra.addElement(1.0);
ra.addElement(1.0);
ra.addElement(1.0);
ra.addElementRolling(2.0);
Assert.assertEquals(
"There should be 6 elements in the eda",
6,
ra.getNumElements());
Assert.assertEquals(
"The max element should be 2.0",
2.0,
StatUtils.max(ra.getElements()),
Double.MIN_VALUE);
Assert.assertEquals(
"The min element should be 1.0",
1.0,
StatUtils.min(ra.getElements()),
Double.MIN_VALUE);
for (int i = 0; i < 1024; i++) {
ra.addElementRolling(i);
}
Assert.assertEquals(
"We just inserted 1024 rolling elements, num elements should still be 6",
6,
ra.getNumElements());
}
@Test
public void testMinMax() {
da.addElement(2.0);
da.addElement(22.0);
da.addElement(-2.0);
da.addElement(21.0);
da.addElement(22.0);
da.addElement(42.0);
da.addElement(62.0);
da.addElement(22.0);
da.addElement(122.0);
da.addElement(1212.0);
Assert.assertEquals("Min should be -2.0", -2.0, StatUtils.min(da.getElements()), Double.MIN_VALUE);
Assert.assertEquals(
"Max should be 1212.0",
1212.0,
StatUtils.max(da.getElements()),
Double.MIN_VALUE);
}
}