001 package org.hackystat.telemetry.analyzer.model; 002 003 import java.util.List; 004 005 import junit.framework.TestCase; 006 007 import org.hackystat.utilities.time.period.Day; 008 009 /** 010 * Test suite for <code>TelemetryStream</code>. 011 * 012 * @author (Cedric) Qin Zhang 013 */ 014 public class TestTelemetryStream extends TestCase { 015 016 /** 017 * Test case. 018 * 019 * @throws Exception If test fails. 020 */ 021 public void testAll() throws Exception { 022 TelemetryStream telemetryStream = new TelemetryStream("TestingStream"); 023 assertEquals("TestingStream", telemetryStream.getTag()); 024 025 Day day = Day.getInstance(2003, 1, 1); 026 telemetryStream.addDataPoint(new TelemetryDataPoint(day.inc(1), Integer.valueOf(1))); 027 telemetryStream.addDataPoint(new TelemetryDataPoint(day, Integer.valueOf(0))); 028 telemetryStream.addDataPoint(new TelemetryDataPoint(day.inc(2), Integer.valueOf(2))); 029 030 assertEquals(Integer.valueOf(0), telemetryStream.getDataPointValue(day)); 031 assertEquals(Integer.valueOf(1), telemetryStream.getDataPointValue(day.inc(1))); 032 assertEquals(Integer.valueOf(2), telemetryStream.getDataPointValue(day.inc(2))); 033 034 List<TelemetryDataPoint> list = telemetryStream.getDataPoints(); 035 assertEquals(day, list.get(0).getPeriod()); 036 assertEquals(Integer.valueOf(0), list.get(0).getValue()); 037 assertEquals(day.inc(1), list.get(1).getPeriod()); 038 assertEquals(Integer.valueOf(1), list.get(1).getValue()); 039 assertEquals(day.inc(2), list.get(2).getPeriod()); 040 assertEquals(Integer.valueOf(2), list.get(2).getValue()); 041 } 042 043 /** 044 * Asserts equality for two telemetry stream objects. 045 * 046 * @param stream1 Telemetry stream1. 047 * @param stream2 Telemetry stream2. 048 * 049 * @throws Exception If the two streams are not the same. 050 */ 051 static void assertEquals(TelemetryStream stream1, TelemetryStream stream2) throws Exception { 052 assertEquals(stream1.getTag(), stream2.getTag()); 053 List<TelemetryDataPoint> dataPoints1 = stream1.getDataPoints(); 054 List<TelemetryDataPoint> dataPoints2 = stream2.getDataPoints(); 055 assertEquals(dataPoints1.size(), dataPoints2.size()); 056 057 for (int i = 0; i < dataPoints1.size(); i++) { 058 TelemetryDataPoint dp1 = dataPoints1.get(i); 059 TelemetryDataPoint dp2 = dataPoints2.get(i); 060 assertEquals(dp1.getPeriod(), dp2.getPeriod()); 061 062 //don't use dp1.equals(dp2), we allow some error margin due to compute rounding. 063 Number value1 = dp1.getValue(); 064 Number value2 = dp2.getValue(); 065 if (value1 == null && value2 == null) { //NOPMD 066 //ok, do nothing 067 } 068 else if (value1 != null && value2 != null) { //NOPMD 069 assertEquals(value1.doubleValue(), value2.doubleValue(), 0.0001); 070 } 071 else { 072 throw new Exception("One data point has value null, while the other has non-null value."); 073 } 074 } 075 } 076 }