1 package serp.bytecode;
2
3 import junit.framework.*;
4 import junit.textui.*;
5
6
7
8
9
10
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
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
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
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
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
102 assertTrue(!attr1.isValid());
103 assertTrue(!attr2.isValid());
104 }
105
106
107
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 }