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.sensorbase.resource.projects.jaxb.Project;
010    import org.hackystat.utilities.time.interval.DayInterval;
011    import org.hackystat.utilities.time.period.Day;
012    
013    /**
014     * Test suite for <code>FilterZeroFunction</code>.
015     * 
016     * @author (Cedric) Qin ZHANG
017     */
018    public class TestFilterZeroFunction extends TestCase {
019      
020      private TelemetryFunctionManager manager = TelemetryFunctionManager.getInstance();
021      private String projectName = "TestFilterZeroFunction";
022      private Project project;
023      private Day startDay;
024      private DayInterval interval;
025    
026      /**
027       * Sets up this test case.
028       * @throws Exception If test case cannot be set up.
029       */
030      @Override
031      protected void setUp() throws Exception {
032    
033        //this.project = ProjectManager.getInstance().createTestProjectClientSide(projectName);
034        this.project = new Project();
035        this.project.setName(projectName);   
036        this.startDay = Day.getInstance("01-Jan-2004"); 
037        this.interval = new DayInterval(this.startDay, this.startDay.inc(1));
038      }
039      
040      /**
041       * Tears down this test case.
042       * @throws Exception If tear down failed.
043       */
044      @Override
045      protected void tearDown() throws Exception {
046        //ProjectManager.getInstance().deleteProject(this.projectName);
047      }
048      
049      /**
050       * Tests in GE mode.
051       * @throws Exception If test fails.
052       */
053      public void testModeGE() throws Exception {    
054        TelemetryStreamCollection input 
055            = new TelemetryStreamCollection("test", this.project, this.interval);
056        TelemetryStream inputStream1 = new TelemetryStream("test1"); //remain
057        inputStream1.addDataPoint(new TelemetryDataPoint(this.startDay, Integer.valueOf(1)));
058        inputStream1.addDataPoint(new TelemetryDataPoint(this.startDay.inc(1), Integer.valueOf(2)));
059        input.add(inputStream1);
060        TelemetryStream inputStream2 = new TelemetryStream("test2"); 
061        inputStream2.addDataPoint(new TelemetryDataPoint(this.startDay, Integer.valueOf(0)));
062        inputStream2.addDataPoint(new TelemetryDataPoint(this.startDay.inc(1), Integer.valueOf(0)));
063        input.add(inputStream2);
064        TelemetryStream inputStream3 = new TelemetryStream("test3");
065        inputStream3.addDataPoint(new TelemetryDataPoint(this.startDay, null));
066        inputStream3.addDataPoint(new TelemetryDataPoint(this.startDay.inc(1), null));
067        input.add(inputStream3);
068        TelemetryStream inputStream4 = new TelemetryStream("test4");
069        inputStream4.addDataPoint(new TelemetryDataPoint(this.startDay, new Double(0)));
070        inputStream4.addDataPoint(new TelemetryDataPoint(this.startDay.inc(1), new Double(0)));
071        input.add(inputStream4);
072        TelemetryStream inputStream5 = new TelemetryStream("test5");
073        inputStream5.addDataPoint(new TelemetryDataPoint(this.startDay, new Float(0)));
074        inputStream5.addDataPoint(new TelemetryDataPoint(this.startDay.inc(1), new Float(0)));
075        input.add(inputStream5);
076        TelemetryStream inputStream6 = new TelemetryStream("test6"); //remain
077        inputStream6.addDataPoint(new TelemetryDataPoint(this.startDay, new Double(Double.NaN)));
078        inputStream6.addDataPoint(new TelemetryDataPoint(this.startDay.inc(1), new Double(Double.NaN)));
079        input.add(inputStream6);
080        TelemetryStream inputStream7 = new TelemetryStream("test7"); //remain
081        inputStream7.addDataPoint(new TelemetryDataPoint(this.startDay, new Double(2.3)));
082        inputStream7.addDataPoint(new TelemetryDataPoint(this.startDay.inc(1), new Double(0)));
083        input.add(inputStream7);
084        TelemetryStream inputStream8 = new TelemetryStream("test8"); //remain
085        inputStream8.addDataPoint(new TelemetryDataPoint(this.startDay, new Double(2.3)));
086        inputStream8.addDataPoint(new TelemetryDataPoint(this.startDay.inc(1), null));
087        input.add(inputStream8);
088        TelemetryStream inputStream9 = new TelemetryStream("test9"); //remain
089        inputStream9.addDataPoint(new TelemetryDataPoint(this.startDay, Integer.valueOf(2)));
090        inputStream9.addDataPoint(new TelemetryDataPoint(this.startDay.inc(1), null));
091        input.add(inputStream9);
092        
093        TelemetryStreamCollection output 
094           = (TelemetryStreamCollection) this.manager.compute("FilterZero", new Object[]{input});
095        
096        assertEquals("test", output.getName());
097        assertSame(this.project, output.getProject());
098        assertSame(this.interval, output.getInterval());
099        assertEquals(5, output.getTelemetryStreams().size());
100        assertSame(inputStream1, output.get("test1"));
101        assertSame(inputStream6, output.get("test6"));
102        assertSame(inputStream7, output.get("test7"));
103        assertSame(inputStream8, output.get("test8"));
104        assertSame(inputStream9, output.get("test9"));
105      }
106    }