/*
* Copyright (c) 2006-2011 Rogério Liesenfeld
* This file is subject to the terms of the MIT license (see LICENSE.txt).
*/
package integrationTests.textFile;
import java.util.*;
import integrationTests.textFile.TextFile.*;
import static mockit.Mockit.*;
import static org.hamcrest.core.IsEqual.*;
import static org.junit.Assert.*;
import org.junit.*;
import mockit.*;
public final class TextFileUsingAnnotatedMockClassesTest
{
@Test
public void createTextFileUsingAnnotatedMockClass() throws Exception
{
setUpMocks(MockTextReader.class);
new TextFile("file", 0);
}
@MockClass(realClass = DefaultTextReader.class)
static class MockTextReader
{
@Mock(invocations = 1)
void $init(String fileName)
{
assertThat(fileName, equalTo("file"));
}
}
@Test
public void createTextFileByMockingTheTextReaderThroughItsClassName() throws Exception
{
setUpMock("integrationTests.textFile.TextFile$DefaultTextReader", MockTextReader.class);
new TextFile("file", 0);
}
@Test
public void parseTextFileUsingConcreteClass() throws Exception
{
setUpMocks(MockTextReader.class, new MockTextReaderForParse());
TextFile textFile = new TextFile("file", 200);
List<String[]> result = textFile.parse();
assertResultFromTextFileParsing(result);
}
@MockClass(realClass = DefaultTextReader.class)
public static class MockTextReaderForParse
{
private static final String[] LINES = { "line1", "another,line", null};
int invocation;
@Mock(invocations = 1)
public long skip(long n)
{
assertEquals(200, n);
return n;
}
@Mock(invocations = 3)
public String readLine() { return LINES[invocation++]; }
@Mock(invocations = 1)
public void close() {}
}
private void assertResultFromTextFileParsing(List<String[]> result)
{
assertEquals(2, result.size());
String[] line1 = result.get(0);
assertEquals(1, line1.length);
assertEquals("line1", line1[0]);
String[] line2 = result.get(1);
assertEquals(2, line2.length);
assertEquals("another", line2[0]);
assertEquals("line", line2[1]);
}
@Test
public void parseTextFileUsingInterface() throws Exception
{
TextReader textReader = newEmptyProxy(TextReader.class);
setUpMock(textReader.getClass(), new MockTextReaderForParse());
TextFile textFile = new TextFile(textReader, 200);
List<String[]> result = textFile.parse();
assertResultFromTextFileParsing(result);
}
}