Coverage Report - com.jeantessier.metrics.TestSubMetricsAccumulatorMeasurement
 
Classes in this File Line Coverage Branch Coverage Complexity
TestSubMetricsAccumulatorMeasurement
95%
150/157
N/A
1
 
 1  
 /*
 2  
  *  Copyright (c) 2001-2009, Jean Tessier
 3  
  *  All rights reserved.
 4  
  *  
 5  
  *  Redistribution and use in source and binary forms, with or without
 6  
  *  modification, are permitted provided that the following conditions
 7  
  *  are met:
 8  
  *  
 9  
  *      * Redistributions of source code must retain the above copyright
 10  
  *        notice, this list of conditions and the following disclaimer.
 11  
  *  
 12  
  *      * Redistributions in binary form must reproduce the above copyright
 13  
  *        notice, this list of conditions and the following disclaimer in the
 14  
  *        documentation and/or other materials provided with the distribution.
 15  
  *  
 16  
  *      * Neither the name of Jean Tessier nor the names of his contributors
 17  
  *        may be used to endorse or promote products derived from this software
 18  
  *        without specific prior written permission.
 19  
  *  
 20  
  *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 21  
  *  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 22  
  *  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 23  
  *  A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR
 24  
  *  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
 25  
  *  EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
 26  
  *  PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
 27  
  *  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
 28  
  *  LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
 29  
  *  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 30  
  *  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 31  
  */
 32  
 
 33  
 package com.jeantessier.metrics;
 34  
 
 35  
 import junit.framework.*;
 36  
 
 37  11
 public class TestSubMetricsAccumulatorMeasurement extends TestCase implements MeasurementVisitor {
 38  
     private MeasurementDescriptor descriptor;
 39  
     private AccumulatorMeasurement measurement;
 40  
     private Metrics metrics;
 41  
     private Measurement visited;
 42  
 
 43  
     private MeasurementDescriptor nameList;
 44  
     private MeasurementDescriptor numberList;
 45  
     private MeasurementDescriptor counter;
 46  
 
 47  
     private Metrics m1;
 48  
     private Metrics m2;
 49  
     private Metrics m3;
 50  
 
 51  
     protected void setUp() throws Exception {
 52  11
         m1 = new Metrics("m1");
 53  11
         m2 = new Metrics("m2");
 54  11
         m3 = new Metrics("m3");
 55  
 
 56  11
         nameList = new MeasurementDescriptor();
 57  11
         nameList.setShortName("NL");
 58  11
         nameList.setLongName("name list");
 59  11
         nameList.setClassFor(NameListMeasurement.class);
 60  
 
 61  11
         numberList = new MeasurementDescriptor();
 62  11
         numberList.setShortName("NbL");
 63  11
         numberList.setLongName("number list");
 64  11
         numberList.setClassFor(NameListMeasurement.class);
 65  
 
 66  11
         counter = new MeasurementDescriptor();
 67  11
         counter.setShortName("NL");
 68  11
         counter.setLongName("counter");
 69  11
         counter.setClassFor(CounterMeasurement.class);
 70  
 
 71  11
         m1.track(nameList.createMeasurement(m1));
 72  11
         m1.addToMeasurement("NL", "abc");
 73  11
         m1.addToMeasurement("NL", "def");
 74  11
         m1.addToMeasurement("NL", "ghi");
 75  
 
 76  11
         m1.track(numberList.createMeasurement(m1));
 77  11
         m1.addToMeasurement("NbL", "123");
 78  11
         m1.addToMeasurement("NbL", "456");
 79  11
         m1.addToMeasurement("NbL", "789");
 80  
 
 81  11
         m2.track(nameList.createMeasurement(m2));
 82  11
         m2.addToMeasurement("NL", "jkl");
 83  11
         m2.addToMeasurement("NL", "abc");
 84  
 
 85  11
         m2.track(numberList.createMeasurement(m2));
 86  11
         m2.addToMeasurement("NbL", "159");
 87  11
         m2.addToMeasurement("NbL", "248");
 88  
 
 89  11
         m3.track(counter.createMeasurement(m3));
 90  11
         m3.addToMeasurement("NL", 1);
 91  
 
 92  11
         metrics = new Metrics("metrics");
 93  
 
 94  11
         descriptor = new MeasurementDescriptor();
 95  11
         descriptor.setShortName("foo");
 96  11
         descriptor.setLongName("bar");
 97  11
         descriptor.setClassFor(SubMetricsAccumulatorMeasurement.class);
 98  11
         descriptor.setCached(false);
 99  11
     }
 100  
 
 101  
     public void testCreateFromMeasurementDescriptor() throws Exception {
 102  1
         measurement = (AccumulatorMeasurement) descriptor.createMeasurement(metrics);
 103  
 
 104  1
         assertNotNull(measurement);
 105  1
         assertEquals(descriptor, measurement.getDescriptor());
 106  1
         assertSame(descriptor, measurement.getDescriptor());
 107  1
         assertEquals(SubMetricsAccumulatorMeasurement.class, measurement.getClass());
 108  1
         assertEquals("foo", measurement.getShortName());
 109  1
         assertEquals("bar", measurement.getLongName());
 110  1
     }
 111  
 
 112  
     public void testNullInit() throws Exception {
 113  1
         measurement = (AccumulatorMeasurement) descriptor.createMeasurement(metrics);
 114  1
         assertEquals(0, measurement.getValue().intValue());
 115  1
         assertTrue(measurement.getValues().isEmpty());
 116  
 
 117  1
         metrics.addSubMetrics(m1);
 118  1
         metrics.addSubMetrics(m2);
 119  1
         metrics.addSubMetrics(m3);
 120  
 
 121  1
         assertEquals(0, measurement.getValue().intValue());
 122  1
         assertTrue(measurement.getValues().isEmpty());
 123  1
     }
 124  
 
 125  
     public void testEmptyInit() throws Exception {
 126  1
         descriptor.setInitText("");
 127  
 
 128  1
         measurement = (AccumulatorMeasurement) descriptor.createMeasurement(metrics);
 129  1
         assertEquals(0, measurement.getValue().intValue());
 130  1
         assertTrue(measurement.getValues().isEmpty());
 131  
 
 132  1
         metrics.addSubMetrics(m1);
 133  1
         metrics.addSubMetrics(m2);
 134  1
         metrics.addSubMetrics(m3);
 135  
 
 136  1
         assertEquals(0, measurement.getValue().intValue());
 137  1
         assertTrue(measurement.getValues().isEmpty());
 138  1
     }
 139  
 
 140  
     public void testRawValues() throws Exception {
 141  1
         descriptor.setInitText("NL");
 142  
 
 143  1
         measurement = (AccumulatorMeasurement) descriptor.createMeasurement(metrics);
 144  1
         assertEquals(0, measurement.getValue().intValue());
 145  1
         assertTrue(measurement.getValues().isEmpty());
 146  
 
 147  1
         metrics.addSubMetrics(m1);
 148  1
         metrics.addSubMetrics(m2);
 149  1
         metrics.addSubMetrics(m3);
 150  
 
 151  1
         assertEquals(4, measurement.getValue().intValue());
 152  1
         assertTrue("\"abc\" not in " + measurement.getValues(), measurement.getValues().contains("abc"));
 153  1
         assertTrue("\"def\" not in " + measurement.getValues(), measurement.getValues().contains("def"));
 154  1
         assertTrue("\"ghi\" not in " + measurement.getValues(), measurement.getValues().contains("ghi"));
 155  1
         assertTrue("\"jkl\" not in " + measurement.getValues(), measurement.getValues().contains("jkl"));
 156  1
     }
 157  
 
 158  
     public void testCachedValues() throws Exception {
 159  1
         descriptor.setInitText("NL");
 160  1
         descriptor.setCached(true);
 161  
 
 162  1
         measurement = (AccumulatorMeasurement) descriptor.createMeasurement(metrics);
 163  1
         assertEquals(0, measurement.getValue().intValue());
 164  1
         assertTrue(measurement.getValues().isEmpty());
 165  
 
 166  1
         metrics.addSubMetrics(m1);
 167  1
         metrics.addSubMetrics(m2);
 168  1
         metrics.addSubMetrics(m3);
 169  
 
 170  1
         assertEquals(0, measurement.getValue().intValue());
 171  1
         assertTrue(measurement.getValues().isEmpty());
 172  1
     }
 173  
 
 174  
     public void testSingleFiltered() throws Exception {
 175  1
         descriptor.setInitText("NL /a/");
 176  
 
 177  1
         measurement = (AccumulatorMeasurement) descriptor.createMeasurement(metrics);
 178  1
         assertEquals(0, measurement.getValue().intValue());
 179  1
         assertTrue(measurement.getValues().isEmpty());
 180  
 
 181  1
         metrics.addSubMetrics(m1);
 182  1
         metrics.addSubMetrics(m2);
 183  1
         metrics.addSubMetrics(m3);
 184  
 
 185  1
         assertEquals(1, measurement.getValue().intValue());
 186  1
         assertTrue("\"abc\" not in " + measurement.getValues(), measurement.getValues().contains("abc"));
 187  1
     }
 188  
 
 189  
     public void testMultiFilterFiltered() throws Exception {
 190  1
         descriptor.setInitText("NL /a/\nNL /k/");
 191  
 
 192  1
         measurement = (AccumulatorMeasurement) descriptor.createMeasurement(metrics);
 193  1
         assertEquals(0, measurement.getValue().intValue());
 194  1
         assertTrue(measurement.getValues().isEmpty());
 195  
 
 196  1
         metrics.addSubMetrics(m1);
 197  1
         metrics.addSubMetrics(m2);
 198  1
         metrics.addSubMetrics(m3);
 199  
 
 200  1
         assertEquals(2, measurement.getValue().intValue());
 201  1
         assertTrue("\"abc\" not in " + measurement.getValues(), measurement.getValues().contains("abc"));
 202  1
         assertTrue("\"jkl\" not in " + measurement.getValues(), measurement.getValues().contains("jkl"));
 203  1
     }
 204  
 
 205  
     public void testModifiedValues() throws Exception {
 206  1
         descriptor.setInitText("NL /(a)/");
 207  
 
 208  1
         measurement = (AccumulatorMeasurement) descriptor.createMeasurement(metrics);
 209  1
         assertEquals(0, measurement.getValue().intValue());
 210  1
         assertTrue(measurement.getValues().isEmpty());
 211  
 
 212  1
         metrics.addSubMetrics(m1);
 213  1
         metrics.addSubMetrics(m2);
 214  1
         metrics.addSubMetrics(m3);
 215  
 
 216  1
         assertEquals(1, measurement.getValue().intValue());
 217  1
         assertTrue("\"a\" not in " + measurement.getValues(), measurement.getValues().contains("a"));
 218  1
     }
 219  
 
 220  
     public void testMultiMeasurements() throws Exception {
 221  1
         descriptor.setInitText("NL /a/\nNbL /2/");
 222  
 
 223  1
         measurement = (AccumulatorMeasurement) descriptor.createMeasurement(metrics);
 224  1
         assertEquals(0, measurement.getValue().intValue());
 225  1
         assertTrue(measurement.getValues().isEmpty());
 226  
 
 227  1
         metrics.addSubMetrics(m1);
 228  1
         metrics.addSubMetrics(m2);
 229  1
         metrics.addSubMetrics(m3);
 230  
 
 231  1
         assertEquals(3, measurement.getValue().intValue());
 232  1
         assertTrue("\"abc\" not in " + measurement.getValues(), measurement.getValues().contains("abc"));
 233  1
         assertTrue("\"123\" not in " + measurement.getValues(), measurement.getValues().contains("123"));
 234  1
         assertTrue("\"248\" not in " + measurement.getValues(), measurement.getValues().contains("248"));
 235  1
     }
 236  
 
 237  
     public void testAccept() throws Exception {
 238  1
         measurement = (AccumulatorMeasurement) descriptor.createMeasurement(metrics);
 239  
 
 240  1
         visited = null;
 241  1
         measurement.accept(this);
 242  1
         assertSame(measurement, visited);
 243  1
     }
 244  
 
 245  
     public void testEmpty() throws Exception {
 246  1
         descriptor.setInitText("NL");
 247  
 
 248  1
         measurement = (AccumulatorMeasurement) descriptor.createMeasurement(metrics);
 249  1
         metrics.track(nameList.createMeasurement(metrics));
 250  
 
 251  1
         Metrics submetrics = new Metrics("submetrics");
 252  1
         submetrics.track(nameList.createMeasurement(submetrics));
 253  1
         metrics.addSubMetrics(submetrics);
 254  
         
 255  1
         assertTrue("Before Add()", measurement.isEmpty());
 256  
 
 257  1
         submetrics.addToMeasurement("NL", "foo");
 258  
 
 259  1
         assertFalse("After Add()", measurement.isEmpty());
 260  1
     }
 261  
     
 262  
     public void visitStatisticalMeasurement(StatisticalMeasurement measurement) {
 263  
         // Do nothing
 264  0
     }
 265  
     
 266  
     public void visitRatioMeasurement(RatioMeasurement measurement) {
 267  
         // Do nothing
 268  0
     }
 269  
     
 270  
     public void visitNbSubMetricsMeasurement(NbSubMetricsMeasurement measurement) {
 271  
         // Do nothing
 272  0
     }
 273  
     
 274  
     public void visitCounterMeasurement(CounterMeasurement measurement) {
 275  
         // Do nothing
 276  0
     }
 277  
     
 278  
     public void visitContextAccumulatorMeasurement(ContextAccumulatorMeasurement measurement) {
 279  
         // Do nothing
 280  0
     }
 281  
         
 282  
     public void visitNameListMeasurement(NameListMeasurement measurement) {
 283  
         // Do nothing
 284  0
     }
 285  
     
 286  
     public void visitSubMetricsAccumulatorMeasurement(SubMetricsAccumulatorMeasurement measurement) {
 287  1
         visited = measurement;
 288  1
     }
 289  
 
 290  
     public void visitSumMeasurement(SumMeasurement measurement) {
 291  
         // Do nothing
 292  0
     }
 293  
 }