blob: a74e9fc9ead7c14654a1b15a86f00f4b1e4a7c11 [file] [log] [blame]
/*
* 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
}
}