View Javadoc
1   /**
2    * BSD-style license; for more info see http://pmd.sourceforge.net/license.html
3    */
4   package net.sourceforge.pmd.lang.java.symboltable;
5   
6   import java.util.ArrayList;
7   import java.util.List;
8   import java.util.Map;
9   
10  import javax.swing.JComponent;
11  import javax.swing.JTextField;
12  
13  import org.junit.Assert;
14  import org.junit.Test;
15  
16  /**
17   * Unit test for {@link SimpleTypedNameDeclaration}
18   */
19  public class SimpleTypedNameDeclarationTest {
20  
21      /**
22       * Tests the equal method.
23       */
24      @Test
25      public void testEquals() {
26          Assert.assertEquals(byClass(SimpleTypedNameDeclaration.class), byClass(SimpleTypedNameDeclaration.class));
27          Assert.assertEquals(byClass(List.class), byClass(ArrayList.class));
28          Assert.assertEquals(byClass(ArrayList.class), byClass(List.class));
29          Assert.assertEquals(byName("String"), byName("String"));
30          Assert.assertEquals(byClass(String.class), byName("String"));
31          Assert.assertEquals(byClass(JComponent.class), byClass(JTextField.class));
32  
33          Assert.assertFalse(byClass(Map.class).equals(byClass(List.class)));
34          Assert.assertFalse(byName("A").equals(byName("B")));
35          Assert.assertFalse(byClass(String.class).equals(byName("A")));
36  
37          Assert.assertEquals(by(Double.TYPE, "double"), by(null, "double"));
38          Assert.assertEquals(by(Double.class, "Double"), by(null, "double"));
39          Assert.assertEquals(by(Character.class, "Character"), by(null, "char"));
40          Assert.assertEquals(by(Double.TYPE, "double"), by(null, "float"));
41          Assert.assertEquals(by(Double.TYPE, "double"), by(null, "int"));
42          Assert.assertEquals(by(Double.TYPE, "double"), by(Integer.class, "Integer"));
43          Assert.assertEquals(by(Double.TYPE, "double"), by(null, "long"));
44          Assert.assertEquals(by(Double.TYPE, "double"), by(Long.TYPE, "long"));
45          Assert.assertEquals(by(Double.TYPE, "double"), by(Long.class, "Long"));
46          Assert.assertEquals(by(Float.TYPE, "float"), by(null, "int"));
47          Assert.assertEquals(by(Float.TYPE, "float"), by(Integer.TYPE, "int"));
48          Assert.assertEquals(by(Float.TYPE, "float"), by(Integer.class, "Integer"));
49          Assert.assertEquals(by(Float.TYPE, "float"), by(null, "long"));
50          Assert.assertEquals(by(Float.TYPE, "float"), by(Long.TYPE, "long"));
51          Assert.assertEquals(by(Float.TYPE, "float"), by(Long.class, "Long"));
52          Assert.assertEquals(by(Integer.TYPE, "int"), by(null, "char"));
53          Assert.assertEquals(by(Integer.TYPE, "int"), by(Character.TYPE, "char"));
54          Assert.assertEquals(by(Integer.TYPE, "int"), by(Character.class, "Character"));
55          Assert.assertEquals(by(Long.TYPE, "long"), by(null, "int"));
56          Assert.assertEquals(by(Long.TYPE, "long"), by(Integer.TYPE, "int"));
57          Assert.assertEquals(by(Long.TYPE, "long"), by(Integer.class, "Integer"));
58          Assert.assertEquals(by(Long.TYPE, "long"), by(null, "char"));
59          Assert.assertEquals(by(Long.TYPE, "long"), by(Character.TYPE, "char"));
60          Assert.assertEquals(by(Long.TYPE, "long"), by(Character.class, "Character"));
61  
62          // should always equal to Object
63          Assert.assertEquals(by(Object.class, "Object"), by(null, "Something"));
64  
65          Assert.assertEquals(withNext(byName("Foo.I"), "Foo.B"), byName("Foo.I"));
66          Assert.assertEquals(byName("Foo.I"), withNext(byName("Foo.I"), "Foo.B"));
67      }
68  
69      private static SimpleTypedNameDeclaration byClass(Class<?> c) {
70          return new SimpleTypedNameDeclaration(c.getSimpleName(), c);
71      }
72      private static SimpleTypedNameDeclaration byName(String n) {
73          return new SimpleTypedNameDeclaration(n, null);
74      }
75      private static SimpleTypedNameDeclaration by(Class<?> c, String n) {
76          return new SimpleTypedNameDeclaration(n, c);
77      }
78      private static SimpleTypedNameDeclaration withNext(SimpleTypedNameDeclaration next, String n) {
79          SimpleTypedNameDeclaration t = new SimpleTypedNameDeclaration(n, null);
80          t.addNext(next);
81          return t;
82      }
83  }