View Javadoc

1   package serp.bytecode;
2   
3   import junit.framework.*;
4   import junit.textui.*;
5   
6   
7   /**
8    * Tests the {@link Attributes} type.
9    *
10   * @author Abe White
11   */
12  public class TestAttributes extends TestCase {
13      private Project _project = new Project();
14      private Attributes _attrs = _project.loadClass("serp.Attrs");
15      private Attributes _attrs2 = _project.loadClass("serp.Attrs2");
16  
17      public TestAttributes(String test) {
18          super(test);
19      }
20  
21      /**
22       * Test getting attributes.
23       */
24      public void testGetAttributes() {
25          assertEquals(0, _attrs.getAttributes().length);
26          assertNull(_attrs.getAttribute(Constants.ATTR_SYNTHETIC));
27  
28          Attribute attr1 = _attrs.addAttribute(Constants.ATTR_DEPRECATED);
29          Attribute attr2 = _attrs.addAttribute(Constants.ATTR_SYNTHETIC);
30  
31          assertEquals(2, _attrs.getAttributes().length);
32          assertNull(_attrs.getAttribute(Constants.ATTR_CODE));
33          assertTrue(attr1 == _attrs.getAttribute(Constants.ATTR_DEPRECATED));
34          assertTrue(attr2 == _attrs.getAttribute(Constants.ATTR_SYNTHETIC));
35          assertEquals(0, _attrs.getAttributes(Constants.ATTR_CODE).length);
36          assertEquals(1, _attrs.getAttributes(Constants.ATTR_DEPRECATED).length);
37          assertEquals(1, _attrs.getAttributes(Constants.ATTR_SYNTHETIC).length);
38          assertTrue(attr1 == _attrs.getAttributes(Constants.ATTR_DEPRECATED)[0]);
39          assertTrue(attr2 == _attrs.getAttributes(Constants.ATTR_SYNTHETIC)[0]);
40  
41          Attribute attr3 = _attrs.addAttribute(Constants.ATTR_DEPRECATED);
42          assertEquals(3, _attrs.getAttributes().length);
43          assertEquals(2, _attrs.getAttributes(Constants.ATTR_DEPRECATED).length);
44      }
45  
46      /**
47       * Test setting attributes.
48       */
49      public void testSetAttributes() {
50          Attribute attr1 = _attrs.addAttribute(Constants.ATTR_DEPRECATED);
51          Attribute attr2 = _attrs.addAttribute(Constants.ATTR_SYNTHETIC);
52  
53          _attrs2.setAttributes(_attrs.getAttributes());
54          assertEquals(2, _attrs2.getAttributes().length);
55          assertEquals(Constants.ATTR_DEPRECATED,
56              _attrs2.getAttribute(Constants.ATTR_DEPRECATED).getName());
57          assertEquals(Constants.ATTR_SYNTHETIC,
58              _attrs2.getAttribute(Constants.ATTR_SYNTHETIC).getName());
59          assertTrue(attr1 != _attrs2.getAttribute(Constants.ATTR_DEPRECATED));
60          assertTrue(attr2 != _attrs2.getAttribute(Constants.ATTR_SYNTHETIC));
61  
62          Attribute attr3 = _attrs.addAttribute(Constants.ATTR_SOURCE);
63          _attrs2.setAttributes(new Attribute[] { attr3 });
64          assertEquals(1, _attrs2.getAttributes().length);
65          assertEquals(Constants.ATTR_SOURCE, _attrs2.getAttributes()[0].
66              getName());
67      }
68  
69      /**
70       * Test adding attributs.
71       */
72      public void testAddAttributes() {
73          SourceFile attr1 = (SourceFile) _attrs.addAttribute
74              (Constants.ATTR_SOURCE);
75          assertEquals(attr1.getName(), Constants.ATTR_SOURCE);
76          assertTrue(attr1 != _attrs.addAttribute(Constants.ATTR_SOURCE));
77          assertEquals(2, _attrs.getAttributes(Constants.ATTR_SOURCE).length);
78          attr1.setFile("foo");
79  
80          SourceFile attr2 = (SourceFile) _attrs2.addAttribute(attr1);
81          assertTrue(attr1 != attr2);
82          assertEquals("foo", attr2.getFileName());
83      }
84  
85      /**
86       * Test clearing attributes.
87       */
88      public void testClear() {
89          _attrs.clearAttributes();
90  
91          Attribute attr1 = _attrs.addAttribute(Constants.ATTR_SYNTHETIC);
92          Attribute attr2 = _attrs.addAttribute(Constants.ATTR_DEPRECATED);
93  
94          assertTrue(attr1.isValid());
95          assertTrue(attr2.isValid());
96  
97          assertEquals(2, _attrs.getAttributes().length);
98          _attrs.clearAttributes();
99          assertEquals(0, _attrs.getAttributes().length);
100 
101         // cleared classes should be invalid
102         assertTrue(!attr1.isValid());
103         assertTrue(!attr2.isValid());
104     }
105 
106     /**
107      * Test removing a class.
108      */
109     public void testRemoveAttribute() {
110         assertTrue(!_attrs.removeAttribute((String) null));
111         assertTrue(!_attrs.removeAttribute((Attribute) null));
112         assertTrue(!_attrs.removeAttribute(Constants.ATTR_SYNTHETIC));
113         assertTrue(!_attrs.removeAttribute(_attrs2.addAttribute(
114                     Constants.ATTR_SYNTHETIC)));
115 
116         Attribute attr1 = _attrs.addAttribute(Constants.ATTR_SYNTHETIC);
117         Attribute attr2 = _attrs.addAttribute(Constants.ATTR_DEPRECATED);
118         assertTrue(attr1.isValid());
119         assertTrue(attr2.isValid());
120         assertEquals(2, _attrs.getAttributes().length);
121 
122         assertTrue(_attrs.removeAttribute(attr1.getName()));
123         assertEquals(1, _attrs.getAttributes().length);
124 
125         assertTrue(!_attrs.removeAttribute(_attrs2.addAttribute
126             (attr2.getName())));
127         assertTrue(_attrs.removeAttribute(attr2));
128         assertEquals(0, _attrs.getAttributes().length);
129 
130         assertTrue(!attr1.isValid());
131         assertTrue(!attr2.isValid());
132     }
133 
134     public static Test suite() {
135         return new TestSuite(TestAttributes.class);
136     }
137 
138     public static void main(String[] args) {
139         TestRunner.run(suite());
140     }
141 }