~ubuntu-branches/ubuntu/maverick/commons-math/maverick

« back to all changes in this revision

Viewing changes to src/test/org/apache/commons/math/stat/CertifiedDataTest.java

  • Committer: Bazaar Package Importer
  • Author(s): Damien Raude-Morvan
  • Date: 2009-08-22 01:13:25 UTC
  • mfrom: (1.1.1 upstream)
  • Revision ID: james.westby@ubuntu.com-20090822011325-hi4peq1ua5weguwn
Tags: 2.0-1
* New upstream release.
* Set Maintainer field to Debian Java Team
* Add myself as Uploaders
* Switch to Quilt patch system:
  - Refresh all patchs
  - Remove B-D on dpatch, Add B-D on quilt
  - Include patchsys-quilt.mk in debian/rules
* Bump Standards-Version to 3.8.3:
  - Add a README.source to describe patch system
* Maven POMs:
  - Add a Build-Depends-Indep dependency on maven-repo-helper
  - Use mh_installpom and mh_installjar to install the POM and the jar to the
    Maven repository
* Use default-jdk/jre:
  - Depends on java5-runtime-headless
  - Build-Depends on default-jdk
  - Use /usr/lib/jvm/default-java as JAVA_HOME
* Move api documentation to /usr/share/doc/libcommons-math-java/api
* Build-Depends on junit4 instead of junit

Show diffs side-by-side

added added

removed removed

Lines of Context:
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;
18
 
 
19
 
import junit.framework.Test;
20
 
import junit.framework.TestCase;
21
 
import junit.framework.TestSuite;
22
 
 
23
 
import java.io.BufferedReader;
24
 
import java.io.InputStreamReader;
25
 
 
26
 
import org.apache.commons.math.stat.descriptive.SummaryStatistics;
27
 
import org.apache.commons.math.stat.descriptive.DescriptiveStatistics;
28
 
 
29
 
/**
30
 
 * Certified data test cases.
31
 
 * @version $Revision: 611490 $ $Date: 2008-01-12 14:36:35 -0700 (Sat, 12 Jan 2008) $
32
 
 */
33
 
public class CertifiedDataTest extends TestCase  {
34
 
 
35
 
    protected double mean = Double.NaN;
36
 
 
37
 
    protected double std = Double.NaN;
38
 
 
39
 
    /**
40
 
     * Certified Data Test Constructor
41
 
     * @param name
42
 
     */
43
 
    public CertifiedDataTest(String name) {
44
 
        super(name);
45
 
    }
46
 
 
47
 
    /* (non-Javadoc)
48
 
     * @see junit.framework.TestCase#setUp()
49
 
     */
50
 
    public void setUp() {
51
 
    }
52
 
 
53
 
    /**
54
 
     * @return The test suite
55
 
     */
56
 
    public static Test suite() {
57
 
        TestSuite suite = new TestSuite(CertifiedDataTest.class);
58
 
        suite.setName("Certified Tests");
59
 
        return suite;
60
 
    }
61
 
 
62
 
    /**
63
 
     * Test SummaryStatistics - implementations that do not store the data
64
 
     * and use single pass algorithms to compute statistics
65
 
    */
66
 
    public void testSummaryStatistics() throws Exception {
67
 
        SummaryStatistics u = new SummaryStatistics();
68
 
        loadStats("data/PiDigits.txt", u);
69
 
        assertEquals("PiDigits: std", std, u.getStandardDeviation(), 1E-13);
70
 
        assertEquals("PiDigits: mean", mean, u.getMean(), 1E-13);  
71
 
 
72
 
        loadStats("data/Mavro.txt", u);
73
 
        assertEquals("Mavro: std", std, u.getStandardDeviation(), 1E-14);
74
 
        assertEquals("Mavro: mean", mean, u.getMean(), 1E-14);
75
 
        
76
 
        loadStats("data/Michelso.txt", u);
77
 
        assertEquals("Michelso: std", std, u.getStandardDeviation(), 1E-13);
78
 
        assertEquals("Michelso: mean", mean, u.getMean(), 1E-13);   
79
 
                                        
80
 
        loadStats("data/NumAcc1.txt", u);
81
 
        assertEquals("NumAcc1: std", std, u.getStandardDeviation(), 1E-14);
82
 
        assertEquals("NumAcc1: mean", mean, u.getMean(), 1E-14);
83
 
        
84
 
        loadStats("data/NumAcc2.txt", u);
85
 
        assertEquals("NumAcc2: std", std, u.getStandardDeviation(), 1E-14);
86
 
        assertEquals("NumAcc2: mean", mean, u.getMean(), 1E-14);
87
 
    }
88
 
 
89
 
