1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one or more
3    * contributor license agreements.  See the NOTICE file distributed with
4    * this work for additional information regarding copyright ownership.
5    * The ASF licenses this file to You under the Apache License, Version 2.0
6    * (the "License"); you may not use this file except in compliance with
7    * the License.  You may obtain a copy of the License at
8    * 
9    *      http://www.apache.org/licenses/LICENSE-2.0
10   * 
11   * Unless required by applicable law or agreed to in writing, software
12   * distributed under the License is distributed on an "AS IS" BASIS,
13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14   * See the License for the specific language governing permissions and
15   * limitations under the License.
16   */
17  package org.apache.commons.math.stat.descriptive;
18  
19  import junit.framework.TestCase;
20  
21  /**
22   * Test cases for the {@link UnivariateStatistic} class.
23   * @version $Revision: 720030 $ $Date: 2008-11-23 13:47:50 -0500 (Sun, 23 Nov 2008) $
24   */
25  public abstract class UnivariateStatisticAbstractTest extends TestCase {
26  
27      protected double mean = 12.404545454545455d;
28      protected double geoMean = 12.070589161633011d;
29  
30      protected double var = 10.00235930735931d;
31      protected double std = Math.sqrt(var);
32      protected double skew = 1.437423729196190d;
33      protected double kurt = 2.377191264804700d;
34  
35      protected double min = 8.2d;
36      protected double max = 21d;
37      protected double median = 12d;
38      protected double percentile5 = 8.29d;
39      protected double percentile95 = 20.82d;
40  
41      protected double product = 628096400563833396009676.9200400128d;
42      protected double sumLog = 54.7969806116451507d;
43      protected double sumSq = 3595.250d;
44      protected double sum = 272.90d;
45      protected double secondMoment = 210.04954545454547d;
46      protected double thirdMoment = 868.0906859504136;
47      protected double fourthMoment = 9244.080993773481;
48  
49      protected double tolerance = 10E-12;
50  
51      protected double[] testArray =
52          {12.5, 12, 11.8, 14.2, 14.9, 14.5, 21, 8.2, 10.3, 11.3,
53            14.1, 9.9, 12.2, 12, 12.1, 11, 19.8, 11, 10,  8.8,
54             9, 12.3 };
55  
56      public UnivariateStatisticAbstractTest(String name) {
57          super(name);
58      }
59  
60      public abstract UnivariateStatistic getUnivariateStatistic();
61  
62      public abstract double expectedValue();
63  
64      public double getTolerance() {
65          return tolerance;
66      }
67  
68      public void testEvaluation() throws Exception {   
69          assertEquals(
70              expectedValue(),
71              getUnivariateStatistic().evaluate(testArray),
72              getTolerance());
73      }
74      
75      public void testCopy() throws Exception {
76          UnivariateStatistic original = getUnivariateStatistic();
77          UnivariateStatistic copy = original.copy();
78          assertEquals(
79                  expectedValue(),
80                  copy.evaluate(testArray),
81                  getTolerance());
82      }
83      
84  }