public void testValueCollectionRemoveAllCollection() {
int[] keys = {1138, 42, 86, 99, 101, 727, 117};
long[] vals = new long[keys.length];
TIntLongMap map = new TIntLongHashMap();
for ( int i = 0; i < keys.length; i++ ) {
vals[i] = keys[i] * 2;
map.put( keys[i], vals[i] );
}
TLongCollection values = map.valueCollection();
assertEquals( map.size(), values.size() );
assertFalse( values.isEmpty() );
// test with a java.util.Map
Set<Number> java_set = new HashSet<Number>();
assertFalse( values.removeAll( java_set ) );
assertEquals( vals.length, values.size() );
assertEquals( vals.length, map.size() );
for ( int i = 0; i < keys.length; i++ ) {
assertTrue( values.contains( vals[i] ) );
assertTrue( map.containsValue( vals[i] ) );
}
for ( int i = 0; i < vals.length; i++ ) {
java_set.add( Long.valueOf( vals[i] ) );
}
java_set.remove( Long.valueOf( 42 * 2 ) );
assertTrue( "values should have been modified: " + values + ", java: " + java_set,
values.removeAll( java_set ) );
assertEquals( "set: " + values, 1, values.size() );
assertEquals( "set: " + values, 1, map.size() );
for ( int i = 0; i < vals.length; i++ ) {
if ( vals[i] == 42 * 2 ) {
assertTrue( values.contains( vals[i] ) );
assertTrue( map.containsValue( vals[i] ) );
} else {
assertFalse( values.contains( vals[i] ) );
assertFalse( map.containsValue( vals[i] ) );
}
}
}