// Copyright 2014 Thomas Müller // This file is part of MarMoT, which is licensed under GPLv3. package marmot.test.tokenizer.preprocess; import static org.junit.Assert.*; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import marmot.tokenize.preprocess.Pair; import marmot.tokenize.preprocess.InternalReader; import marmot.tokenize.preprocess.WikiReader; import org.junit.Test; public class WikiReaderTest { class FakeReader implements InternalReader { int current_pos_; int current_mark_; List<String> content_; FakeReader() { content_ = new ArrayList<String>(); } @Override public void mark() { current_mark_ = current_pos_; } @Override public void reset() { current_pos_ = current_mark_; } @Override public String readLine() { if (current_pos_ >= content_.size()) { return null; } String line = content_.get(current_pos_); current_pos_++; return line; } public void add(String line) { content_.add(line); } public void fullReset() { current_pos_ = 0; current_mark_ = 0; } } @Test public void simpleTest() { FakeReader a = new FakeReader(); a.add("abc"); FakeReader b = new FakeReader(); b.add("ab"); b.add("c"); List<Pair> expected = Arrays.asList(new Pair("abc", "abc")); bothWayTest(a, b, expected); } @Test public void test() { FakeReader a = new FakeReader(); a.add("a"); a.add(""); a.add("bcd"); FakeReader b = new FakeReader(); b.add("abc"); a.add(""); a.add(""); b.add("d"); a.add(""); List<Pair> expected = Arrays.asList(new Pair("abcd", "abcd")); bothWayTest(a, b, expected); } private void bothWayTest(FakeReader a, FakeReader b, List<Pair> expected) { WikiReader reader = new WikiReader(a, b, true); List<Pair> actual = reader.readAll(); // for (Pair p : actual) // System.err.println(p); assertEquals(expected, actual); a.fullReset(); b.fullReset(); reader = new WikiReader(b, a, true); actual = reader.readAll(); assertEquals(expected, actual); } }