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