Created
September 2, 2011 16:35
-
-
Save cbaldin/1189096 to your computer and use it in GitHub Desktop.
Assert File
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import java.io.BufferedReader; | |
import java.io.File; | |
import java.io.FileInputStream; | |
import java.io.IOException; | |
import java.io.InputStreamReader; | |
import junitx.framework.AssertionFailedError; | |
import org.junit.Assert; | |
public class FileTestOperations { | |
static boolean fail = false; | |
public static void assertFileWithTemplate(final String file, final String template) { | |
assertFileWithTemplate(new File(file), new File(template)); | |
} | |
public static void assertFileWithTemplate(final File file, final File template) { | |
fail = false; | |
Assert.assertNotNull(template); | |
Assert.assertNotNull(file); | |
Assert.assertTrue("File does not exist [" + template.getAbsolutePath() + "]", template.exists()); | |
Assert.assertTrue("File does not exist [" + file.getAbsolutePath() + "]", file.exists()); | |
Assert.assertTrue("Template file not readable", template.canRead()); | |
Assert.assertTrue("Actual file not readable", file.canRead()); | |
FileInputStream templateStream = null; | |
FileInputStream fileStream = null; | |
try { | |
try { | |
templateStream = new FileInputStream(template); | |
fileStream = new FileInputStream(file); | |
BufferedReader fileData = new BufferedReader(new InputStreamReader(fileStream)); | |
BufferedReader templData = new BufferedReader(new InputStreamReader(templateStream)); | |
assertLines(fileData, templData); | |
} finally { | |
templateStream.close(); | |
fileStream.close(); | |
} | |
} catch (IOException e) { | |
throw new AssertionFailedError(e); | |
} | |
if (fail) { | |
Assert.fail("Generated file is not equal provided template."); | |
} | |
} | |
private static void assertLines(final BufferedReader fileData, final BufferedReader templData) throws IOException { | |
String fileLine; | |
String templateLine; | |
for (int lineNumber = 1; true; lineNumber++) { | |
fileLine = fileData.readLine(); | |
templateLine = templData.readLine(); | |
if (fileLine == null && templateLine == null) { | |
return; | |
} | |
verifyFileLengh(fileLine, templateLine, lineNumber); | |
if (!templateLine.equals(fileLine)) { | |
searchCaracterWithDiference(fileLine.toCharArray(), templateLine.toCharArray(), lineNumber); | |
} | |
} | |
} | |
private static void searchCaracterWithDiference(char[] lineChars, char[] templChars, int lineNumber) { | |
int column; | |
for (int i = 0; i < templChars.length; i++) { | |
if (lineChars[i] != templChars[i]) { | |
column = i + 1; | |
System.out.println("Difference was found at line " + lineNumber + ", near column " + column + ". \"" + String.valueOf(lineChars[i]) + "\" expected, \"" + String.valueOf(templChars[i] + "\" received.")); | |
fail = true; | |
} | |
} | |
} | |
private static void verifyFileLengh(final String fileLine, final String templateLine, final int line) { | |
Assert.assertFalse("Generated file has less lines than template.", fileLine == null && templateLine != null); | |
Assert.assertFalse("Generated file has more lines than template", fileLine != null && templateLine == null); | |
Assert.assertFalse("Line " + line + " from the generated file is larger than template.", fileLine.length() > templateLine.length()); | |
Assert.assertFalse("Line " + line + " from generated file is smaller than template.", fileLine.length() < templateLine.length()); | |
} | |
} |
Author
cbaldin
commented
Sep 2, 2011
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment