@Test
public void testUnequalySizedLists() throws Exception {

  List<String> s1 = new ArrayList<String>();
  s1.add("a");
  s1.add("b");
  List<String> s2 = new ArrayList<String>();
  s2.add("c");
  List<String> s3 = new ArrayList<String>();
  s3.add("e");
  s3.add("f");
  
  List<List<String>> l = new ArrayList<List<String>>();
  l.add(s1);
  l.add(s2);
  l.add(s3);
  
  List<ArrayList<String>> cp = CartesianProduct.cartesianProduct(l);
  
  ////////////////////////////////////////////
  // build the expected result
  List<List<String>> resultSet = new ArrayList<List<String>>();
  List<String> rl = new ArrayList<String>();
  rl.add("a");
  rl.add("c");
  rl.add("e");
  resultSet.add(rl);
  rl = new ArrayList<String>();
  rl.add("a");
  rl.add("c");
  rl.add("f");
  resultSet.add(rl);
  rl = new ArrayList<String>();
  rl.add("b");
  rl.add("c");
  rl.add("e");
  resultSet.add(rl);
  rl = new ArrayList<String>();
  rl.add("b");
  rl.add("c");
  rl.add("f");
  resultSet.add(rl);
  
  assertEquals(resultSet, cp);
}