001 package org.hackystat.telemetry.analyzer.function.impl; 002 003 import junit.framework.TestCase; 004 005 import org.hackystat.telemetry.analyzer.function.TelemetryFunctionManager; 006 import org.hackystat.telemetry.analyzer.model.TelemetryDataPoint; 007 import org.hackystat.telemetry.analyzer.model.TelemetryStream; 008 import org.hackystat.telemetry.analyzer.model.TelemetryStreamCollection; 009 import org.hackystat.telemetry.analyzer.model.TestTelemetryStreamCollection; 010 import org.hackystat.sensorbase.resource.projects.jaxb.Project; 011 import org.hackystat.utilities.time.interval.DayInterval; 012 import org.hackystat.utilities.time.period.Day; 013 014 /** 015 * Test suite for <code>AddFunction</code>. 016 * 017 * @author (Cedric) Qin ZHANG 018 */ 019 public class TestAddFunction extends TestCase { 020 021 private TelemetryFunctionManager manager = TelemetryFunctionManager.getInstance(); 022 private String projectName = "TestAddFunction"; 023 private Project project; 024 private Day startDay; 025 private DayInterval interval; 026 027 private String add = "add"; 028 private String test = "test"; 029 030 031 032 /** 033 * Sets up this test case. 034 * @throws Exception If test case cannot be set up. 035 */ 036 @Override 037 protected void setUp() throws Exception { 038 039 //this.project = ProjectManager.getInstance().createTestProjectClientSide(projectName); 040 this.project = new Project(); 041 this.project.setName(projectName); 042 this.startDay = Day.getInstance("01-Jan-2004"); 043 this.interval = new DayInterval(this.startDay, this.startDay.inc(1)); 044 } 045 046 /** 047 * Tears down this test case. 048 * @throws Exception If tear down failed. 049 */ 050 @Override 051 protected void tearDown() throws Exception { 052 //ProjectManager.getInstance().deleteProject(this.projectName); 053 } 054 055 /** 056 * Tests with 2 numbers. 057 * @throws Exception If test fails. 058 */ 059 public void testWith2Numbers() throws Exception { 060 Number num1 = Integer.valueOf(1); 061 Number num2 = Integer.valueOf(3); 062 Object result = this.manager.compute(add, new Number[]{num1, num2}); 063 assertEquals(4, ((Integer) result).intValue()); 064 065 num1 = Integer.valueOf(1); 066 num2 = Double.valueOf(3.5); 067 result = this.manager.compute(add, new Number[]{num1, num2}); 068 assertEquals(4.50, ((Double) result).doubleValue(), 0.00001); 069 070 num1 = Double.valueOf(1.1); 071 num2 = Double.valueOf(3.5); 072 result = this.manager.compute(add, new Number[]{num1, num2}); 073 assertEquals(4.60, ((Double) result).doubleValue(), 0.00001); 074 } 075 076 /** 077 * Tests with 1 telemetry stream collection and 1 numbers. 078 * @throws Exception If test fails. 079 */ 080 public void testWithTelemetryStreamCollectionAndNumber() throws Exception { //NOPMD assert OK. 081 TelemetryStreamCollection input 082 = new TelemetryStreamCollection(test, this.project, this.interval); 083 TelemetryStream inputStream = new TelemetryStream(test); 084 inputStream.addDataPoint(new TelemetryDataPoint(this.startDay, Integer.valueOf(0))); 085 inputStream.addDataPoint(new TelemetryDataPoint(this.startDay.inc(1), Integer.valueOf(1))); 086 input.add(inputStream); 087 088 TelemetryStreamCollection output = (TelemetryStreamCollection) 089 this.manager.compute(add, new Object[]{input, new Double(0.1)}); 090 091 TelemetryStreamCollection expected 092 = new TelemetryStreamCollection(test, this.project, this.interval); 093 TelemetryStream expectedStream = new TelemetryStream(test); 094 expectedStream.addDataPoint(new TelemetryDataPoint(this.startDay, new Double(0.1))); 095 expectedStream.addDataPoint(new TelemetryDataPoint(this.startDay.inc(1), new Double(1.1))); 096 expected.add(expectedStream); 097 098 TestTelemetryStreamCollection.assertEqualsIgnoreName(expected, output); 099 } 100 101 /** 102 * Tests with 1 numbers and 1 telemetry stream collection. 103 * @throws Exception If test fails. 104 */ 105 public void testWithNumberAndTelemetryStreamCollection() throws Exception { //NOPMD assert OK 106 TelemetryStreamCollection input 107 = new TelemetryStreamCollection(test, this.project, this.interval); 108 TelemetryStream inputStream = new TelemetryStream(test); 109 inputStream.addDataPoint(new TelemetryDataPoint(this.startDay, Integer.valueOf(0))); 110 inputStream.addDataPoint(new TelemetryDataPoint(this.startDay.inc(1), Integer.valueOf(1))); 111 input.add(inputStream); 112 113 TelemetryStreamCollection output = (TelemetryStreamCollection) 114 this.manager.compute(add, new Object[]{new Double(0.1), input}); 115 116 TelemetryStreamCollection expected 117 = new TelemetryStreamCollection(test, this.project, this.interval); 118 TelemetryStream expectedStream = new TelemetryStream(test); 119 expectedStream.addDataPoint(new TelemetryDataPoint(this.startDay, new Double(0.1))); 120 expectedStream.addDataPoint(new TelemetryDataPoint(this.startDay.inc(1), new Double(1.1))); 121 expected.add(expectedStream); 122 123 TestTelemetryStreamCollection.assertEqualsIgnoreName(expected, output); 124 } 125 126 /** 127 * Tests with 2 telemetry stream collections. 128 * @throws Exception If test fails. 129 */ 130 public void testWith2TelemetryStreamCollections() throws Exception { //NOPMD assert OK. 131 TelemetryStreamCollection input1 132 = new TelemetryStreamCollection(test, this.project, this.interval); 133 TelemetryStream inputStream1 = new TelemetryStream(test); 134 inputStream1.addDataPoint(new TelemetryDataPoint(this.startDay, Integer.valueOf(0))); 135 inputStream1.addDataPoint(new TelemetryDataPoint(this.startDay.inc(1), Integer.valueOf(1))); 136 input1.add(inputStream1); 137 138 TelemetryStreamCollection input2 139 = new TelemetryStreamCollection(test, this.project, this.interval); 140 TelemetryStream inputStream2 = new TelemetryStream(test); 141 inputStream2.addDataPoint(new TelemetryDataPoint(this.startDay, Integer.valueOf(10))); 142 inputStream2.addDataPoint(new TelemetryDataPoint(this.startDay.inc(1), Integer.valueOf(11))); 143 input2.add(inputStream2); 144 145 TelemetryStreamCollection output = (TelemetryStreamCollection) 146 this.manager.compute(add, new Object[]{input1, input2}); 147 148 TelemetryStreamCollection expected 149 = new TelemetryStreamCollection(test, this.project, this.interval); 150 TelemetryStream expectedStream = new TelemetryStream(test); 151 expectedStream.addDataPoint(new TelemetryDataPoint(this.startDay, Integer.valueOf(10))); 152 expectedStream.addDataPoint(new TelemetryDataPoint(this.startDay.inc(1), Integer.valueOf(12))); 153 expected.add(expectedStream); 154 155 TestTelemetryStreamCollection.assertEqualsIgnoreName(expected, output); 156 } 157 }