package nebula.data;
import junit.framework.TestCase;
import nebula.data.impl.EditableEntity;
import com.google.common.base.Function;
public class SmartListTest extends TestCase {
SmartList<String,Entity> list;
protected void setUp() throws Exception {
super.setUp();
list = new SmartList<String,Entity>(new Function<Entity, String>() {
@Override
public String apply(Entity from) {
return (String)from.get("name");
}
});
}
protected void tearDown() throws Exception {
super.tearDown();
}
public final void testDelegate() {
Entity entity = new EditableEntity();
entity.put("name", "wangshilian");
list.add(entity);
assertEquals(1, list.size());
list.remove(entity);
assertEquals(0, list.size());
}
public final void testSmartList() {
list = new SmartList<String,Entity>(new Function<Entity, String>() {
@Override
public String apply(Entity from) {
return (String) from.get("name");
}
});
}
public void testGetString() throws Exception {
list = new SmartList<String,Entity>(new Function<Entity, String>() {
@Override
public String apply(Entity from) {
return (String) from.get("name");
}
});
Entity entity = new EditableEntity();
entity.put("name", "wangshilian");
entity.put("v", "1");
list.add(entity);
Entity get = list.get("wangshilian");
assertEquals("1", get.get("v"));
}
// public final void testIndexBy() {
// list = new SmartList<String,Entity>(new Function<Entity, String>() {
// @Override
// public String apply(Entity from) {
// return (String)from.get("name");
// }
// });
//
// Entity entity = new EditableEntity();
// entity.put("name", "wangshilian");
// list.add(entity);
//
// Classificator<Integer, Entity> classificator = list.liveClassify(new Function<Entity, Integer>() {
// @Override
// public Integer apply(Entity from) {
// return ((String) from.get("name")).length();
// }
// });
//
// assertEquals("11", Joiner.on(" , ").join(classificator.getClassifications()));
//
// assertEquals(1, classificator.getData(11).size());
// assertEquals("wangshilian", classificator.getData(11).get(0).get("name"));
//
// entity = new EditableEntity();
// entity.put("name", "1234");
// list.add(entity);
//
// assertEquals("4,11", Joiner.on(",").join(classificator.getClassifications()));
//
// assertEquals(1, classificator.getData(11).size());
// assertEquals("wangshilian", classificator.getData(11).get(0).get("name"));
//
// assertEquals(1, classificator.getData(4).size());
// assertEquals("1234", classificator.getData(4).get(0).get("name"));
// }
//
// public final void testFilterBy() {
// list = new SmartList<String,Entity>(new Function<Entity, String>() {
// @Override
// public String apply(Entity from) {
// return (String) from.get("name");
// }
// });
//
// Entity entity = new EditableEntity();
// entity.put("name", "wangshilian");
// list.add(entity);
//
// entity = new EditableEntity();
// entity.put("name", "1234");
// list.add(entity);
//
// Filter<Entity> filter = list.liveFilter(new Predicate<Entity>() {
// @Override
// public boolean apply(Entity input) {
// return ((String) input.get("name")).length() > 5;
// }
// });
//
// assertEquals(1, filter.get().size());
//
// entity = new EditableEntity();
// entity.put("name", "1234");
// list.add(entity);
//
// assertEquals(1, filter.get().size());
//
// entity = new EditableEntity();
// entity.put("name", "123456");
// list.add(entity);
//
// assertEquals(2, filter.get().size());
//
// list.remove(entity);
//
// assertEquals(1, filter.get().size());
// }
//
// public final void testAddIntV() {
// list = new SmartList<String,Entity>(new Function<Entity, String>() {
// @Override
// public String apply(Entity from) {
// return (String) from.get("name");
// }
// });
//
// Entity entity = new EditableEntity();
// entity.put("name", "wangshilian");
// list.add(0, entity);
//
// Classificator<Integer, Entity> classificator = list.liveClassify(new Function<Entity, Integer>() {
// @Override
// public Integer apply(Entity from) {
// return ((String) from.get("name")).length();
// }
// });
//
// assertEquals("11", Joiner.on(" , ").join(classificator.getClassifications()));
//
// assertEquals(1, classificator.getData(11).size());
// assertEquals("wangshilian", classificator.getData(11).get(0).get("name"));
//
// entity = new EditableEntity();
// entity.put("name", "1234");
// list.add(0, entity);
//
// assertEquals("4,11", Joiner.on(",").join(classificator.getClassifications()));
//
// assertEquals(1, classificator.getData(11).size());
// assertEquals("wangshilian", classificator.getData(11).get(0).get("name"));
//
// assertEquals(1, classificator.getData(4).size());
// assertEquals("1234", classificator.getData(4).get(0).get("name"));
// }
//
// public final void testAddV() {
// list = new SmartList<String,Entity>(new Function<Entity, String>() {
// @Override
// public String apply(Entity from) {
// return (String) from.get("name");
// }
// });
//
// Entity entity = new EditableEntity();
// entity.put("name", "wangshilian");
// list.add(entity);
//
// Classificator<Integer, Entity> classificator = list.liveClassify(new Function<Entity, Integer>() {
// @Override
// public Integer apply(Entity from) {
// return ((String) from.get("name")).length();
// }
// });
//
// assertEquals("11", Joiner.on(" , ").join(classificator.getClassifications()));
//
// assertEquals(1, classificator.getData(11).size());
// assertEquals("wangshilian", classificator.getData(11).get(0).get("name"));
//
// entity = new EditableEntity();
// entity.put("name", "1234");
// list.add(entity);
//
// assertEquals("4,11", Joiner.on(",").join(classificator.getClassifications()));
//
// assertEquals(1, classificator.getData(11).size());
// assertEquals("wangshilian", classificator.getData(11).get(0).get("name"));
//
// assertEquals(1, classificator.getData(4).size());
// assertEquals("1234", classificator.getData(4).get(0).get("name"));
// }
//
// public final void testRemoveInt() {
// list = new SmartList<String,Entity>(new Function<Entity, String>() {
// @Override
// public String apply(Entity from) {
// return (String) from.get("name");
// }
// });
//
// Entity entity = new EditableEntity();
// entity.put("name", "wangshilian");
// list.add(entity);
//
// entity = new EditableEntity();
// entity.put("name", "1234");
// list.add(entity);
//
// Filter<Entity> filter = list.liveFilter(new Predicate<Entity>() {
// @Override
// public boolean apply(Entity input) {
// return ((String) input.get("name")).length() > 5;
// }
// });
//
// assertEquals(1, filter.get().size());
//
// entity = new EditableEntity();
// entity.put("name", "1234");
// list.add(entity);
//
// assertEquals(1, filter.get().size());
//
// entity = new EditableEntity();
// entity.put("name", "123456");
// list.add(entity);
//
// assertEquals(2, filter.get().size());
//
// list.remove(0);
//
// assertEquals(1, filter.get().size());
// }
//
// public final void testRemoveAllCollectionOfQ() {
// try {
// list = new SmartList<String,Entity>(new Function<Entity, String>() {
// @Override
// public String apply(Entity from) {
// return (String) from.get("name");
// }
// });
//
// list.removeAll(list);
// fail("Should throw UnsupportedOperationException");
// } catch (UnsupportedOperationException e) {
// }
// }
//
// public final void testRemoveObject() {
// list = new SmartList<String,Entity>(new Function<Entity, String>() {
// @Override
// public String apply(Entity from) {
// return (String) from.get("name");
// }
// });
//
// Entity entity = new EditableEntity();
// entity.put("name", "wangshilian");
// list.add(entity);
//
// entity = new EditableEntity();
// entity.put("name", "1234");
// list.add(entity);
//
// Filter<Entity> filter = list.liveFilter(new Predicate<Entity>() {
// @Override
// public boolean apply(Entity input) {
// return ((String) input.get("name")).length() > 5;
// }
// });
//
// assertEquals(1, filter.get().size());
//
// entity = new EditableEntity();
// entity.put("name", "1234");
// list.add(entity);
//
// assertEquals(1, filter.get().size());
//
// entity = new EditableEntity();
// entity.put("name", "123456");
// list.add(entity);
//
// assertEquals(2, filter.get().size());
//
// list.remove(entity);
//
// assertEquals(1, filter.get().size());
// }
}