summaryrefslogtreecommitdiff
path: root/test/cuchaz/enigma/TestBehaviorSignature.java
diff options
context:
space:
mode:
authorGravatar jeff2015-02-06 00:01:42 -0500
committerGravatar jeff2015-02-06 00:01:42 -0500
commit5a406268664e7a8db4991f421503afcf64780432 (patch)
treeae4b319ac65de40b2c6307a193cbe363b2f80385 /test/cuchaz/enigma/TestBehaviorSignature.java
parentexplicitly add jre 7 to classpath (diff)
parentstart some translation tests (diff)
downloadenigma-fork-5a406268664e7a8db4991f421503afcf64780432.tar.gz
enigma-fork-5a406268664e7a8db4991f421503afcf64780432.tar.xz
enigma-fork-5a406268664e7a8db4991f421503afcf64780432.zip
Merge with a04907514a113e299dc667aa221a67573c5faa1b
Diffstat (limited to 'test/cuchaz/enigma/TestBehaviorSignature.java')
-rw-r--r--test/cuchaz/enigma/TestBehaviorSignature.java196
1 files changed, 196 insertions, 0 deletions
diff --git a/test/cuchaz/enigma/TestBehaviorSignature.java b/test/cuchaz/enigma/TestBehaviorSignature.java
new file mode 100644
index 0000000..4705cd1
--- /dev/null
+++ b/test/cuchaz/enigma/TestBehaviorSignature.java
@@ -0,0 +1,196 @@
1package cuchaz.enigma;
2
3import static org.hamcrest.MatcherAssert.*;
4import static org.hamcrest.Matchers.*;
5
6import org.junit.Test;
7
8import cuchaz.enigma.mapping.BehaviorSignature;
9import cuchaz.enigma.mapping.ClassEntry;
10import cuchaz.enigma.mapping.Type;
11
12
13public class TestBehaviorSignature {
14
15 @Test
16 public void easiest() {
17 final BehaviorSignature sig = new BehaviorSignature("()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 BehaviorSignature sig = new BehaviorSignature("(I)V");
26 assertThat(sig.getArgumentTypes(), contains(
27 new Type("I")
28 ));
29 assertThat(sig.getReturnType(), is(new Type("V")));
30 }
31 {
32 final BehaviorSignature sig = new BehaviorSignature("(I)I");
33 assertThat(sig.getArgumentTypes(), contains(
34 new Type("I")
35 ));
36 assertThat(sig.getReturnType(), is(new Type("I")));
37 }
38 {
39 final BehaviorSignature sig = new BehaviorSignature("(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 BehaviorSignature sig = new BehaviorSignature("([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 BehaviorSignature sig = new BehaviorSignature("(LFoo;)LBar;");
60 assertThat(sig.getArgumentTypes(), contains(
61 new Type("LFoo;")
62 ));
63 assertThat(sig.getReturnType(), is(new Type("LBar;")));
64 }
65 {
66 final BehaviorSignature sig = new BehaviorSignature("(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 BehaviorSignature sig = new BehaviorSignature("(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 BehaviorSignature sig = new BehaviorSignature("([I)V");
88 assertThat(sig.getArgumentTypes(), contains(
89 new Type("[I")
90 ));
91 assertThat(sig.getReturnType(), is(new Type("V")));
92 }
93 {
94 final BehaviorSignature sig = new BehaviorSignature("([I)[J");
95 assertThat(sig.getArgumentTypes(), contains(
96 new Type("[I")
97 ));
98 assertThat(sig.getReturnType(), is(new Type("[J")));
99 }
100 {
101 final BehaviorSignature sig = new BehaviorSignature("([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 BehaviorSignature sig = new BehaviorSignature("(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 BehaviorSignature sig = new BehaviorSignature("(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 BehaviorSignature oldSig = new BehaviorSignature("()V");
137 final BehaviorSignature sig = new BehaviorSignature(oldSig, new BehaviorSignature.ClassReplacer() {
138 @Override
139 public ClassEntry replace(ClassEntry entry) {
140 return null;
141 }
142 });
143 assertThat(sig.getArgumentTypes(), is(empty()));
144 assertThat(sig.getReturnType(), is(new Type("V")));
145 }
146 {
147 final BehaviorSignature oldSig = new BehaviorSignature("(IJLFoo;)V");
148 final BehaviorSignature sig = new BehaviorSignature(oldSig, new BehaviorSignature.ClassReplacer() {
149 @Override
150 public ClassEntry replace(ClassEntry entry) {
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 BehaviorSignature oldSig = new BehaviorSignature("(LFoo;LBar;)LMoo;");
163 final BehaviorSignature sig = new BehaviorSignature(oldSig, new BehaviorSignature.ClassReplacer() {
164 @Override
165 public ClassEntry replace(ClassEntry entry) {
166 if (entry.getName().equals("Foo")) {
167 return new ClassEntry("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 BehaviorSignature oldSig = new BehaviorSignature("(LFoo;LBar;)LMoo;");
180 final BehaviorSignature sig = new BehaviorSignature(oldSig, new BehaviorSignature.ClassReplacer() {
181 @Override
182 public ClassEntry replace(ClassEntry entry) {
183 if (entry.getName().equals("Moo")) {
184 return new ClassEntry("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}