001    package org.hackystat.dailyprojectdata.resource.build;
002    
003    import static org.junit.Assert.assertNull;
004    import static org.junit.Assert.assertSame;
005    
006    import java.util.Map;
007    import java.util.Set;
008    
009    import org.junit.Test;
010    
011    /**
012     * Tests that the <code>MemberBuildCounter</code> counts correctly.
013     * 
014     * @author jsakuda
015     *
016     */
017    public class TestMemberBuildCounter {
018      private String member1 = "member1";
019      private String member2 = "member2";
020      
021      /** Tests the successful and failed builds are counted correctly. */
022      @Test public void testMemberCounts() {
023        MemberBuildCounter counter = new MemberBuildCounter();
024        
025        // add 5 failures for member1
026        for (int i = 0; i < 5; i++) {
027          counter.addFailedBuild(this.member1);
028        }
029        
030        // add 3 successful builds for member1
031        for (int i = 0; i < 3; i++) {
032          counter.addSuccessfulBuild(this.member1);
033        }
034        
035        // add 7 successful builds for member2
036        for (int i = 0; i < 7; i++) {
037          counter.addSuccessfulBuild(this.member2);
038        }
039        
040        Set<String> members = counter.getMembers();
041        assertSame("Should have 2 members", 2, members.size());
042        
043        Map<String, Integer> failedBuilds = counter.getFailedBuilds();
044        Map<String, Integer> successfulBuilds = counter.getSuccessfulBuilds();
045        
046        assertSame("member1 has 5 failures.", 5, failedBuilds.get(this.member1));
047        assertNull("member2 should have no failure mapping.", failedBuilds.get(this.member2));
048        assertSame("member1 has 3 successes.", 3, successfulBuilds.get(this.member1));
049        assertSame("member2 has 7 successes.", 7, successfulBuilds.get(this.member2));
050      }
051    }