1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.apache.commons.math.stat;
17
18 import junit.framework.Test;
19 import junit.framework.TestCase;
20 import junit.framework.TestSuite;
21
22 import java.io.BufferedReader;
23 import java.io.InputStreamReader;
24
25 import org.apache.commons.math.stat.descriptive.SummaryStatistics;
26 import org.apache.commons.math.stat.descriptive.SummaryStatisticsImpl;
27 import org.apache.commons.math.stat.descriptive.DescriptiveStatistics;
28
29 /**
30 * Certified data test cases.
31 * @version $Revision: 208874 $ $Date: 2005-07-02 15:24:59 -0700 (Sat, 02 Jul 2005) $
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
48
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 StorelessDescriptiveStatistics
64 */
65 public void testUnivariateImpl() throws Exception {
66 SummaryStatistics u = SummaryStatistics.newInstance(SummaryStatisticsImpl.class);
67 loadStats("data/PiDigits.txt", u);
68 assertEquals("PiDigits: std", std, u.getStandardDeviation(), .0000000000001);
69 assertEquals("PiDigits: mean", mean, u.getMean(), .0000000000001);
70
71 loadStats("data/Mavro.txt", u);
72 assertEquals("Mavro: std", std, u.getStandardDeviation(), .00000000000001);
73 assertEquals("Mavro: mean", mean, u.getMean(), .00000000000001);
74
75
76
77
78
79 loadStats("data/NumAcc1.txt", u);
80 assertEquals("NumAcc1: std", std, u.getStandardDeviation(), .00000000000001);
81 assertEquals("NumAcc1: mean", mean, u.getMean(), .00000000000001);
82
83
84
85
86 }
87
88 /**
89 * Test StorelessDescriptiveStatistics
90 */
91 public void testStoredUnivariateImpl() throws Exception {
92
93 DescriptiveStatistics u = DescriptiveStatistics.newInstance();
94
95 loadStats("data/PiDigits.txt", u);
96 assertEquals("PiDigits: std", std, u.getStandardDeviation(), .0000000000001);
97 assertEquals("PiDigits: mean", mean, u.getMean(), .0000000000001);
98
99 loadStats("data/Mavro.txt", u);
100 assertEquals("Mavro: std", std, u.getStandardDeviation(), .00000000000001);
101 assertEquals("Mavro: mean", mean, u.getMean(), .00000000000001);
102
103
104
105
106
107 loadStats("data/NumAcc1.txt", u);
108 assertEquals("NumAcc1: std", std, u.getStandardDeviation(), .00000000000001);
109 assertEquals("NumAcc1: mean", mean, u.getMean(), .00000000000001);
110
111
112
113
114 }
115
116 /**
117 * loads a DescriptiveStatistics off of a test file
118 * @param file
119 * @param statistical summary
120 */
121 private void loadStats(String resource, Object u) throws Exception {
122
123 DescriptiveStatistics d = null;
124 SummaryStatistics s = null;
125 if (u instanceof DescriptiveStatistics) {
126 d = (DescriptiveStatistics) u;
127 } else {
128 s = (SummaryStatistics) u;
129 }
130 u.getClass().getDeclaredMethod(
131 "clear", new Class[]{}).invoke(u, new Object[]{});
132 mean = Double.NaN;
133 std = Double.NaN;
134
135 BufferedReader in =
136 new BufferedReader(
137 new InputStreamReader(
138 getClass().getResourceAsStream(resource)));
139
140 String line = null;
141
142 for (int j = 0; j < 60; j++) {
143 line = in.readLine();
144 if (j == 40) {
145 mean =
146 Double.parseDouble(
147 line.substring(line.lastIndexOf(":") + 1).trim());
148 }
149 if (j == 41) {
150 std =
151 Double.parseDouble(
152 line.substring(line.lastIndexOf(":") + 1).trim());
153 }
154 }
155
156 line = in.readLine();
157
158 while (line != null) {
159 if (d != null) {
160 d.addValue(Double.parseDouble(line.trim()));
161 } else {
162 s.addValue(Double.parseDouble(line.trim()));
163 }
164 line = in.readLine();
165 }
166
167 in.close();
168 }
169 }