summaryrefslogtreecommitdiff
path: root/test/cuchaz/enigma/TestSignature.java
diff options
context:
space:
mode:
authorGravatar jeff2015-02-08 21:29:25 -0500
committerGravatar jeff2015-02-08 21:29:25 -0500
commited9b5cdfc648e86fd463bfa8d86b94c41671e14c (patch)
tree2619bbc7e04dfa3b82f8dfd3b1d31f529766cd4b /test/cuchaz/enigma/TestSignature.java
downloadenigma-fork-ed9b5cdfc648e86fd463bfa8d86b94c41671e14c.tar.gz
enigma-fork-ed9b5cdfc648e86fd463bfa8d86b94c41671e14c.tar.xz
enigma-fork-ed9b5cdfc648e86fd463bfa8d86b94c41671e14c.zip
switch all classes to new signature/type system
Diffstat (limited to 'test/cuchaz/enigma/TestSignature.java')
-rw-r--r--test/cuchaz/enigma/TestSignature.java266
1 files changed, 266 insertions, 0 deletions
diff --git a/test/cuchaz/enigma/TestSignature.java b/test/cuchaz/enigma/TestSignature.java
new file mode 100644
index 0000000..183a4fd
--- /dev/null
+++ b/test/cuchaz/enigma/TestSignature.java
@@ -0,0 +1,266 @@
1package cuchaz.enigma;
2
3import static org.hamcrest.MatcherAssert.*;
4import static org.hamcrest.Matchers.*;
5
6import org.junit.Test;
7
8import cuchaz.enigma.mapping.ClassNameReplacer;
9import cuchaz.enigma.mapping.Signature;
10import cuchaz.enigma.mapping.Type;
11
12
13public class TestSignature {
14
15 @Test
16 public void easiest() {
17 final Signature sig = new Signature("()V");
18 assertThat(sig.getArgumentTypes(), is(empty()));
19 assertThat(sig.getReturnType(), is(new Type("V")));
20 }
21
22 @Test
23 public void primitives() {
24 {
25 final Signature sig = new Signature("(I)V");
26 assertThat(sig.getArgumentTypes(), contains(
27 new Type("I")
28 ));
29 assertThat(sig.getReturnType(), is(new Type("V")));
30 }
31 {
32 final Signature sig = new Signature("(I)I");
33 assertThat(sig.getArgumentTypes(), contains(
34 new Type("I")
35 ));
36 assertThat(sig.getReturnType(), is(new Type("I")));
37 }
38 {
39 final Signature sig = new Signature("(IBCJ)Z");
40 assertThat(sig.getArgumentTypes(), contains(
41 new Type("I"),
42 new Type("B"),
43 new Type("C"),
44 new Type("J")
45 ));
46 assertThat(sig.getReturnType(), is(new Type("Z")));
47 }
48 }
49
50 @Test
51 public void classes() {
52 {
53 final Signature sig = new Signature("([LFoo;)V");
54 assertThat(sig.getArgumentTypes().size(), is(1));
55 assertThat(sig.getArgumentTypes().get(0), is(new Type("[LFoo;")));
56 assertThat(sig.getReturnType(), is(new Type("V")));
57 }
58 {
59 final Signature sig = new Signature("(LFoo;)LBar;");
60 assertThat(sig.getArgumentTypes(), contains(
61 new Type("LFoo;")
62 ));
63 assertThat(sig.getReturnType(), is(new Type("LBar;")));
64 }
65 {
66 final Signature sig = new Signature("(LFoo;LMoo;LZoo;)LBar;");
67 assertThat(sig.getArgumentTypes(), contains(
68 new Type("LFoo;"),
69 new Type("LMoo;"),
70 new Type("LZoo;")
71 ));
72 assertThat(sig.getReturnType(), is(new Type("LBar;")));
73 }
74 {
75 final Signature sig = new Signature("(LFoo<LParm;>;LMoo<LParm;>;)LBar<LParm;>;");
76 assertThat(sig.getArgumentTypes(), contains(
77 new Type("LFoo<LParm;>;"),
78 new Type("LMoo<LParm;>;")
79 ));
80 assertThat(sig.getReturnType(), is(new Type("LBar<LParm;>;")));
81 }
82 }
83
84 @Test
85 public void arrays() {
86 {
87 final Signature sig = new Signature("([I)V");
88 assertThat(sig.getArgumentTypes(), contains(
89 new Type("[I")
90 ));
91 assertThat(sig.getReturnType(), is(new Type("V")));
92 }
93 {
94 final Signature sig = new Signature("([I)[J");
95 assertThat(sig.getArgumentTypes(), contains(
96 new Type("[I")
97 ));
98 assertThat(sig.getReturnType(), is(new Type("[J")));
99 }
100 {
101 final Signature sig = new Signature("([I[Z[F)[D");
102 assertThat(sig.getArgumentTypes(), contains(
103 new Type("[I"),
104 new Type("[Z"),
105 new Type("[F")
106 ));
107 assertThat(sig.getReturnType(), is(new Type("[D")));
108 }
109 }
110
111 @Test
112 public void mixed() {
113 {
114 final Signature sig = new Signature("(I[JLFoo;)Z");
115 assertThat(sig.getArgumentTypes(), contains(
116 new Type("I"),
117 new Type("[J"),
118 new Type("LFoo;")
119 ));
120 assertThat(sig.getReturnType(), is(new Type("Z")));
121 }
122 {
123 final Signature sig = new Signature("(III)[LFoo;");
124 assertThat(sig.getArgumentTypes(), contains(
125 new Type("I"),
126 new Type("I"),
127 new Type("I")
128 ));
129 assertThat(sig.getReturnType(), is(new Type("[LFoo;")));
130 }
131 }
132
133 @Test
134 public void replaceClasses() {
135 {
136 final Signature oldSig = new Signature("()V");
137 final Signature sig = new Signature(oldSig, new ClassNameReplacer() {
138 @Override
139 public String replace(String val) {
140 return null;
141 }
142 });
143 assertThat(sig.getArgumentTypes(), is(empty()));
144 assertThat(sig.getReturnType(), is(new Type("V")));
145 }
146 {
147 final Signature oldSig = new Signature("(IJLFoo;)V");
148 final Signature sig = new Signature(oldSig, new ClassNameReplacer() {
149 @Override
150 public String replace(String val) {
151 return null;
152 }
153 });
154 assertThat(sig.getArgumentTypes(), contains(
155 new Type("I"),
156 new Type("J"),
157 new Type("LFoo;")
158 ));
159 assertThat(sig.getReturnType(), is(new Type("V")));
160 }
161 {
162 final Signature oldSig = new Signature("(LFoo;LBar;)LMoo;");
163 final Signature sig = new Signature(oldSig, new ClassNameReplacer() {
164 @Override
165 public String replace(String val) {
166 if (val.equals("Foo")) {
167 return "Bar";
168 }
169 return null;
170 }
171 });
172 assertThat(sig.getArgumentTypes(), contains(
173 new Type("LBar;"),
174 new Type("LBar;")
175 ));
176 assertThat(sig.getReturnType(), is(new Type("LMoo;")));
177 }
178 {
179 final Signature oldSig = new Signature("(LFoo;LBar;)LMoo;");
180 final Signature sig = new Signature(oldSig, new ClassNameReplacer() {
181 @Override
182 public String replace(String val) {
183 if (val.equals("Moo")) {
184 return "Cow";
185 }
186 return null;
187 }
188 });
189 assertThat(sig.getArgumentTypes(), contains(
190 new Type("LFoo;"),
191 new Type("LBar;")
192 ));
193 assertThat(sig.getReturnType(), is(new Type("LCow;")));
194 }
195 }
196
197 @Test
198 public void replaceArrayClasses() {
199 {
200 final Signature oldSig = new Signature("([LFoo;)[[[LBar;");
201 final Signature sig = new Signature(oldSig, new ClassNameReplacer() {
202 @Override
203 public String replace(String val) {
204 if (val.equals("Foo")) {
205 return "Food";
206 } else if (val.equals("Bar")) {
207 return "Beer";
208 }
209 return null;
210 }
211 });
212 assertThat(sig.getArgumentTypes(), contains(
213 new Type("[LFood;")
214 ));
215 assertThat(sig.getReturnType(), is(new Type("[[[LBeer;")));
216 }
217 }
218
219 @Test
220 public void equals() {
221
222 // base
223 assertThat(new Signature("()V"), is(new Signature("()V")));
224
225 // arguments
226 assertThat(new Signature("(I)V"), is(new Signature("(I)V")));
227 assertThat(new Signature("(ZIZ)V"), is(new Signature("(ZIZ)V")));
228 assertThat(new Signature("(LFoo;)V"), is(new Signature("(LFoo;)V")));
229 assertThat(new Signature("(LFoo;LBar;)V"), is(new Signature("(LFoo;LBar;)V")));
230 assertThat(new Signature("([I)V"), is(new Signature("([I)V")));
231 assertThat(new Signature("([[D[[[J)V"), is(new Signature("([[D[[[J)V")));
232
233 assertThat(new Signature("()V"), is(not(new Signature("(I)V"))));
234 assertThat(new Signature("(I)V"), is(not(new Signature("()V"))));
235 assertThat(new Signature("(IJ)V"), is(not(new Signature("(JI)V"))));
236 assertThat(new Signature("([[Z)V"), is(not(new Signature("([[LFoo;)V"))));
237 assertThat(new Signature("(LFoo;LBar;)V"), is(not(new Signature("(LFoo;LCow;)V"))));
238 assertThat(new Signature("([LFoo;LBar;)V"), is(not(new Signature("(LFoo;LCow;)V"))));
239
240 // return type
241 assertThat(new Signature("()I"), is(new Signature("()I")));
242 assertThat(new Signature("()Z"), is(new Signature("()Z")));
243 assertThat(new Signature("()[D"), is(new Signature("()[D")));
244 assertThat(new Signature("()[[[Z"), is(new Signature("()[[[Z")));
245 assertThat(new Signature("()LFoo;"), is(new Signature("()LFoo;")));
246 assertThat(new Signature("()[LFoo;"), is(new Signature("()[LFoo;")));
247
248 assertThat(new Signature("()I"), is(not(new Signature("()Z"))));
249 assertThat(new Signature("()Z"), is(not(new Signature("()I"))));
250 assertThat(new Signature("()[D"), is(not(new Signature("()[J"))));
251 assertThat(new Signature("()[[[Z"), is(not(new Signature("()[[Z"))));
252 assertThat(new Signature("()LFoo;"), is(not(new Signature("()LBar;"))));
253 assertThat(new Signature("()[LFoo;"), is(not(new Signature("()[LBar;"))));
254 }
255
256 @Test
257 public void testToString() {
258 assertThat(new Signature("()V").toString(), is("()V"));
259 assertThat(new Signature("(I)V").toString(), is("(I)V"));
260 assertThat(new Signature("(ZIZ)V").toString(), is("(ZIZ)V"));
261 assertThat(new Signature("(LFoo;)V").toString(), is("(LFoo;)V"));
262 assertThat(new Signature("(LFoo;LBar;)V").toString(), is("(LFoo;LBar;)V"));
263 assertThat(new Signature("([I)V").toString(), is("([I)V"));
264 assertThat(new Signature("([[D[[[J)V").toString(), is("([[D[[[J)V"));
265 }
266}