KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > net > sf > retrotranslator > runtime > java > util > EnumSet_TestCase


1 /***
2  * Retrotranslator: a Java bytecode transformer that translates Java classes
3  * compiled with JDK 5.0 into classes that can be run on JVM 1.4.
4  *
5  * Copyright (c) 2005 - 2007 Taras Puchko
6  * All rights reserved.
7  *
8  * Redistribution and use in source and binary forms, with or without
9  * modification, are permitted provided that the following conditions
10  * are met:
11  * 1. Redistributions of source code must retain the above copyright
12  * notice, this list of conditions and the following disclaimer.
13  * 2. Redistributions in binary form must reproduce the above copyright
14  * notice, this list of conditions and the following disclaimer in the
15  * documentation and/or other materials provided with the distribution.
16  * 3. Neither the name of the copyright holders nor the names of its
17  * contributors may be used to endorse or promote products derived from
18  * this software without specific prior written permission.
19  *
20  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
24  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
25  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
26  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
27  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
28  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
29  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
30  * THE POSSIBILITY OF SUCH DAMAGE.
31  */

32 package net.sf.retrotranslator.runtime.java.util;
33
34 import java.util.*;
35 import junit.framework.TestCase;
36
37 /**
38  * @author Taras Puchko
39  */

40 public class EnumSet_TestCase extends TestCase {
41
42     private static enum Day {
43         SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIEDAY, SATURDAY
44     }
45
46     public void testAllOf() {
47         EnumSet<Day> days = EnumSet.allOf(Day.class);
48         assertEquals(7, days.size());
49         assertContent(days, Day.values());
50     }
51
52     public void testComplementOf() {
53         EnumSet<Day> days = EnumSet.complementOf(
54                 EnumSet.of(Day.SUNDAY, Day.TUESDAY, Day.THURSDAY, Day.SATURDAY));
55         assertContent(days, Day.MONDAY, Day.WEDNESDAY, Day.FRIEDAY);
56     }
57
58     public void testCopyOf() {
59         EnumSet<Day> enumSetCopy = EnumSet.copyOf(
60                 EnumSet.of(Day.SUNDAY, Day.SATURDAY));
61         assertContent(enumSetCopy, Day.SUNDAY, Day.SATURDAY);
62
63         EnumSet<Day> collectionCopy = EnumSet.copyOf(
64                 (Collection<Day>) EnumSet.of(Day.SUNDAY, Day.SATURDAY));
65         assertContent(collectionCopy, Day.SUNDAY, Day.SATURDAY);
66
67         EnumSet<Day> listCopy = EnumSet.copyOf(
68                 Arrays.asList(Day.SATURDAY, Day.SUNDAY)
69         );
70         assertContent(listCopy, Day.SUNDAY, Day.SATURDAY);
71
72         try {
73             EnumSet.copyOf(Collections.<Day>emptyList());
74             fail();
75         } catch (IllegalArgumentException JavaDoc e) {
76             //ok
77
}
78     }
79
80     public void testNoneOf() {
81         EnumSet<Day> days = EnumSet.noneOf(Day.class);
82         assertTrue(days.isEmpty());
83     }
84
85     public void testOf() {
86         assertContent(EnumSet.of(Day.FRIEDAY),
87                 Day.FRIEDAY);
88         assertContent(EnumSet.of(Day.SUNDAY, Day.MONDAY),
89                 Day.SUNDAY, Day.MONDAY);
90         assertContent(EnumSet.of(Day.SUNDAY, Day.MONDAY, Day.TUESDAY),
91                 Day.SUNDAY, Day.MONDAY, Day.TUESDAY);
92         assertContent(EnumSet.of(Day.SUNDAY, Day.MONDAY, Day.TUESDAY, Day.WEDNESDAY),
93                 Day.SUNDAY, Day.MONDAY, Day.TUESDAY, Day.WEDNESDAY);
94         assertContent(EnumSet.of(Day.SUNDAY, Day.MONDAY, Day.TUESDAY, Day.WEDNESDAY, Day.THURSDAY),
95                 Day.SUNDAY, Day.MONDAY, Day.TUESDAY, Day.WEDNESDAY, Day.THURSDAY);
96         assertContent(EnumSet.of(Day.SUNDAY, Day.MONDAY, Day.TUESDAY, Day.WEDNESDAY, Day.THURSDAY, Day.FRIEDAY),
97                 Day.SUNDAY, Day.MONDAY, Day.TUESDAY, Day.WEDNESDAY, Day.THURSDAY, Day.FRIEDAY);
98     }
99
100     public void testRange() throws Exception JavaDoc {
101         assertContent(EnumSet.range(Day.TUESDAY, Day.THURSDAY), Day.TUESDAY, Day.WEDNESDAY, Day.THURSDAY);
102         try {
103             EnumSet.range(Day.WEDNESDAY, Day.SUNDAY);
104         } catch (IllegalArgumentException JavaDoc e) {
105             //ok
106
}
107     }
108
109     public void testAdd() {
110         EnumSet<Day> days = EnumSet.of(Day.SUNDAY);
111         try {
112             days.add(null);
113             fail();
114         } catch (NullPointerException JavaDoc e) {
115             //ok
116
}
117     }
118
119     public void testIterator() {
120         EnumSet<Day> days = EnumSet.of(
121                 Day.FRIEDAY, Day.WEDNESDAY, Day.SUNDAY, Day.SATURDAY, Day.TUESDAY);
122         Iterator<Day> iterator = days.iterator();
123         days.add(Day.THURSDAY);
124         assertEquals(Day.SUNDAY, iterator.next());
125         days.add(Day.MONDAY);
126         assertEquals(Day.TUESDAY, iterator.next());
127         assertEquals(Day.WEDNESDAY, iterator.next());
128         assertEquals(Day.FRIEDAY, iterator.next());
129         assertEquals(Day.SATURDAY, iterator.next());
130         assertFalse(iterator.hasNext());
131     }
132
133     public void testClone() throws Exception JavaDoc {
134         EnumSet<Day> days = EnumSet.of(Day.SUNDAY);
135         EnumSet<Day> clone = days.clone();
136         assertContent(clone, Day.SUNDAY);
137     }
138
139     private void assertContent(EnumSet<Day> set, Day... days) {
140         assertEquals(days.length, set.size());
141         List<Day> list = Arrays.asList(days);
142         for (Day day : Day.values()) {
143             if (list.contains(day)) {
144                 assertTrue(set.contains(day));
145             } else {
146                 assertFalse(set.contains(day));
147             }
148         }
149     }
150 }
151
Popular Tags