guava
81 строка · 2.5 Кб
1/*
2* Copyright (C) 2009 The Guava Authors
3*
4* Licensed under the Apache License, Version 2.0 (the "License");
5* you may not use this file except in compliance with the License.
6* You may obtain a copy of the License at
7*
8* http://www.apache.org/licenses/LICENSE-2.0
9*
10* Unless required by applicable law or agreed to in writing, software
11* distributed under the License is distributed on an "AS IS" BASIS,
12* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13* See the License for the specific language governing permissions and
14* limitations under the License.
15*/
16
17package com.google.common.collect.testing;
18
19import static com.google.common.collect.testing.Helpers.orderEntriesByKey;
20
21import com.google.common.annotations.GwtCompatible;
22import java.util.List;
23import java.util.Map;
24import java.util.Map.Entry;
25
26/**
27* Implementation helper for {@link TestMapGenerator} for use with enum maps.
28*
29* @author Kevin Bourrillion
30*/
31@GwtCompatible
32@ElementTypesAreNonnullByDefault
33public abstract class TestEnumMapGenerator implements TestMapGenerator<AnEnum, String> {
34
35@Override
36public SampleElements<Entry<AnEnum, String>> samples() {
37return new SampleElements<>(
38Helpers.mapEntry(AnEnum.A, "January"),
39Helpers.mapEntry(AnEnum.B, "February"),
40Helpers.mapEntry(AnEnum.C, "March"),
41Helpers.mapEntry(AnEnum.D, "April"),
42Helpers.mapEntry(AnEnum.E, "May"));
43}
44
45@Override
46public final Map<AnEnum, String> create(Object... entries) {
47@SuppressWarnings("unchecked")
48Entry<AnEnum, String>[] array = (Entry<AnEnum, String>[]) new Entry<?, ?>[entries.length];
49int i = 0;
50for (Object o : entries) {
51@SuppressWarnings("unchecked")
52Entry<AnEnum, String> e = (Entry<AnEnum, String>) o;
53array[i++] = e;
54}
55return create(array);
56}
57
58protected abstract Map<AnEnum, String> create(Entry<AnEnum, String>[] entries);
59
60@Override
61@SuppressWarnings("unchecked")
62public final Entry<AnEnum, String>[] createArray(int length) {
63return (Entry<AnEnum, String>[]) new Entry<?, ?>[length];
64}
65
66@Override
67public final AnEnum[] createKeyArray(int length) {
68return new AnEnum[length];
69}
70
71@Override
72public final String[] createValueArray(int length) {
73return new String[length];
74}
75
76/** Returns the elements sorted in natural order. */
77@Override
78public Iterable<Entry<AnEnum, String>> order(List<Entry<AnEnum, String>> insertionOrder) {
79return orderEntriesByKey(insertionOrder);
80}
81}
82