@@ -222,13 +222,13 @@ public void wrap() {
222222
223223 @ Test
224224 public void enumAPI () {
225- /**
226- * Exercise the proposed enum API methods
227- */
228225 MyEnumClass myEnumClass = new MyEnumClass ();
229226 myEnumClass .setMyEnum (MyEnum .VAL1 );
230227 MyEnumField myEnumField = MyEnumField .VAL2 ;
231228
229+ /**
230+ * Exercise the proposed enum API methods on JSONObject
231+ */
232232 JSONObject jsonObject = new JSONObject ();
233233 jsonObject .put ("strKey" , "value" );
234234 jsonObject .put ("enumKey" , myEnumField );
@@ -268,5 +268,46 @@ public void enumAPI() {
268268 actualEnum = jsonObject .optEnum (MyEnumField .class , "strKey" , null );
269269 assertTrue ("opt null" , actualEnum == null );
270270
271+ /**
272+ * Exercise the proposed enum API methods on JSONArray
273+ */
274+ JSONArray jsonArray = new JSONArray ();
275+ jsonArray .put ("value" );
276+ jsonArray .put (myEnumField );
277+ jsonArray .put (myEnumClass );
278+
279+ // get a plain old enum
280+ actualEnum = jsonArray .getEnum (MyEnumField .class , 1 );
281+ assertTrue ("get myEnumField" , actualEnum == MyEnumField .VAL2 );
282+
283+ // try to get the wrong value
284+ try {
285+ actualEnum = jsonArray .getEnum (MyEnumField .class , 0 );
286+ assertTrue ("should throw an exception for wrong index" , false );
287+ } catch (Exception ignored ) {}
288+
289+ // get a class that contains an enum
290+ actualEnumClass = (MyEnumClass )jsonArray .get (2 );
291+ assertTrue ("get enum" , actualEnumClass .getMyEnum () == MyEnum .VAL1 );
292+
293+ // opt a plain old enum
294+ actualEnum = jsonArray .optEnum (MyEnumField .class , 1 );
295+ assertTrue ("opt myEnumField" , actualEnum == MyEnumField .VAL2 );
296+
297+ // opt the wrong value
298+ actualEnum = jsonArray .optEnum (MyEnumField .class , 0 );
299+ assertTrue ("opt null" , actualEnum == null );
300+
301+ // opt a class that contains an enum
302+ actualEnumClass = (MyEnumClass )jsonArray .opt (2 );
303+ assertTrue ("get enum" , actualEnumClass .getMyEnum () == MyEnum .VAL1 );
304+
305+ // opt with default a plain old enum
306+ actualEnum = jsonArray .optEnum (MyEnumField .class , 1 , null );
307+ assertTrue ("opt myEnumField" , actualEnum == MyEnumField .VAL2 );
308+
309+ // opt with default the wrong value
310+ actualEnum = jsonArray .optEnum (MyEnumField .class , 0 , null );
311+ assertTrue ("opt null" , actualEnum == null );
271312 }
272313}
0 commit comments