| Counter.java |
1 package example;
2
3 /**
4 * Simple example class to show how to use ComTest.
5 * Counter is a class that counts sum, min and max
6 * of the items added. Only maxN item is taken acount.
7 *
8 * @author vesal
9 *
10 * @example
11 * <pre name="testJAVA">
12 * private Counter gCnt;
13 *
14 * /.** *./
15 * \@Before public void doInit() {
16 * gCnt = new Counter(3);
17 * }
18 *
19 * /.** *./
20 * \@After public void doAfter() {
21 * System.out.println("After: " + gCnt.getCount());
22 * }
23 * </pre>
24 */
25 public class Counter {
26 private int count = 0;
27 private int max = 0;
28 private int min = 0;
29 private int sum = 0;
30 private final int maxN;
31
32 /**
33 * Init counter with max N items
34 * @param maxN
35 */
36 public Counter(int maxN) {
37 this.maxN = maxN;
38 }
39
40 /**
41 * Adds i to current counter if not allready too many added.
42 * @param i value to add
43 * @example
44 * <pre name="testCounterAdd">
45 * #THROWS IndexOutOfBoundsException,Exception
46 * // Test by ordinary sentences
47 * // Counter cnt = new Counter(3);
48 * Counter cnt = gCnt;
49 * cnt.getCount() === 0; cnt.getSum() === 0;
50 * cnt.add(1); cnt.getCount() === 1; cnt.getSum() === 1;
51 * cnt.add(2); cnt.getCount() === 2; cnt.getSum() === 3;
52 * </pre>
53 *
54 * @example
55 * <pre name="testCounterAddTable">
56 * // test by table
57 * Counter cnt = new Counter(3);
58 * cnt.add($add); cnt.getCount() === $count; cnt.getSum() === $sum;
59 * cnt.getMax() === $max; cnt.getMin() === $min;
60 *
61 * ----------------------------------------------
62 * $add | $count | $sum | $max | $min
63 * ----------------------------------------------
64 * --- | 0 | 0 | 0 | 0 // after creation
65 * 1 | 1 | 1 | 1 | 1
66 * 2 | 2 | 1+2 | 2 | 1
67 * 3 | 3 | 1+2+3 | 3 | 1
68 * 4 | 3 | 6 | 3 | 1 // MaxN exceeded
69 * ==============================================
70 * 5 | 1 | 5 | 5 | 5
71 * 2 | 2 | 5+2 | 5 | 2
72 * 3 | 3 | 5+2+3 | 5 | 2
73 * ==============================================
74 * -1 | 1 | -1 | -1 | -1
75 * 2 | 2 | -1+2 | 2 | -1
76 * 9 | 3 | -1+2+9 | 9 | -1
77 *
78 * </pre>
79 */
80 public void add(int i) {
81 if ( count >= maxN ) return;
82 sum += i;
83 count++;
84 if ( count == 1 ) min = max = i;
85 if ( max < i ) max = i;
86 if ( min > i ) min = i;
87 }
88
89 /** @return count of items */
90 public int getCount() { return count; }
91
92 /** @return max item */
93 public int getMax() { return max; }
94
95 /** @return min item */
96 public int getMin() { return min; }
97
98 /** @return Sum of items */
99 public int getSum() { return sum; }
100
101 /** @return Avg of items */
102 public double getAvg() { if ( getCount() > 0 ) return getSum()/getCount(); else return 0; }
103
104
105 }
106