/** * Copyright 2010 Molindo GmbH * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package at.molindo.esi4j.rebuild.scrutineer; import static org.junit.Assert.*; import java.util.List; import org.junit.Test; import at.molindo.esi4j.rebuild.Esi4JRebuildSession; import at.molindo.esi4j.rebuild.scrutineer.ModuleIdAndVersionStream.ModuleIdAndVersionStreamIterator; import at.molindo.esi4j.test.module.Esi4JDummyModule; import at.molindo.esi4j.test.util.Tweet; import at.molindo.esi4j.test.util.TweetTypeMapping; public class ModuleIdAndVersionStreamTest { @Test public void testIterator() { final TweetTypeMapping mapping = new TweetTypeMapping("tweet"); final Tweet t1 = new Tweet(1, 1, "dummy", "Tweet #1"); final Tweet t2 = new Tweet(2, 1, "dummy", "Tweet #2"); final Tweet t3 = new Tweet(3, 1, "dummy", "Tweet #3"); final Tweet t4 = new Tweet(4, 1, "dummy", "Tweet #4"); final Tweet t5 = new Tweet(5, 1, "dummy", "Tweet #5"); final int[] fetched = new int[1]; final int[] processed = new int[1]; final Esi4JDummyModule module = new Esi4JDummyModule() { @Override public Esi4JRebuildSession startRebuildSession(final Class<?> type) { final Esi4JRebuildSession session = super.startRebuildSession(type); return new Esi4JRebuildSession() { @Override public Class<?> getType() { return session.getType(); } @Override public boolean isOrdered() { return session.isOrdered(); } @Override public List<?> getNext(final int batchSize) { /* * all must have been processed before fetching new as underlying session might clear previous * state */ assertEquals(fetched[0], processed[0]); final List<?> list = session.getNext(batchSize); fetched[0] += list.size(); return list; } private void assertEquals(final int i, final int j) { // TODO Auto-generated method stub } @Override public Object getMetadata() { return null; } @Override public void close() { assertEquals(fetched[0], processed[0]); session.close(); } }; } }.setData(Tweet.class, t1, t2, t3, t4, t5); final ModuleIdAndVersionStream stream = new ModuleIdAndVersionStream(module .startRebuildSession(Tweet.class), 2, mapping); stream.open(); final ModuleIdAndVersionStreamIterator iter = (ModuleIdAndVersionStreamIterator) stream.iterator(); while (iter.hasNext()) { final ObjectIdAndVersion next = (ObjectIdAndVersion) iter.next(); assertNotNull(next); processed[0]++; } assertEquals(5, fetched[0]); assertEquals(5, processed[0]); stream.close(); } }