/* * Copyright (C) 2011 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package libcore.java.util; import java.io.InvalidObjectException; import java.util.EnumSet; import junit.framework.TestCase; import libcore.util.SerializationTester; public final class EnumSetTest extends TestCase { public void testSmallEnumSetSerialization() { assertTrue(Roshambo.values().length <= 64); String s = "aced0005737200246a6176612e7574696c2e456e756d5365742453657269616c" + "697a6174696f6e50726f78790507d3db7654cad10200024c000b656c656d656e7" + "4547970657400114c6a6176612f6c616e672f436c6173733b5b0008656c656d65" + "6e74737400115b4c6a6176612f6c616e672f456e756d3b7870767200266c69626" + "36f72652e6a6176612e7574696c2e456e756d5365745465737424526f7368616d" + "626f00000000000000001200007872000e6a6176612e6c616e672e456e756d000" + "00000000000001200007870757200115b4c6a6176612e6c616e672e456e756d3b" + "a88dea2d33d22f980200007870000000027e71007e0004740004524f434b7e710" + "07e000474000853434953534f5253"; EnumSet<Roshambo> set = EnumSet.of(Roshambo.ROCK, Roshambo.SCISSORS); new SerializationTester<EnumSet<Roshambo>>(set, s).test(); } public void testLargeEnumSetSerialization() { assertTrue(Element.values().length > 64); String s = "aced0005737200246a6176612e7574696c2e456e756d5365742453657269616c" + "697a6174696f6e50726f78790507d3db7654cad10200024c000b656c656d656e7" + "4547970657400114c6a6176612f6c616e672f436c6173733b5b0008656c656d65" + "6e74737400115b4c6a6176612f6c616e672f456e756d3b7870767200256c69626" + "36f72652e6a6176612e7574696c2e456e756d5365745465737424456c656d656e" + "7400000000000000001200007872000e6a6176612e6c616e672e456e756d00000" + "000000000001200007870757200115b4c6a6176612e6c616e672e456e756d3ba8" + "8dea2d33d22f980200007870000000047e71007e0004740001487e71007e00047" + "4000254427e71007e000474000244597e71007e000474000355554f"; EnumSet<Element> set = EnumSet.of(Element.H, Element.TB, Element.DY, Element.UUO); new SerializationTester<EnumSet<Element>>(set, s).test(); } public void testDeserializeRemovedValue() throws Exception { /* * enum Roshambo { * ROCK, PAPER, SCISSORS, LIZARD, SPOCK * } * EnumSet<Roshambo> set = EnumSet.of(Roshambo.SPOCK); */ String s = "aced0005737200246a6176612e7574696c2e456e756d5365742453657269616c" + "697a6174696f6e50726f78790507d3db7654cad10200024c000b656c656d656e7" + "4547970657400114c6a6176612f6c616e672f436c6173733b5b0008656c656d65" + "6e74737400115b4c6a6176612f6c616e672f456e756d3b7870767200266c69626" + "36f72652e6a6176612e7574696c2e456e756d5365745465737424526f7368616d" + "626f00000000000000001200007872000e6a6176612e6c616e672e456e756d000" + "00000000000001200007870757200115b4c6a6176612e6c616e672e456e756d3b" + "a88dea2d33d22f980200007870000000017e71007e000474000553504f434b"; try { SerializationTester.deserializeHex(s); fail(); } catch (InvalidObjectException expected) { } } public void testDeserializeShuffledOrdinals() throws Exception { /* * enum Roshambo { * SCISSORS, ROCK, PAPER * } * EnumSet<Roshambo> set = EnumSet.of(Roshambo.SCISSORS, Roshambo.ROCK) */ String s = "aced0005737200246a6176612e7574696c2e456e756d5365742453657269616c" + "697a6174696f6e50726f78790507d3db7654cad10200024c000b656c656d656e7" + "4547970657400114c6a6176612f6c616e672f436c6173733b5b0008656c656d65" + "6e74737400115b4c6a6176612f6c616e672f456e756d3b7870767200266c69626" + "36f72652e6a6176612e7574696c2e456e756d5365745465737424526f7368616d" + "626f00000000000000001200007872000e6a6176612e6c616e672e456e756d000" + "00000000000001200007870757200115b4c6a6176612e6c616e672e456e756d3b" + "a88dea2d33d22f980200007870000000027e71007e000474000853434953534f5" + "2537e71007e0004740004524f434b"; assertEquals(EnumSet.of(Roshambo.ROCK, Roshambo.SCISSORS), SerializationTester.deserializeHex(s)); } enum Roshambo { ROCK, PAPER, SCISSORS } enum Element { H, HE, LI, BE, B, C, N, O, F, NE, NA, MG, AL, SI, P, S, CL, AR, K, CA, SC, TI, V, CR, MN, FE, CO, NI, CU, ZN, GA, GE, AS, SE, BR, KR, RB, SR, Y, ZR, NB, MO, TC, RU, RH, PD, AG, CD, IN, SN, SB, TE, I, XE, CS, BA, LA, CE, PR, ND, PM, SM, EU, GD, TB, DY, HO, ER, TM, YB, LU, HF, TA, W, RE, OS, IR, PT, AU, HG, TL, PB, BI, PO, AT, RN, FR, RA, AC, TH, PA, U, NP, PU, AM, CM, BK, CF, ES, FM, MD, NO, LR, RF, DB, SG, BH, HS, MT, DS, RG, CN, UUT, UUQ, UUP, UUH, UUS, UUO } }