@Override public Multiset<K> create(Object... elements) { /* * This is nasty and complicated, but it's the only way to make sure keys get mapped to enough * distinct values. */ Entry[] entries = new Entry[elements.length]; Map<K, Iterator<V>> valueIterators = new HashMap<>(); for (int i = 0; i < elements.length; i++) { @SuppressWarnings("unchecked") K key = (K) elements[i]; Iterator<V> valueItr = valueIterators.get(key); if (valueItr == null) { valueIterators.put(key, valueItr = sampleValuesIterator()); } entries[i] = mapEntry((K) elements[i], valueItr.next()); } return multimapGenerator.create((Object[]) entries).keys(); }
@Override public Multiset<K> create(Object... elements) { /* * This is nasty and complicated, but it's the only way to make sure keys get mapped to enough * distinct values. */ Map.Entry[] entries = new Map.Entry[elements.length]; Map<K, Iterator<V>> valueIterators = new HashMap<K, Iterator<V>>(); for (int i = 0; i < elements.length; i++) { @SuppressWarnings("unchecked") K key = (K) elements[i]; Iterator<V> valueItr = valueIterators.get(key); if (valueItr == null) { valueIterators.put(key, valueItr = sampleValuesIterator()); } entries[i] = mapEntry((K) elements[i], valueItr.next()); } return multimapGenerator.create(entries).keys(); }
@Override public Multiset<K> create(Object... elements) { /* * This is nasty and complicated, but it's the only way to make sure keys get mapped to enough * distinct values. */ Entry[] entries = new Entry[elements.length]; Map<K, Iterator<V>> valueIterators = new HashMap<>(); for (int i = 0; i < elements.length; i++) { @SuppressWarnings("unchecked") K key = (K) elements[i]; Iterator<V> valueItr = valueIterators.get(key); if (valueItr == null) { valueIterators.put(key, valueItr = sampleValuesIterator()); } entries[i] = mapEntry((K) elements[i], valueItr.next()); } return multimapGenerator.create((Object[]) entries).keys(); }
@Override public Iterable<K> order(List<K> insertionOrder) { Iterator<V> valueIter = sampleValuesIterator(); List<Entry<K, V>> entries = new ArrayList<>(); for (K k : insertionOrder) { entries.add(mapEntry(k, valueIter.next())); } Iterable<Entry<K, V>> ordered = multimapGenerator.order(entries); List<K> orderedValues = new ArrayList<>(); for (Entry<K, V> entry : ordered) { orderedValues.add(entry.getKey()); } return orderedValues; } }
@Override public Iterable<K> order(List<K> insertionOrder) { Iterator<V> valueIter = sampleValuesIterator(); List<Entry<K, V>> entries = new ArrayList<Entry<K, V>>(); for (K k : insertionOrder) { entries.add(mapEntry(k, valueIter.next())); } Iterable<Entry<K, V>> ordered = multimapGenerator.order(entries); List<K> orderedValues = new ArrayList<K>(); for (Entry<K, V> entry : ordered) { orderedValues.add(entry.getKey()); } return orderedValues; } }
TestSuite computeKeysTestSuite( FeatureSpecificTestSuiteBuilder<?, ? extends OneSizeTestContainerGenerator<M, Map.Entry<K, V>>> parentBuilder) { return MultisetTestSuiteBuilder.using( new KeysGenerator<K, V, M>(parentBuilder.getSubjectGenerator())) .withFeatures(computeKeysFeatures(parentBuilder.getFeatures())) .named(parentBuilder.getName() + ".keys") .suppressing(parentBuilder.getSuppressedTests()) .createTestSuite(); }
TestSuite computeKeysTestSuite( FeatureSpecificTestSuiteBuilder<?, ? extends OneSizeTestContainerGenerator<M, Entry<K, V>>> parentBuilder) { return MultisetTestSuiteBuilder.using( new KeysGenerator<K, V, M>(parentBuilder.getSubjectGenerator())) .withFeatures(computeKeysFeatures(parentBuilder.getFeatures())) .named(parentBuilder.getName() + ".keys") .suppressing(parentBuilder.getSuppressedTests()) .createTestSuite(); }
@Override public Iterable<K> order(List<K> insertionOrder) { Iterator<V> valueIter = sampleValuesIterator(); List<Entry<K, V>> entries = new ArrayList<>(); for (K k : insertionOrder) { entries.add(mapEntry(k, valueIter.next())); } Iterable<Entry<K, V>> ordered = multimapGenerator.order(entries); List<K> orderedValues = new ArrayList<>(); for (Entry<K, V> entry : ordered) { orderedValues.add(entry.getKey()); } return orderedValues; } }
TestSuite computeKeysTestSuite( FeatureSpecificTestSuiteBuilder<?, ? extends OneSizeTestContainerGenerator<M, Entry<K, V>>> parentBuilder) { return MultisetTestSuiteBuilder.using( new KeysGenerator<K, V, M>(parentBuilder.getSubjectGenerator())) .withFeatures(computeKeysFeatures(parentBuilder.getFeatures())) .named(parentBuilder.getName() + ".keys") .suppressing(parentBuilder.getSuppressedTests()) .createTestSuite(); }