    /**
90
 
     * Test DescriptiveStatistics - implementations that store full array of
91
 
     * values and execute multi-pass algorithms
92
 
     */
93
 
    public void testDescriptiveStatistics() throws Exception {
94
 
 
95
 
        DescriptiveStatistics u = new DescriptiveStatistics();
96
 
        
97
 
        loadStats("data/PiDigits.txt", u);
98
 
        assertEquals("PiDigits: std", std, u.getStandardDeviation(), 1E-14);
99
 
        assertEquals("PiDigits: mean", mean, u.getMean(), 1E-14);
100
 
        
101
 
        loadStats("data/Mavro.txt", u);
102
 
        assertEquals("Mavro: std", std, u.getStandardDeviation(), 1E-14);
103
 
        assertEquals("Mavro: mean", mean, u.getMean(), 1E-14);        
104
 
        
105
 
        loadStats("data/Michelso.txt", u);
106
 
        assertEquals("Michelso: std", std, u.getStandardDeviation(), 1E-14);
107
 
        assertEquals("Michelso: mean", mean, u.getMean(), 1E-14);   
108
 
 
109
 
        loadStats("data/NumAcc1.txt", u);
110
 
        assertEquals("NumAcc1: std", std, u.getStandardDeviation(), 1E-14);
111
 
        assertEquals("NumAcc1: mean", mean, u.getMean(), 1E-14);
112
 
        
113
 
        loadStats("data/NumAcc2.txt", u);
114
 
        assertEquals("NumAcc2: std", std, u.getStandardDeviation(), 1E-14);
115
 
        assertEquals("NumAcc2: mean", mean, u.getMean(), 1E-14);
116
 
    }
117
 
 
118
 
    /**
119
 
     * loads a DescriptiveStatistics off of a test file
120
 
     * @param file
121
 
     * @param statistical summary
122
 
     */
123
 
    private void loadStats(String resource, Object u) throws Exception {
124
 
        
125
 
        DescriptiveStatistics d = null;
126
 
        SummaryStatistics s = null;
127
 
        if (u instanceof DescriptiveStatistics) {
128
 
            d = (DescriptiveStatistics) u;
129
 
        } else {
130
 
            s = (SummaryStatistics) u;
131
 
        }
132
 
        u.getClass().getDeclaredMethod(
133
 
                "clear", new Class[]{}).invoke(u, new Object[]{});
134
 
        mean = Double.NaN;
135
 
        std = Double.NaN;
136
 
        
137
 
        BufferedReader in =
138
 
            new BufferedReader(
139
 
                    new InputStreamReader(
140
 
                            CertifiedDataTest.class.getResourceAsStream(resource)));
141
 
        
142
 
        String line = null;
143
 
        
144
 
        for (int j = 0; j < 60; j++) {
145
 
            line = in.readLine();
146
 
            if (j == 40) {
147
 
                mean =
148
 
                    Double.parseDouble(
149
 
                            line.substring(line.lastIndexOf(":") + 1).trim());
150
 
            }
151
 
            if (j == 41) {
152
 
                std =
153
 
                    Double.parseDouble(
154
 
                            line.substring(line.lastIndexOf(":") + 1).trim());
155
 
            }
156
 
        }
157
 
        
158
 
        line = in.readLine();
159
 
        
160
 
        while (line != null) {
161
 
            if (d != null) {
162
 
                d.addValue(Double.parseDouble(line.trim()));
163
 
            }  else {
164
 
                s.addValue(Double.parseDouble(line.trim()));
165
 
            }
166
 
            line = in.readLine();
167
 
        }
168
 
        
169
 
        in.close();
170
 
    }
171
 
}