@Test public void testMakeListOfList() { // same test as previous, but with a stream with a known length String[] strings = { "READ ME", "ZELGO NER", "HACKEM MUCHE" }; List<String> lst = ObjectStreams.makeList(ObjectStreams.wrap(Arrays.asList(strings))); assertThat(lst, hasSize(3)); assertThat(lst, contains(strings)); } //endregion
@Test public void testMakeListEmpty() { List<?> lst = ObjectStreams.makeList(ObjectStreams.empty()); assertThat(lst, hasSize(0)); }
@Test public void testMakeListOfIterator() { String[] strings = { "READ ME", "ZELGO NER", "HACKEM MUCHE" }; // go through an iteator so the stream doesn't know its length List<String> lst = ObjectStreams.makeList(ObjectStreams.wrap(Iterators.forArray(strings))); assertThat(lst, hasSize(3)); assertThat(lst, contains(strings)); }
@Test public void testEmptyDAO() { EntityCollectionDAO dao = EntityCollectionDAO.create(); assertThat(dao.getEntityIds(CommonTypes.ITEM), hasSize(0)); assertThat(dao.getEntityIds(RATING), hasSize(0)); assertThat(ObjectStreams.makeList(dao.streamEntities(RATING)), hasSize(0)); }
@Test public void testOneEntity() { EntityCollectionDAO dao = EntityCollectionDAO.create(Entities.create(CommonTypes.USER, 42)); assertThat(dao.getEntityIds(CommonTypes.ITEM), hasSize(0)); assertThat(dao.getEntityIds(CommonTypes.USER), contains(42L)); assertThat(ObjectStreams.makeList(dao.streamEntities(RATING)), hasSize(0)); assertThat(ObjectStreams.makeList(dao.streamEntities(CommonTypes.USER)), contains(Entities.create(CommonTypes.USER, 42L))); assertThat(dao.lookupEntity(CommonTypes.USER, 42), equalTo(Entities.create(CommonTypes.USER, 42))); }
@Test public void testNullQueryOneEntity() { EntityCollectionDAO dao = EntityCollectionDAO.create(Entities.create(CommonTypes.USER, 42)); EntityQuery<Entity> query = EntityQuery.newBuilder(CommonTypes.USER) .build(); List<Entity> results = ObjectStreams.makeList(dao.streamEntities(query)); assertThat(results, contains(Entities.create(CommonTypes.USER, 42))); }
@Test public void testGroupEntities() { List<Entity> entities = new ArrayList<>(); entities.add(Entities.newBuilder(LIKE, 1) .setAttribute(CommonAttributes.USER_ID, 42L) .setAttribute(CommonAttributes.ITEM_ID, 39L) .build()); entities.add(Entities.newBuilder(LIKE, 2) .setAttribute(CommonAttributes.USER_ID, 67L) .setAttribute(CommonAttributes.ITEM_ID, 28L) .build()); entities.add(Entities.newBuilder(LIKE, 3) .setAttribute(CommonAttributes.USER_ID, 42L) .setAttribute(CommonAttributes.ITEM_ID, 28L) .build()); EntityCollectionDAO dao = EntityCollectionDAO.create(entities); EntityQuery<Entity> query = EntityQuery.newBuilder(LIKE) .addSortKey(CommonAttributes.ITEM_ID) .build(); List<IdBox<List<Entity>>> results = ObjectStreams.makeList(dao.streamEntityGroups(query, CommonAttributes.USER_ID)); assertThat(results, hasSize(2)); assertThat(results, containsInAnyOrder(IdBox.create(42L, (List) ImmutableList.of(entities.get(2), entities.get(0))), IdBox.create(67L, ImmutableList.of(entities.get(1))))); }
@Test public void testQueryPassOneEntity() { Entity e = Entities.newBuilder(LIKE, 1) .setAttribute(CommonAttributes.USER_ID, 42L) .setAttribute(CommonAttributes.ITEM_ID, 39L) .build(); EntityCollectionDAO dao = EntityCollectionDAO.create(e); EntityQuery<Entity> query = EntityQuery.newBuilder(LIKE) .build(); List<Entity> results = ObjectStreams.makeList(dao.streamEntities(query)); assertThat(results, contains(e)); query = EntityQuery.newBuilder(LIKE) .addFilterField(CommonAttributes.USER_ID, 42L) .build(); results = ObjectStreams.makeList(dao.streamEntities(query)); assertThat(results, contains(e)); }
@Test public void testGroupOneEntity() { Entity e = Entities.newBuilder(LIKE, 1) .setAttribute(CommonAttributes.USER_ID, 42L) .setAttribute(CommonAttributes.ITEM_ID, 39L) .build(); EntityCollectionDAO dao = EntityCollectionDAO.create(e); EntityQuery<Entity> query = EntityQuery.newBuilder(LIKE) .build(); List<IdBox<List<Entity>>> results = ObjectStreams.makeList(dao.streamEntityGroups(query, CommonAttributes.USER_ID)); assertThat(results, hasSize(1)); IdBox<List<Entity>> box = results.get(0); assertThat(box.getId(), equalTo(42L)); assertThat(box.getValue(), contains(Entities.copyBuilder(e).build())); }
@Test public void testQueryRejectOneEntity() { Entity e = Entities.newBuilder(LIKE, 1) .setAttribute(CommonAttributes.USER_ID, 42L) .setAttribute(CommonAttributes.ITEM_ID, 39L) .build(); EntityCollectionDAO dao = EntityCollectionDAO.create(e); EntityQuery<Entity> query = EntityQuery.newBuilder(LIKE) .addFilterField(CommonAttributes.USER_ID, 39L) .build(); List<Entity> results = ObjectStreams.makeList(dao.streamEntities(query)); assertThat(results, hasSize(0)); }
List<Entity> results = ObjectStreams.makeList(dao.streamEntities(query)); assertThat(results, containsInAnyOrder(e1, e2)); .addFilterField(CommonAttributes.USER_ID, 42L) .build(); results = ObjectStreams.makeList(dao.streamEntities(query)); assertThat(results, containsInAnyOrder(e1, e2)); .addFilterField(CommonAttributes.ITEM_ID, 39L) .build(); results = ObjectStreams.makeList(dao.streamEntities(query)); assertThat(results, contains(e1));
@Override public List<E> get() { return ObjectStreams.makeList(stream()); }
@Test public void testQuerySortEntities() { Entity e1 = Entities.newBuilder(LIKE, 1) .setAttribute(CommonAttributes.USER_ID, 42L) .setAttribute(CommonAttributes.ITEM_ID, 39L) .build(); Entity e2 = Entities.newBuilder(LIKE, 2) .setAttribute(CommonAttributes.USER_ID, 42L) .setAttribute(CommonAttributes.ITEM_ID, 28L) .build(); EntityCollectionDAO dao = EntityCollectionDAO.create(e1, e2); EntityQuery<Entity> query = EntityQuery.newBuilder(LIKE) .addSortKey(CommonAttributes.ITEM_ID) .build(); List<Entity> results = ObjectStreams.makeList(dao.streamEntities(query)); assertThat(results, contains(e2, e1)); }
.setAttribute(CommonAttributes.RATING, 3.5) .build())); assertThat(ObjectStreams.makeList(dao.streamEntities(RATING)), contains(Entities.newBuilder(RATING, 10) .setAttribute(CommonAttributes.USER_ID, 42L) .build())); assertThat(ObjectStreams.makeList(dao.streamEntities(LIKE)), contains(Entities.newBuilder(LIKE, 1) .setAttribute(CommonAttributes.USER_ID, 42L)
@Override public void crossfold(DataSource input, CrossfoldOutput output) throws IOException { final int count = output.getCount(); logger.info("splitting data source {} to {} partitions by ratings", input.getName(), count); ArrayList<Rating> ratings = ObjectStreams.makeList(input.getEventDAO().streamEvents(Rating.class)); Collections.shuffle(ratings); final int n = ratings.size(); for (int i = 0; i < n; i++) { for (int f = 0; f < count; f++) { int foldNum = i % count; if (f == foldNum) { output.getTestWriter(f).writeRating(ratings.get(i)); } else { output.getTrainWriter(f).writeRating(ratings.get(i)); } } } } }