package org.egonet.graph;
import static org.junit.Assert.*;
import java.util.Set;
import org.junit.*;
import junit.framework.JUnit4TestAdapter;
import org.egonet.graph.IndexedSetOfSets;
import com.google.common.collect.Sets;
public class IndexedSetOfSetsTest {
/*@Test
public void fail() {
assertEquals("1!=2",1,2);
}*/
private Set<String> item1() {
Set<String> item = Sets.newHashSet();
item.add("a1");
item.add("b1");
item.add("c1");
return item;
}
private Set<String> item2() {
Set<String> item = Sets.newHashSet();
item.add("a2");
item.add("b2");
item.add("c2");
return item;
}
private Set<String> item3() {
Set<String> item = Sets.newHashSet();
item.add("a1");
item.add("b1");
item.add("c2");
return item;
}
private IndexedSetOfSets<String> emptySet() {
IndexedSetOfSets<String> set = new IndexedSetOfSets<String>();
return set;
}
private IndexedSetOfSets<String> set1() {
IndexedSetOfSets<String> set = new IndexedSetOfSets<String>();
set.add(item1());
return set;
}
private IndexedSetOfSets<String> set2() {
IndexedSetOfSets<String> set = new IndexedSetOfSets<String>();
set.add(item2());
return set;
}
private IndexedSetOfSets<String> set12() {
IndexedSetOfSets<String> set = new IndexedSetOfSets<String>();
set.add(item1());
set.add(item2());
return set;
}
private IndexedSetOfSets<String> set21() {
IndexedSetOfSets<String> set = new IndexedSetOfSets<String>();
set.add(item2());
set.add(item1());
return set;
}
private IndexedSetOfSets<String> set13() {
IndexedSetOfSets<String> set = new IndexedSetOfSets<String>();
set.add(item1());
set.add(item3());
return set;
}
private IndexedSetOfSets<String> set123() {
IndexedSetOfSets<String> set = new IndexedSetOfSets<String>();
set.add(item1());
set.add(item2());
set.add(item3());
return set;
}
@Test
public void testAdd() {
assertFalse("Adding an item to a set changes the set.",
emptySet().equals(set1()));
assertFalse("Adding another item to a set changes the set.",
set1().equals(set12()));
assertEquals("Order of adding does not matter.",
set12(), set21());
}
@Test
public void testContains() {
assertTrue("A set contains the item placed in it.",
set1().contains(item1()));
assertTrue("A larger set contains the first item placed in it.",
set12().contains(item1()));
assertTrue("A larger set contains the second item placed in it.",
set12().contains(item2()));
assertFalse("A set does not contain an item that was not placed in it.",
set1().contains(item2()));
}
@Test
public void testRemove() {
IndexedSetOfSets<String> set12minus2 = set12();
set12minus2.remove(item2());
assertEquals("Remove is the inverse of add.",
set12minus2,set1());
IndexedSetOfSets<String> set12minus1 = set12();
set12minus1.remove(item1());
assertEquals("Remove is the inverse of add.",
set12minus1,set2());
IndexedSetOfSets<String> set12minus1and2 = set12();
set12minus1and2.remove(item1());
set12minus1and2.remove(item2());
assertEquals("Remove is the inverse of add.",
set12minus1and2,emptySet());
}
@Test
public void testFindByIndex() {
assertEquals("findByIndex returns empty set when used on empty set.",
emptySet(),emptySet().findByIndex("a1"));
assertEquals("findByIndex returns empty set when no relevant sets available.",
emptySet(),set13().findByIndex("a2"));
assertEquals("findByIndex finds the matching set.",
set1(),set12().findByIndex("a1"));
assertEquals("findByIndex can find more than one result.",
set13(),set123().findByIndex("b1"));
}
public static junit.framework.Test suite() {
return new JUnit4TestAdapter(IndexedSetOfSetsTest.class);
}
}