001    package org.hackystat.telemetry.analyzer.configuration;
002    
003    import junit.framework.TestCase;
004    
005    import org.hackystat.sensorbase.resource.projects.jaxb.Project;
006    
007    
008    /**
009     * Test suite for <code>ShareScope</code>.
010     * 
011     * @author (Cedric) Qin Zhang, Philip Johnson
012     */
013    public class TestShareScope extends TestCase {
014    
015      private Project project;
016    
017      /**
018       * Test case set up.
019       * 
020       * @throws Exception If test case cannot be set up.
021       */
022      @Override
023      protected void setUp() throws Exception {
024        this.project = new Project();
025      }
026    
027      /**
028       * Tests everything.
029       * 
030       * @throws Exception If test fails.
031       */
032      public void testAll() throws Exception {
033        ShareScope scope = ShareScope.getGlobalShareScope();
034        assertEquals(true, scope.isGlobal());
035        assertEquals(false, scope.isProject());
036        assertEquals(false, scope.isPrivate());
037        try {
038          scope.getProject();
039          fail("Should raise exception.");
040        }
041        catch (TelemetryConfigurationException ex) { //NOPMD
042          // expected
043        }
044    
045        scope = ShareScope.getPrivateShareScope();
046        assertEquals(false, scope.isGlobal());
047        assertEquals(false, scope.isProject());
048        assertEquals(true, scope.isPrivate());
049        try {
050          scope.getProject();
051          fail("Should raise exception.");
052        }
053        catch (TelemetryConfigurationException ex) { //NOPMD
054          // expected
055        }
056    
057        scope = ShareScope.getProjectShareScope(this.project);
058        assertEquals(false, scope.isGlobal());
059        assertEquals(true, scope.isProject());
060        assertEquals(false, scope.isPrivate());
061        assertSame(this.project, scope.getProject());
062    
063        try {
064          scope = ShareScope.getProjectShareScope(null);
065          fail("Should raise exception.");
066        }
067        catch (Exception ex) { //NOPMD
068          // expected
069        }
070      }
071    
072      /**
073       * Tests equals and hashCode methods.
074       * 
075       * @throws Exception If test fails.
076       */
077      public void testEquals() throws Exception {
078        ShareScope scope1a = ShareScope.getGlobalShareScope();
079        ShareScope scope1b = ShareScope.getGlobalShareScope();
080        ShareScope scope2a = ShareScope.getPrivateShareScope();
081        ShareScope scope2b = ShareScope.getPrivateShareScope();
082        ShareScope scope3a = ShareScope.getProjectShareScope(this.project);
083        ShareScope scope3b = ShareScope.getProjectShareScope(this.project);
084    
085        assertEquals(scope1a, scope1b);
086        assertEquals(scope1a.hashCode(), scope1b.hashCode());
087        assertEquals(scope2a, scope2b);
088        assertEquals(scope2a.hashCode(), scope2b.hashCode());
089        assertEquals(scope3a, scope3b);
090        assertEquals(scope3a.hashCode(), scope3b.hashCode());
091    
092        assertFalse(scope1a.equals(scope2a));
093        assertFalse(scope1a.equals(scope3a));
094        assertFalse(scope2a.equals(scope3a));
095      }
096    }