View Javadoc
1   package com.atlassian.plugin.descriptors;
2   
3   import com.atlassian.plugin.ModuleDescriptor;
4   import junit.framework.TestCase;
5   
6   import static org.mockito.Mockito.mock;
7   import static org.mockito.Mockito.when;
8   
9   /**
10   * Responsible for testing that the <tt>equals</tt> contract defined by
11   * {@link com.atlassian.plugin.ModuleDescriptor#equals(Object)} is fulfilled by the
12   * {@link ModuleDescriptors.EqualsBuilder} class.
13   *
14   * @since 2.8.0
15   */
16  public class TestModuleDescriptorsEqualsBuilder extends TestCase {
17      public void testAModuleDescriptorMustNotBeEqualToNull() {
18          final ModuleDescriptor descriptor = mock(ModuleDescriptor.class);
19  
20          assertFalse(new ModuleDescriptors.EqualsBuilder().descriptor(descriptor).isEqualTo(null));
21      }
22  
23      public void testModuleDescriptorsShouldBeEqualIfTheyHaveTheSameCompleteKey() {
24          final ModuleDescriptor descriptor1 = mock(ModuleDescriptor.class);
25          final ModuleDescriptor descriptor2 = mock(ModuleDescriptor.class);
26  
27          when(descriptor1.getCompleteKey()).thenReturn("abc:xyz");
28          when(descriptor2.getCompleteKey()).thenReturn("abc:xyz");
29  
30          assertTrue(new ModuleDescriptors.EqualsBuilder().descriptor(descriptor1).isEqualTo(descriptor2));
31      }
32  
33      public void testModuleDescriptorsShouldBeUnEqualIfTheyDoNotHaveTheSameCompleteKey() {
34          final ModuleDescriptor descriptor1 = mock(ModuleDescriptor.class);
35          final ModuleDescriptor descriptor2 = mock(ModuleDescriptor.class);
36  
37          when(descriptor1.getCompleteKey()).thenReturn("abc:xyz");
38          when(descriptor2.getCompleteKey()).thenReturn("def:xyz");
39  
40          assertFalse(new ModuleDescriptors.EqualsBuilder().descriptor(descriptor1).isEqualTo(descriptor2));
41      }
42  
43      public void testAModuleDescriptorMustNotBeEqualToAnObjectThatIsNotAModuleDescriptor() {
44          final ModuleDescriptor descriptor = mock(ModuleDescriptor.class);
45          final Object anObjectThatIsNotAModuleDescriptor = new Object();
46  
47          assertFalse(new ModuleDescriptors.EqualsBuilder().descriptor(descriptor).isEqualTo(anObjectThatIsNotAModuleDescriptor));
48      }
49  
50      public void testAModuleDescriptorShouldBeEqualToItSelf() {
51          final ModuleDescriptor descriptor = mock(ModuleDescriptor.class);
52  
53          assertTrue(new ModuleDescriptors.EqualsBuilder().descriptor(descriptor).isEqualTo(descriptor));
54      }
55  
56      public void testEqualsImplementationIsReflexiveForTwoModuleDescriptorsWithTheSameCompleteKey() {
57          final ModuleDescriptor descriptor1 = mock(ModuleDescriptor.class);
58          final ModuleDescriptor descriptor2 = mock(ModuleDescriptor.class);
59  
60          when(descriptor1.getCompleteKey()).thenReturn("abc:xyz");
61          when(descriptor2.getCompleteKey()).thenReturn("abc:xyz");
62  
63          assertTrue(new ModuleDescriptors.EqualsBuilder().descriptor(descriptor1).isEqualTo(descriptor2));
64          assertTrue(new ModuleDescriptors.EqualsBuilder().descriptor(descriptor2).isEqualTo(descriptor1));
65      }
66  
67      public void testEqualsImplementationIsTransitiveForThreeDescriptorsWithTheSameCompleteKey() {
68          final ModuleDescriptor descriptor1 = mock(ModuleDescriptor.class);
69          final ModuleDescriptor descriptor2 = mock(ModuleDescriptor.class);
70          final ModuleDescriptor descriptor3 = mock(ModuleDescriptor.class);
71  
72  
73          when(descriptor1.getCompleteKey()).thenReturn("abc:xyz");
74          when(descriptor2.getCompleteKey()).thenReturn("abc:xyz");
75          when(descriptor3.getCompleteKey()).thenReturn("abc:xyz");
76  
77          assertTrue(new ModuleDescriptors.EqualsBuilder().descriptor(descriptor1).isEqualTo(descriptor2));
78          assertTrue(new ModuleDescriptors.EqualsBuilder().descriptor(descriptor2).isEqualTo(descriptor3));
79          assertTrue(new ModuleDescriptors.EqualsBuilder().descriptor(descriptor1).isEqualTo(descriptor3));
80      }
81  }