    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: 1.1 $ $Date: 2004/10/08 05:08:19 $
    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  }