Coverage Summary for Class: DerivedGoogleCollectionGenerators (com.google.common.collect.testing.google)

Class Method, % Line, %
DerivedGoogleCollectionGenerators 0% (0/1) 0% (0/1)
DerivedGoogleCollectionGenerators$BiMapValueSetGenerator 0% (0/6) 0% (0/23)
DerivedGoogleCollectionGenerators$InverseBiMapGenerator 0% (0/9) 0% (0/19)
DerivedGoogleCollectionGenerators$MapGenerator 0% (0/8) 0% (0/9)
Total 0% (0/24) 0% (0/52)


1 /* 2  * Copyright (C) 2012 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  17 package com.google.common.collect.testing.google; 18  19 import com.google.common.annotations.GwtCompatible; 20 import com.google.common.collect.BiMap; 21 import com.google.common.collect.testing.DerivedGenerator; 22 import com.google.common.collect.testing.Helpers; 23 import com.google.common.collect.testing.OneSizeTestContainerGenerator; 24 import com.google.common.collect.testing.SampleElements; 25 import com.google.common.collect.testing.TestMapGenerator; 26 import com.google.common.collect.testing.TestSetGenerator; 27 import com.google.common.collect.testing.TestSubjectGenerator; 28 import java.util.ArrayList; 29 import java.util.Collection; 30 import java.util.List; 31 import java.util.Map; 32 import java.util.Map.Entry; 33 import java.util.Set; 34  35 /** 36  * Derived suite generators for Guava collection interfaces, split out of the suite builders so that 37  * they are available to GWT. 38  * 39  * @author Louis Wasserman 40  */ 41 @GwtCompatible 42 public final class DerivedGoogleCollectionGenerators { 43  public static class MapGenerator<K, V> implements TestMapGenerator<K, V>, DerivedGenerator { 44  45  private final OneSizeTestContainerGenerator<BiMap<K, V>, Entry<K, V>> generator; 46  47  public MapGenerator( 48  OneSizeTestContainerGenerator<BiMap<K, V>, Entry<K, V>> oneSizeTestContainerGenerator) { 49  this.generator = oneSizeTestContainerGenerator; 50  } 51  52  @Override 53  public SampleElements<Entry<K, V>> samples() { 54  return generator.samples(); 55  } 56  57  @Override 58  public Map<K, V> create(Object... elements) { 59  return generator.create(elements); 60  } 61  62  @Override 63  public Entry<K, V>[] createArray(int length) { 64  return generator.createArray(length); 65  } 66  67  @Override 68  public Iterable<Entry<K, V>> order(List<Entry<K, V>> insertionOrder) { 69  return generator.order(insertionOrder); 70  } 71  72  @SuppressWarnings("unchecked") 73  @Override 74  public K[] createKeyArray(int length) { 75  return (K[]) new Object[length]; 76  } 77  78  @SuppressWarnings("unchecked") 79  @Override 80  public V[] createValueArray(int length) { 81  return (V[]) new Object[length]; 82  } 83  84  @Override 85  public TestSubjectGenerator<?> getInnerGenerator() { 86  return generator; 87  } 88  } 89  90  public static class InverseBiMapGenerator<K, V> 91  implements TestBiMapGenerator<V, K>, DerivedGenerator { 92  93  private final OneSizeTestContainerGenerator<BiMap<K, V>, Entry<K, V>> generator; 94  95  public InverseBiMapGenerator( 96  OneSizeTestContainerGenerator<BiMap<K, V>, Entry<K, V>> oneSizeTestContainerGenerator) { 97  this.generator = oneSizeTestContainerGenerator; 98  } 99  100  @Override 101  public SampleElements<Entry<V, K>> samples() { 102  SampleElements<Entry<K, V>> samples = generator.samples(); 103  return new SampleElements<>( 104  reverse(samples.e0()), 105  reverse(samples.e1()), 106  reverse(samples.e2()), 107  reverse(samples.e3()), 108  reverse(samples.e4())); 109  } 110  111  private Entry<V, K> reverse(Entry<K, V> entry) { 112  return Helpers.mapEntry(entry.getValue(), entry.getKey()); 113  } 114  115  @SuppressWarnings("unchecked") 116  @Override 117  public BiMap<V, K> create(Object... elements) { 118  Entry<?, ?>[] entries = new Entry<?, ?>[elements.length]; 119  for (int i = 0; i < elements.length; i++) { 120  entries[i] = reverse((Entry<K, V>) elements[i]); 121  } 122  return generator.create((Object[]) entries).inverse(); 123  } 124  125  @SuppressWarnings("unchecked") 126  @Override 127  public Entry<V, K>[] createArray(int length) { 128  return new Entry[length]; 129  } 130  131  @Override 132  public Iterable<Entry<V, K>> order(List<Entry<V, K>> insertionOrder) { 133  return insertionOrder; 134  } 135  136  @SuppressWarnings("unchecked") 137  @Override 138  public V[] createKeyArray(int length) { 139  return (V[]) new Object[length]; 140  } 141  142  @SuppressWarnings("unchecked") 143  @Override 144  public K[] createValueArray(int length) { 145  return (K[]) new Object[length]; 146  } 147  148  @Override 149  public TestSubjectGenerator<?> getInnerGenerator() { 150  return generator; 151  } 152  } 153  154  public static class BiMapValueSetGenerator<K, V> 155  implements TestSetGenerator<V>, DerivedGenerator { 156  private final OneSizeTestContainerGenerator<BiMap<K, V>, Entry<K, V>> mapGenerator; 157  private final SampleElements<V> samples; 158  159  public BiMapValueSetGenerator( 160  OneSizeTestContainerGenerator<BiMap<K, V>, Entry<K, V>> mapGenerator) { 161  this.mapGenerator = mapGenerator; 162  final SampleElements<Entry<K, V>> mapSamples = this.mapGenerator.samples(); 163  this.samples = 164  new SampleElements<V>( 165  mapSamples.e0().getValue(), 166  mapSamples.e1().getValue(), 167  mapSamples.e2().getValue(), 168  mapSamples.e3().getValue(), 169  mapSamples.e4().getValue()); 170  } 171  172  @Override 173  public SampleElements<V> samples() { 174  return samples; 175  } 176  177  @Override 178  public Set<V> create(Object... elements) { 179  @SuppressWarnings("unchecked") 180  V[] valuesArray = (V[]) elements; 181  182  // Start with a suitably shaped collection of entries 183  Collection<Entry<K, V>> originalEntries = mapGenerator.getSampleElements(elements.length); 184  185  // Create a copy of that, with the desired value for each value 186  Collection<Entry<K, V>> entries = new ArrayList<>(elements.length); 187  int i = 0; 188  for (Entry<K, V> entry : originalEntries) { 189  entries.add(Helpers.mapEntry(entry.getKey(), valuesArray[i++])); 190  } 191  192  return mapGenerator.create(entries.toArray()).values(); 193  } 194  195  @Override 196  public V[] createArray(int length) { 197  final V[] vs = 198  ((TestBiMapGenerator<K, V>) mapGenerator.getInnerGenerator()).createValueArray(length); 199  return vs; 200  } 201  202  @Override 203  public Iterable<V> order(List<V> insertionOrder) { 204  return insertionOrder; 205  } 206  207  @Override 208  public TestSubjectGenerator<?> getInnerGenerator() { 209  return mapGenerator; 210  } 211  } 212  213  private DerivedGoogleCollectionGenerators() {} 214 }