package com.jcwhatever.nucleus.collections.java; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import java.util.Set; /** * Tests a {@link Set} implementation. * * <p>Also runs {@link CollectionRunnable} on the set.</p> * * <p>Not a JUnit test case but throws errors via JUnit. Intended * to be instantiated with a test and the {@link #run} method invoked.</p> */ public class SetRunnable<E> implements Runnable { final Set<E> _set; final E _value1; final E _value2; final E _value3; /** * Constructor. * * @param set The set to test. * @param value1 A value to use for testing. * @param value2 A value to use for testing. * @param value3 A value to use for testing. */ public SetRunnable(Set<E> set, E value1, E value2, E value3) { _set = set; _value1 = value1; _value2 = value2; _value3 = value3; } @Override public void run() { CollectionRunnable<E> collectionTest = new CollectionRunnable<E>(_set, _value1, _value2, _value3); collectionTest.run(); try { _set.clear(); assertEquals(true, _set.isEmpty()); assertEquals(0, _set.size()); assertNotNull(_set.toString()); _set.add(_value1); _set.add(_value1); _set.add(_value1); } catch (UnsupportedOperationException e) { return; } assertEquals(1, _set.size()); _set.add(_value2); assertEquals(2, _set.size()); assertEquals(true, _set.contains(_value1)); assertEquals(true, _set.contains(_value2)); _set.remove(_value2); assertEquals(1, _set.size()); assertEquals(false, _set.contains(_value2)); _set.clear(); assertEquals(true, _set.isEmpty()); assertEquals(0, _set.size()); } }