001    package org.hackystat.dailyprojectdata.resource.commit;
002    
003    import static org.junit.Assert.assertEquals;
004    import static org.junit.Assert.assertTrue;
005    
006    import java.util.Date;
007    import java.util.List;
008    
009    import javax.xml.datatype.XMLGregorianCalendar;
010    
011    import org.hackystat.sensorbase.resource.sensordata.jaxb.SensorData;
012    import org.hackystat.utilities.tstamp.Tstamp;
013    import org.junit.Assert;
014    import org.junit.Before;
015    import org.junit.Test;
016    
017    /**
018     * Tests if the CommitDataContainer stores and returns the correct data based on
019     * the wrapped data instances.
020     * @author aito
021     * 
022     */
023    public class TestCommitDataContainer {
024      /** The fields used to test the CoverageData instance. */
025      private CommitDataContainer data = new CommitDataContainer();
026      private String userAusten = "austen@hawaii.edu";
027      private String userJulie = "jsakuda@hawaii.edu";
028      private String userAaron = "kagawaa@hawaii.edu";
029    
030      /** Setup the CoverageData that is tested. */
031      @Before
032      public void setUp() {
033        // First, create the test SensorData instances.
034        XMLGregorianCalendar runtimeCalendar = Tstamp.makeTimestamp(new Date().getTime());
035        String runtimeString = runtimeCalendar.toString();
036        SensorData sensorDataAusten01 = TestCommitData.createData(runtimeString, runtimeString,
037            userAusten, "C:\\foo.java", "10", "100");
038        SensorData sensorDataAusten02 = TestCommitData.createData(runtimeString, runtimeString,
039            userAusten, "C:\\foo2.java", "11", "12");
040        SensorData sensorDataJulie01 = TestCommitData.createData(runtimeString, runtimeString,
041            userJulie, "C:\\foo3.java", "10", "1");
042        SensorData sensorDataJulie02 = TestCommitData.createData(runtimeString, runtimeString,
043            userJulie, "C:\\foo4.java", "12", "100");
044        SensorData sensorDataAaron01 = TestCommitData.createData(runtimeString, runtimeString,
045            userAaron, "C:\\foo5.java", "99", "33");
046    
047        // Second, adds the sensor.
048        this.data.addCommitData(sensorDataAusten01);
049        this.data.addCommitData(sensorDataAusten02);
050        this.data.addCommitData(sensorDataJulie01);
051        this.data.addCommitData(sensorDataJulie02);
052        this.data.addCommitData(sensorDataAaron01);
053      }
054    
055      /** Tests if the correct amount of lines added are returned. */
056      @Test
057      public void testGetLinesAdded() {
058        assertEquals("The total lines added is incorrect.", 21, this.data
059            .getLinesAdded(this.userAusten));
060      }
061    
062      /** Tests if the correct amount of lines deleted are returned. */
063      @Test
064      public void testGetLinesDeleted() {
065        assertEquals("The total lines deleted is incorrect.", 112, this.data
066            .getLinesDeleted(this.userAusten));
067      }
068    
069    
070      /** Tests if the correct amount of commits by a user is returned. */
071      @Test
072      public void testGetCommits() {
073        assertEquals("The total commits is incorrect.", 2, this.data.getCommits(this.userAusten));
074        Assert.assertEquals("The total commits is incorrect.", 0, this.data
075            .getCommits("Non-ExistentUser"));
076      }
077    
078      /** Tests if the correct owners of the wrapped SensorData are returned. */
079      @Test
080      public void testGetOwners() {
081        List<String> owners = this.data.getOwners();
082        assertEquals("The amount of owners is incorrect.", 3, owners.size());
083        assertTrue("The owner " + userAusten + " does not exist.", owners
084            .contains("austen@hawaii.edu"));
085        assertTrue("The owner " + userJulie + " does not exist.", owners
086            .contains("jsakuda@hawaii.edu"));
087        assertTrue("The owner " + userAaron + " does not exist.", owners
088            .contains("kagawaa@hawaii.edu"));
089      }
090    
091      /** Tests if the all data entries are returned. */
092      @Test
093      public void testGetData() {
094        assertEquals("The total amount of data entries returned is incorrect.", 5, this.data
095            .getData().size());
096      }
097    }