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