1
2
3
4
5
6
7
8
9
10 package nl.tudelft.simulation.jstats.statistics;
11
12 import junit.framework.Assert;
13 import junit.framework.TestCase;
14 import nl.tudelft.simulation.event.Event;
15 import nl.tudelft.simulation.event.TimedEvent;
16
17 /***
18 * The PersistentTest test the persistent
19 * <p>
20 * (c) copyright 2003-2004 <a href="http://www.simulation.tudelft.nl">Delft
21 * University of Technology </a>, the Netherlands. <br>
22 * See for project information <a
23 * href="http://www.simulation.tudelft.nl">www.simulation.tudelft.nl </a> <br>
24 * License of use: <a href="http://www.gnu.org/copyleft/gpl.html">General Public
25 * License (GPL) </a>, no warranty <br>
26 *
27 * @author <a href="http://www.simulation.tudelft.nl/people/jacobs.html">Peter
28 * Jacobs </a>
29 * @version 1.0, 2004-03-18
30 * @since 1.2
31 */
32 public class PersistentTest extends TestCase
33 {
34 /*** TEST_METHOD reflects the method which is invoked */
35 public static final String TEST_METHOD = "test";
36
37 /***
38 * constructs a new PersistentTest
39 */
40 public PersistentTest()
41 {
42 this(TEST_METHOD);
43 }
44
45 /***
46 * constructs a new PersistentTest
47 *
48 * @param arg0 the name of the method to be tested
49 */
50 public PersistentTest(final String arg0)
51 {
52 super(arg0);
53 }
54
55 /***
56 * tests the persistent
57 */
58 public void test()
59 {
60 String description = "THIS PERSISTENT IS TESTED";
61 Persistent persistent = new Persistent(description);
62
63
64 Assert.assertTrue(persistent.toString().equals(description));
65
66
67 Assert.assertTrue(new Double(persistent.getMin()).isNaN());
68 Assert.assertTrue(new Double(persistent.getMax()).isNaN());
69 Assert.assertTrue(new Double(persistent.getSampleMean()).isNaN());
70 Assert.assertTrue(new Double(persistent.getSampleVariance()).isNaN());
71 Assert.assertTrue(new Double(persistent.getStdDev()).isNaN());
72 Assert.assertTrue(new Double(persistent.getSum()).isNaN());
73 Assert.assertTrue(persistent.getN() == Long.MIN_VALUE);
74 Assert.assertTrue(persistent.getConfidenceInterval(0.95) == null);
75 Assert.assertTrue(persistent.getConfidenceInterval(0.95,
76 Tally.LEFT_SIDE_CONFIDENCE) == null);
77
78
79
80 persistent.initialize();
81
82
83 Assert.assertTrue(persistent.getMin() == Double.MAX_VALUE);
84 Assert.assertTrue(persistent.getMax() == -Double.MAX_VALUE);
85 Assert.assertTrue(new Double(persistent.getSampleMean()).isNaN());
86 Assert.assertTrue(new Double(persistent.getSampleVariance()).isNaN());
87 Assert.assertTrue(new Double(persistent.getStdDev()).isNaN());
88 Assert.assertTrue(persistent.getSum() == 0);
89 Assert.assertTrue(persistent.getN() == 0);
90 Assert.assertTrue(persistent.getConfidenceInterval(0.95) == null);
91 Assert.assertTrue(persistent.getConfidenceInterval(0.95,
92 Tally.LEFT_SIDE_CONFIDENCE) == null);
93
94
95 try
96 {
97 persistent.notify(new Event(null, "ERROR", "ERROR"));
98 Assert
99 .fail("persistent should react on events.value !instanceOf Double");
100 } catch (Exception exception)
101 {
102 Assert.assertNotNull(exception);
103 }
104
105
106 try
107 {
108 persistent.notify(new TimedEvent(null, this, new Double(1.0), 0.0));
109 persistent.notify(new TimedEvent(null, this, new Double(1.1), 0.1));
110 persistent.notify(new TimedEvent(null, this, new Double(1.2), 0.2));
111 persistent.notify(new TimedEvent(null, this, new Double(1.3), 0.3));
112 persistent.notify(new TimedEvent(null, this, new Double(1.4), 0.4));
113 persistent.notify(new TimedEvent(null, this, new Double(1.5), 0.5));
114 persistent.notify(new TimedEvent(null, this, new Double(1.6), 0.6));
115 persistent.notify(new TimedEvent(null, this, new Double(1.7), 0.7));
116 persistent.notify(new TimedEvent(null, this, new Double(1.8), 0.8));
117 persistent.notify(new TimedEvent(null, this, new Double(1.9), 0.9));
118 persistent.notify(new TimedEvent(null, this, new Double(2.0), 1.0));
119 persistent.notify(new TimedEvent(null, this, new Double(2.1), 1.1));
120 } catch (Exception exception)
121 {
122 Assert.fail(exception.getMessage());
123 }
124
125
126 Assert.assertTrue(persistent.getMax() == 2.1);
127 Assert.assertTrue(persistent.getMin() == 1.0);
128 Assert.assertTrue(persistent.getN() == 12);
129 Assert.assertTrue(persistent.getSum() == 18.6);
130 Assert.assertTrue(Math.abs(persistent.getSampleMean() - 1.5) < 10E-6);
131
132
133 double variance = 0;
134 for (int i = 0; i < 11; i++)
135 {
136 variance = Math.pow(1.5 - (1.0 + i / 10.0), 2) + variance;
137 }
138 variance = variance / 10.0;
139 double stDev = Math.sqrt(variance);
140
141 Assert
142 .assertTrue(Math.abs(persistent.getSampleVariance() - variance) < 10E-6);
143 Assert.assertTrue(Math.abs(persistent.getStdDev() - stDev) < 10E-6);
144 }
145 }