001    package org.hackystat.telemetry.analyzer.model;
002    
003    import org.hackystat.utilities.time.period.Day;
004    import org.hackystat.utilities.time.period.Month;
005    import org.hackystat.utilities.time.period.TimePeriod;
006    import org.hackystat.utilities.time.period.Week;
007    
008    import junit.framework.TestCase;
009    
010    /**
011     * Test suite for <code>TelemetryDataPoint</code>.
012     * 
013     * @author (Cedric) Qin Zhang
014     */
015    public class TestTelemetryDataPoint extends TestCase {
016    
017      /**
018       * Tests properties.
019       */
020      public void testProperties() {
021        TimePeriod period = Day.getInstance(2002, 1, 1);
022        Number value = Integer.valueOf(12);
023        TelemetryDataPoint dataPoint = new TelemetryDataPoint(period, value);
024        assertEquals(period, dataPoint.getPeriod());
025        assertEquals(value, dataPoint.getValue());
026      }
027    
028      /**
029       * Tests <code>equals</code> method.
030       */
031      public void testEquals() {
032        Day day1 = Day.getInstance(2002, 1, 1);
033        Day day2 = Day.getInstance(2002, 1, 1);
034        Day day3 = Day.getInstance(2002, 2, 2);
035        Number value = Integer.valueOf(12);
036        assertEquals(new TelemetryDataPoint(day1, value), new TelemetryDataPoint(day2, value));
037        assertEquals(new TelemetryDataPoint(day1, value).hashCode(),
038            new TelemetryDataPoint(day2, value).hashCode());
039        assertEquals(new TelemetryDataPoint(day1, null), new TelemetryDataPoint(day2, null));
040        assertEquals(new TelemetryDataPoint(day1, null).hashCode(), new TelemetryDataPoint(day2, null)
041            .hashCode());
042    
043        assertNotEquals(new TelemetryDataPoint(day1, value), new TelemetryDataPoint(day2, null));
044        assertNotEquals(new TelemetryDataPoint(day1, null), new TelemetryDataPoint(day2, value));
045        assertNotEquals(new TelemetryDataPoint(day1, value), new TelemetryDataPoint(day3, value));
046        assertNotEquals(new TelemetryDataPoint(day3, value), new TelemetryDataPoint(day2, value));
047    
048        Week week1 = new Week(day1);
049        Week week2 = new Week(day2);
050        assertEquals(new TelemetryDataPoint(week1, value), new TelemetryDataPoint(week2, value));
051        assertEquals(new TelemetryDataPoint(week1, value).hashCode(), new TelemetryDataPoint(week2,
052            value).hashCode());
053    
054        Month month1 = new Month(2002, 1);
055        Month month2 = new Month(2002, 1);
056        assertEquals(new TelemetryDataPoint(month1, value), new TelemetryDataPoint(month2, value));
057        assertEquals(new TelemetryDataPoint(month1, value).hashCode(), new TelemetryDataPoint(month2,
058            value).hashCode());
059      }
060    
061      /**
062       * Asserts that two objects are not equals.
063       * 
064       * @param o1 Object 1.
065       * @param o2 Object 2.
066       */
067      private void assertNotEquals(Object o1, Object o2) {
068        assertFalse(o1.equals(o2));
069      }
070    }