using System;
using System.Collections;
using ut;
public class testcomparelists
{
comparelists mCompare = new comparelists();
public void testnulllists()
{
try
{
mCompare.compare(null, null);
}
catch (Exception )
{
utx.assert("null lists", false);
}
}
public void testemptylists()
{
ArrayList list1 = new ArrayList();
ArrayList list2 = new ArrayList();
try
{
mCompare.compare(list1, list2);
}
catch (Exception )
{
utx.assert("empty lists", false);
}
utx.assert(list1, list2);
}
public void testhappypath()
{
ArrayList listres = new ArrayList(new object[] {"a", "b", "c"});
ArrayList list1 = listres;
ArrayList list2 = listres;
mCompare.compare(list1, list2);
utx.assert(list1, list2);
utx.assert(list1, listres);
utx.assert(list2, listres);
}
public void testmissingfromlist1_longer()
{
ArrayList list1 = new ArrayList(new object[] {"a", "b"});
ArrayList list2 = new ArrayList(new object[] {"a"});
ArrayList list1res = new ArrayList(new object[] {"a", "b"});
ArrayList list2res = new ArrayList(new object[] {"a", "<missing>"});
mCompare.compare(list1, list2);
utx.assertnot(list1, list2);
utx.assert(list1, list1res);
utx.assert(list2, list2res);
}
public void testmissingfromlist2_longer()
{
ArrayList list1 = new ArrayList(new object[] {"a"});
ArrayList list2 = new ArrayList(new object[] {"a", "b"});
ArrayList list1res = new ArrayList(new object[] {"a", "<missing>"});
ArrayList list2res = new ArrayList(new object[] {"a", "b"});
mCompare.compare(list1, list2);
utx.assertnot(list1, list2);
utx.assert(list1, list1res);
utx.assert(list2, list2res);
}
public void testmissingfromlist1_first()
{
ArrayList list1 = new ArrayList(new object[] { "b", "c"});
ArrayList list2 = new ArrayList(new object[] {"a", "b", "c"});
ArrayList list1res = new ArrayList(new object[] {"<missing>", "b", "c"});
ArrayList list2res = new ArrayList(new object[] {"a", "b", "c"});
mCompare.compare(list1, list2);
utx.assertnot(list1, list2);
utx.assert(list1, list1res);
utx.assert(list2, list2res);
}
public void testmissingfromlist1_middle()
{
ArrayList list1res = new ArrayList(new object[] {"a", "<missing>", "c"}); //list1 is the 'master'
ArrayList list2res = new ArrayList(new object[] {"a", "b", "c"});
ArrayList list1 = new ArrayList(new object[] {"a", "c"});
ArrayList list2 = new ArrayList(new object[] {"a", "b", "c"});
mCompare.compare(list1, list2);
utx.assertnot(list1, list2);
utx.assert(list1, list1res);
utx.assert(list2, list2res);
}
public void testmissingfromlist1_last()
{
ArrayList list1 = new ArrayList(new object[] {"a", "b"});
ArrayList list2 = new ArrayList(new object[] {"a", "b", "c"});
ArrayList list1res = new ArrayList(new object[] {"a", "b", "<missing>"}); //list1 is the 'master'
ArrayList list2res = new ArrayList(new object[] {"a", "b", "c"});
mCompare.compare(list1, list2);
utx.assertnot(list1, list2);
utx.assert(list1, list1res);
utx.assert(list2, list2res);
}
public void testmissingfromlist2_first()
{
ArrayList list1 = new ArrayList(new object[] {"a", "b", "c"});
ArrayList list2 = new ArrayList(new object[] { "b", "c"});
ArrayList list1res = new ArrayList(new object[] {"a", "b", "c"});
ArrayList list2res = new ArrayList(new object[] {"<missing>", "b", "c"});
mCompare.compare(list1, list2);
utx.assert(list1.Count, list2.Count);
utx.assertnot(list1, list2);
utx.assert(list1, list1res);
utx.assert(list2, list2res);
}
public void testmissingfromlist2_middle()
{
ArrayList list1 = new ArrayList(new object[] {"a", "b", "c"});
ArrayList list2 = new ArrayList(new object[] {"a", "c"});
ArrayList list1res = new ArrayList(new object[] {"a", "b", "c"});
ArrayList list2res = new ArrayList(new object[] {"a", "<missing>", "c"});
mCompare.compare(list1, list2);
utx.assert(list1.Count, list2.Count);
utx.assertnot(list1, list2);
utx.assert(list1, list1res);
utx.assert(list2, list2res);
}
public void testmissingfromlist2_last()
{
ArrayList list1 = new ArrayList(new object[] {"a", "b", "c"});
ArrayList list2 = new ArrayList(new object[] {"a", "b" });
ArrayList list1res = new ArrayList(new object[] {"a", "b", "c"});
ArrayList list2res = new ArrayList(new object[] {"a", "b", "<missing>"});
mCompare.compare(list1, list2);
utx.assert(list1.Count, list2.Count);
utx.assertnot(list1, list2);
utx.assert(list1, list1res);
utx.assert(list2, list2res);
}
public void testmissingfromboth()
{
ArrayList list1 = new ArrayList(new object[] {"a", "c" });
ArrayList list2 = new ArrayList(new object[] {"a", "b", "d" });
ArrayList list1res = new ArrayList(new object[] {"a", "<missing>", "c", "<missing>"});
ArrayList list2res = new ArrayList(new object[] {"a", "b", "<missing>", "d"});
mCompare.compare(list1, list2);
utx.assert(list1.Count, list2.Count);
utx.assertnot(list1, list2);
utx.assert(list1, list1res);
utx.assert(list2, list2res);
}
}
|