/*
* 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.io.*;
import java.util.*;
import org.junit.*;
import mockit.*;
import integrationTests.textFile.TextFile.*;
import static org.junit.Assert.*;
public final class TextFileUsingVerificationsTest
{
@Test
public void createTextFile(DefaultTextReader reader) throws Exception
{
assertNotNull(reader);
new TextFile("file", 0);
new Verifications()
{
{
new DefaultTextReader("file");
}
};
}
@Test
public void createTextFileByCapturingTheTextReaderClassThroughItsBaseType(
@Capturing TextReader reader) throws Exception
{
new TextFile("file", 0);
}
@Test
public void createTextFileByMockingTheTextReaderClassThroughItsName(
@Mocked(realClassName = "integrationTests.textFile.TextFile$DefaultTextReader") Object reader)
throws Exception
{
new TextFile("file", 0);
}
@Test
public void createTextFileWhileVerifyingTheCreatedTextReaderIsClosed(
@Mocked(realClassName = "integrationTests.textFile.TextFile$DefaultTextReader")
final TextReader reader) throws Exception
{
new TextFile("file", 0).closeReader();
new Verifications()
{
{
reader.close();
}
};
}
@Test
public void createTextFileVerifyingInvocationsThroughReflection(
@Mocked(realClassName = "integrationTests.textFile.TextFile$DefaultTextReader")
final Object reader)
throws Exception
{
new TextFile("file", 0).closeReader();
new FullVerificationsInOrder()
{
{
newInstance("integrationTests.textFile.TextFile$DefaultTextReader", "file");
invoke(reader, "close");
}
};
}
@Test
public void parseTextFileUsingConcreteClass(final DefaultTextReader reader) throws Exception
{
new NonStrictExpectations()
{
{
reader.readLine(); returns("line1", "another,line", null);
}
};
TextFile textFile = new TextFile("file", 200);
List<String[]> result = textFile.parse();
assertResultFromTextFileParsing(result);
new Verifications()
{
{
reader.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(@NonStrict final TextReader reader) throws Exception
{
new Expectations()
{
{
reader.readLine(); returns("line1", "another,line", null);
}
};
TextFile textFile = new TextFile(reader, 100);
List<String[]> result = textFile.parse();
assertResultFromTextFileParsing(result);
new VerificationsInOrder()
{
{
reader.skip(100);
reader.close();
}
};
}
@Test
public void parseTextFileUsingBufferedReader(final BufferedReader reader) throws Exception
{
new NonStrictExpectations()
{
@Mocked("(InputStream)") final InputStreamReader inputStreamReader = null;
@Mocked("(String)") final FileReader fileReader = null;
{
reader.readLine(); returns("line1", "another,line", null);
}
};
TextFile textFile = new TextFile("file");
List<String[]> result = textFile.parse();
assertResultFromTextFileParsing(result);
new Verifications()
{
{
reader.close();
}
};
}
}