1   /*
2    * Copyright 2004 The Apache Software Foundation.
3    * 
4    * Licensed under the Apache License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    * 
8    *      http://www.apache.org/licenses/LICENSE-2.0
9    * 
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16  package org.apache.commons.math.stat.descriptive;
17  
18  
19  import junit.framework.Test;
20  import junit.framework.TestCase;
21  import junit.framework.TestSuite;
22  
23  import org.apache.commons.math.TestUtils;
24  /**
25   * Test cases for the {@link StatisticalSummaryValues} class.
26   *
27   * @version $Revision: 155427 $ $Date: 2005-02-26 06:11:52 -0700 (Sat, 26 Feb 2005) $
28   */
29  
30  public final class StatisticalSummaryValuesTest extends TestCase {
31      
32      
33      public StatisticalSummaryValuesTest(String name) {
34          super(name);
35      }
36      
37      public void setUp() {  
38      }
39      
40      public static Test suite() {
41          TestSuite suite = new TestSuite(StatisticalSummaryValuesTest.class);
42          suite.setName("StatisticalSummaryValues Tests");
43          return suite;
44      }
45        
46      public void testSerialization() {
47          StatisticalSummaryValues u = new StatisticalSummaryValues(1, 2, 3, 4, 5, 6);
48          TestUtils.checkSerializedEquality(u); 
49          StatisticalSummaryValues t = (StatisticalSummaryValues) TestUtils.serializeAndRecover(u);
50          verifyEquality(u, t);
51      }
52      
53      public void testEqualsAndHashCode() {
54          StatisticalSummaryValues u  = new StatisticalSummaryValues(1, 2, 3, 4, 5, 6);
55          StatisticalSummaryValues t = null;
56          int emptyHash = u.hashCode();
57          assertTrue("reflexive", u.equals(u));
58          assertFalse("non-null compared to null", u.equals(t));
59          assertFalse("wrong type", u.equals(new Double(0)));
60          t = new StatisticalSummaryValues(1, 2, 3, 4, 5, 6);
61          assertTrue("instances with same data should be equal", t.equals(u));
62          assertEquals("hash code", u.hashCode(), t.hashCode());
63          
64          u = new StatisticalSummaryValues(Double.NaN, 2, 3, 4, 5, 6);
65          t = new StatisticalSummaryValues(1, Double.NaN, 3, 4, 5, 6);
66          assertFalse("instances based on different data should be different", 
67                  (u.equals(t) ||t.equals(u)));
68      }
69      
70      private void verifyEquality(StatisticalSummaryValues s, StatisticalSummaryValues u) {
71          assertEquals("N",s.getN(),u.getN());
72          TestUtils.assertEquals("sum",s.getSum(),u.getSum(), 0);
73          TestUtils.assertEquals("var",s.getVariance(),u.getVariance(), 0);
74          TestUtils.assertEquals("std",s.getStandardDeviation(),u.getStandardDeviation(), 0);
75          TestUtils.assertEquals("mean",s.getMean(),u.getMean(), 0);
76          TestUtils.assertEquals("min",s.getMin(),u.getMin(), 0);
77          TestUtils.assertEquals("max",s.getMax(),u.getMax(), 0);   
78      }
79  }