@Test
public void testSubtract() {

    List<Set<Integer>> materialSets = new ArrayList<Set<Integer>>();
    Set<Integer> materialSet0 = new HashSet<Integer>();
    materialSet0.add(1);
    materialSet0.add(2);
    materialSet0.add(3);
    materialSet0.add(4);
    materialSet0.add(5);
    materialSet0.add(6);
    materialSets.add(materialSet0);
    Set<Integer> materialSet1 = new HashSet<Integer>();
    materialSet1.add(1);
    materialSet1.add(2);
    materialSet1.add(3);
    materialSets.add(materialSet1);
    Set<Integer> materialSet2 = new HashSet<Integer>();
    materialSet2.add(1);
    materialSet2.add(3);
    materialSet2.add(5);
    materialSets.add(materialSet2);
    CodePoints result = new CodePoints(materialSet0).subtract(
            new CodePoints(materialSet1)).subtract(
                    new CodePoints(materialSet2));
    assertThat(result.containsAll(new String(new int[] { 1 }, 0, 1)), is(
            false));
    assertThat(result.containsAll(new String(new int[] { 2 }, 0, 1)), is(
            false));
    assertThat(result.containsAll(new String(new int[] { 3 }, 0, 1)), is(
            false));
    assertThat(result.containsAll(new String(new int[] { 4 }, 0, 1)), is(
            true));
    assertThat(result.containsAll(new String(new int[] { 5 }, 0, 1)), is(
            false));
    assertThat(result.containsAll(new String(new int[] { 6 }, 0, 1)), is(
            true));
}