10888a09821a98ac0680fad765217302858e70fa4Paul Duffin/* 20888a09821a98ac0680fad765217302858e70fa4Paul Duffin * Copyright (C) 2008 The Guava Authors 30888a09821a98ac0680fad765217302858e70fa4Paul Duffin * 40888a09821a98ac0680fad765217302858e70fa4Paul Duffin * Licensed under the Apache License, Version 2.0 (the "License"); 50888a09821a98ac0680fad765217302858e70fa4Paul Duffin * you may not use this file except in compliance with the License. 60888a09821a98ac0680fad765217302858e70fa4Paul Duffin * You may obtain a copy of the License at 70888a09821a98ac0680fad765217302858e70fa4Paul Duffin * 80888a09821a98ac0680fad765217302858e70fa4Paul Duffin * http://www.apache.org/licenses/LICENSE-2.0 90888a09821a98ac0680fad765217302858e70fa4Paul Duffin * 100888a09821a98ac0680fad765217302858e70fa4Paul Duffin * Unless required by applicable law or agreed to in writing, software 110888a09821a98ac0680fad765217302858e70fa4Paul Duffin * distributed under the License is distributed on an "AS IS" BASIS, 120888a09821a98ac0680fad765217302858e70fa4Paul Duffin * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 130888a09821a98ac0680fad765217302858e70fa4Paul Duffin * See the License for the specific language governing permissions and 140888a09821a98ac0680fad765217302858e70fa4Paul Duffin * limitations under the License. 150888a09821a98ac0680fad765217302858e70fa4Paul Duffin */ 160888a09821a98ac0680fad765217302858e70fa4Paul Duffin 170888a09821a98ac0680fad765217302858e70fa4Paul Duffinpackage com.google.common.primitives; 180888a09821a98ac0680fad765217302858e70fa4Paul Duffin 190888a09821a98ac0680fad765217302858e70fa4Paul Duffinimport static com.google.common.base.Preconditions.checkNotNull; 200888a09821a98ac0680fad765217302858e70fa4Paul Duffin 210888a09821a98ac0680fad765217302858e70fa4Paul Duffinimport com.google.common.annotations.GwtCompatible; 220888a09821a98ac0680fad765217302858e70fa4Paul Duffinimport com.google.common.collect.testing.SampleElements; 230888a09821a98ac0680fad765217302858e70fa4Paul Duffinimport com.google.common.collect.testing.TestListGenerator; 240888a09821a98ac0680fad765217302858e70fa4Paul Duffin 250888a09821a98ac0680fad765217302858e70fa4Paul Duffinimport junit.framework.TestCase; 260888a09821a98ac0680fad765217302858e70fa4Paul Duffin 270888a09821a98ac0680fad765217302858e70fa4Paul Duffinimport java.util.List; 280888a09821a98ac0680fad765217302858e70fa4Paul Duffin 290888a09821a98ac0680fad765217302858e70fa4Paul Duffin/** 300888a09821a98ac0680fad765217302858e70fa4Paul Duffin * Test suite covering {@link Floats#asList(float[])})}. 310888a09821a98ac0680fad765217302858e70fa4Paul Duffin * 320888a09821a98ac0680fad765217302858e70fa4Paul Duffin * @author Kevin Bourrillion 330888a09821a98ac0680fad765217302858e70fa4Paul Duffin */ 340888a09821a98ac0680fad765217302858e70fa4Paul Duffin@GwtCompatible(emulated = true) 350888a09821a98ac0680fad765217302858e70fa4Paul Duffinpublic class FloatArrayAsListTest extends TestCase { 360888a09821a98ac0680fad765217302858e70fa4Paul Duffin 370888a09821a98ac0680fad765217302858e70fa4Paul Duffin private static List<Float> asList(Float[] values) { 380888a09821a98ac0680fad765217302858e70fa4Paul Duffin float[] temp = new float[values.length]; 390888a09821a98ac0680fad765217302858e70fa4Paul Duffin for (int i = 0; i < values.length; i++) { 400888a09821a98ac0680fad765217302858e70fa4Paul Duffin temp[i] = checkNotNull(values[i]); // checkNotNull for GWT (do not optimize). 410888a09821a98ac0680fad765217302858e70fa4Paul Duffin } 420888a09821a98ac0680fad765217302858e70fa4Paul Duffin return Floats.asList(temp); 430888a09821a98ac0680fad765217302858e70fa4Paul Duffin } 440888a09821a98ac0680fad765217302858e70fa4Paul Duffin 450888a09821a98ac0680fad765217302858e70fa4Paul Duffin // Test generators. To let the GWT test suite generator access them, they need to be 460888a09821a98ac0680fad765217302858e70fa4Paul Duffin // public named classes with a public default constructor. 470888a09821a98ac0680fad765217302858e70fa4Paul Duffin 480888a09821a98ac0680fad765217302858e70fa4Paul Duffin public static final class FloatsAsListGenerator extends TestFloatListGenerator { 490888a09821a98ac0680fad765217302858e70fa4Paul Duffin @Override protected List<Float> create(Float[] elements) { 500888a09821a98ac0680fad765217302858e70fa4Paul Duffin return asList(elements); 510888a09821a98ac0680fad765217302858e70fa4Paul Duffin } 520888a09821a98ac0680fad765217302858e70fa4Paul Duffin } 530888a09821a98ac0680fad765217302858e70fa4Paul Duffin 540888a09821a98ac0680fad765217302858e70fa4Paul Duffin public static final class FloatsAsListHeadSubListGenerator extends TestFloatListGenerator { 550888a09821a98ac0680fad765217302858e70fa4Paul Duffin @Override protected List<Float> create(Float[] elements) { 560888a09821a98ac0680fad765217302858e70fa4Paul Duffin Float[] suffix = {Float.MIN_VALUE, Float.MAX_VALUE}; 570888a09821a98ac0680fad765217302858e70fa4Paul Duffin Float[] all = concat(elements, suffix); 580888a09821a98ac0680fad765217302858e70fa4Paul Duffin return asList(all).subList(0, elements.length); 590888a09821a98ac0680fad765217302858e70fa4Paul Duffin } 600888a09821a98ac0680fad765217302858e70fa4Paul Duffin } 610888a09821a98ac0680fad765217302858e70fa4Paul Duffin 620888a09821a98ac0680fad765217302858e70fa4Paul Duffin public static final class FloatsAsListTailSubListGenerator extends TestFloatListGenerator { 630888a09821a98ac0680fad765217302858e70fa4Paul Duffin @Override protected List<Float> create(Float[] elements) { 640888a09821a98ac0680fad765217302858e70fa4Paul Duffin Float[] prefix = {(float) 86, (float) 99}; 650888a09821a98ac0680fad765217302858e70fa4Paul Duffin Float[] all = concat(prefix, elements); 660888a09821a98ac0680fad765217302858e70fa4Paul Duffin return asList(all).subList(2, elements.length + 2); 670888a09821a98ac0680fad765217302858e70fa4Paul Duffin } 680888a09821a98ac0680fad765217302858e70fa4Paul Duffin } 690888a09821a98ac0680fad765217302858e70fa4Paul Duffin 700888a09821a98ac0680fad765217302858e70fa4Paul Duffin public static final class FloatsAsListMiddleSubListGenerator extends TestFloatListGenerator { 710888a09821a98ac0680fad765217302858e70fa4Paul Duffin @Override protected List<Float> create(Float[] elements) { 720888a09821a98ac0680fad765217302858e70fa4Paul Duffin Float[] prefix = {Float.MIN_VALUE, Float.MAX_VALUE}; 730888a09821a98ac0680fad765217302858e70fa4Paul Duffin Float[] suffix = {(float) 86, (float) 99}; 740888a09821a98ac0680fad765217302858e70fa4Paul Duffin Float[] all = concat(concat(prefix, elements), suffix); 750888a09821a98ac0680fad765217302858e70fa4Paul Duffin return asList(all).subList(2, elements.length + 2); 760888a09821a98ac0680fad765217302858e70fa4Paul Duffin } 770888a09821a98ac0680fad765217302858e70fa4Paul Duffin } 780888a09821a98ac0680fad765217302858e70fa4Paul Duffin 790888a09821a98ac0680fad765217302858e70fa4Paul Duffin private static Float[] concat(Float[] left, Float[] right) { 800888a09821a98ac0680fad765217302858e70fa4Paul Duffin Float[] result = new Float[left.length + right.length]; 810888a09821a98ac0680fad765217302858e70fa4Paul Duffin System.arraycopy(left, 0, result, 0, left.length); 820888a09821a98ac0680fad765217302858e70fa4Paul Duffin System.arraycopy(right, 0, result, left.length, right.length); 830888a09821a98ac0680fad765217302858e70fa4Paul Duffin return result; 840888a09821a98ac0680fad765217302858e70fa4Paul Duffin } 850888a09821a98ac0680fad765217302858e70fa4Paul Duffin 860888a09821a98ac0680fad765217302858e70fa4Paul Duffin public static abstract class TestFloatListGenerator 870888a09821a98ac0680fad765217302858e70fa4Paul Duffin implements TestListGenerator<Float> { 880888a09821a98ac0680fad765217302858e70fa4Paul Duffin @Override 890888a09821a98ac0680fad765217302858e70fa4Paul Duffin public SampleElements<Float> samples() { 900888a09821a98ac0680fad765217302858e70fa4Paul Duffin return new SampleFloats(); 910888a09821a98ac0680fad765217302858e70fa4Paul Duffin } 920888a09821a98ac0680fad765217302858e70fa4Paul Duffin 930888a09821a98ac0680fad765217302858e70fa4Paul Duffin @Override 940888a09821a98ac0680fad765217302858e70fa4Paul Duffin public List<Float> create(Object... elements) { 950888a09821a98ac0680fad765217302858e70fa4Paul Duffin Float[] array = new Float[elements.length]; 960888a09821a98ac0680fad765217302858e70fa4Paul Duffin int i = 0; 970888a09821a98ac0680fad765217302858e70fa4Paul Duffin for (Object e : elements) { 980888a09821a98ac0680fad765217302858e70fa4Paul Duffin array[i++] = (Float) e; 990888a09821a98ac0680fad765217302858e70fa4Paul Duffin } 1000888a09821a98ac0680fad765217302858e70fa4Paul Duffin return create(array); 1010888a09821a98ac0680fad765217302858e70fa4Paul Duffin } 1020888a09821a98ac0680fad765217302858e70fa4Paul Duffin 1030888a09821a98ac0680fad765217302858e70fa4Paul Duffin /** 1040888a09821a98ac0680fad765217302858e70fa4Paul Duffin * Creates a new collection containing the given elements; implement this 1050888a09821a98ac0680fad765217302858e70fa4Paul Duffin * method instead of {@link #create(Object...)}. 1060888a09821a98ac0680fad765217302858e70fa4Paul Duffin */ 1070888a09821a98ac0680fad765217302858e70fa4Paul Duffin protected abstract List<Float> create(Float[] elements); 1080888a09821a98ac0680fad765217302858e70fa4Paul Duffin 1090888a09821a98ac0680fad765217302858e70fa4Paul Duffin @Override 1100888a09821a98ac0680fad765217302858e70fa4Paul Duffin public Float[] createArray(int length) { 1110888a09821a98ac0680fad765217302858e70fa4Paul Duffin return new Float[length]; 1120888a09821a98ac0680fad765217302858e70fa4Paul Duffin } 1130888a09821a98ac0680fad765217302858e70fa4Paul Duffin 1140888a09821a98ac0680fad765217302858e70fa4Paul Duffin /** Returns the original element list, unchanged. */ 1150888a09821a98ac0680fad765217302858e70fa4Paul Duffin @Override 1160888a09821a98ac0680fad765217302858e70fa4Paul Duffin public List<Float> order(List<Float> insertionOrder) { 1170888a09821a98ac0680fad765217302858e70fa4Paul Duffin return insertionOrder; 1180888a09821a98ac0680fad765217302858e70fa4Paul Duffin } 1190888a09821a98ac0680fad765217302858e70fa4Paul Duffin } 1200888a09821a98ac0680fad765217302858e70fa4Paul Duffin 1210888a09821a98ac0680fad765217302858e70fa4Paul Duffin public static class SampleFloats extends SampleElements<Float> { 1220888a09821a98ac0680fad765217302858e70fa4Paul Duffin public SampleFloats() { 1230888a09821a98ac0680fad765217302858e70fa4Paul Duffin super((float) 0, (float) 1, (float) 2, (float) 3, (float) 4); 1240888a09821a98ac0680fad765217302858e70fa4Paul Duffin } 1250888a09821a98ac0680fad765217302858e70fa4Paul Duffin } 1260888a09821a98ac0680fad765217302858e70fa4Paul Duffin} 1270888a09821a98ac0680fad765217302858e70fa4Paul Duffin 128