package com.baidu.disconf.web.test.utils; import static org.junit.Assert.assertEquals; import static org.junit.Assert.fail; import java.io.File; import java.io.IOException; import java.util.List; import org.junit.Test; import difflib.Chunk; public class FileComparatorTestCase { private final File original = new File("src/test/resources/files/originalFile.txt"); private final File revised = new File("src/test/resources/files/revisedFile.txt"); @Test public void shouldGetChangesBetweenFiles() { final FileComparator comparator = new FileComparator(original, revised); try { final List<Chunk> changesFromOriginal = comparator.getChangesFromOriginal(); for (Chunk<String> chunk : changesFromOriginal) { System.out.println(chunk.toString()); } assertEquals(3, changesFromOriginal.size()); final Chunk firstChange = changesFromOriginal.get(0); final int firstLineOfFirstChange = firstChange.getPosition() + 1; final int firstChangeSize = firstChange.size(); assertEquals(2, firstLineOfFirstChange); assertEquals(1, firstChangeSize); final String firstChangeText = firstChange.getLines().get(0).toString(); assertEquals("Line 3 with changes", firstChangeText); final Chunk secondChange = changesFromOriginal.get(1); final int firstLineOfSecondChange = secondChange.getPosition() + 1; final int secondChangeSize = secondChange.size(); assertEquals(4, firstLineOfSecondChange); assertEquals(2, secondChangeSize); final String secondChangeFirstLineText = secondChange.getLines().get(0).toString(); final String secondChangeSecondLineText = secondChange.getLines().get(1).toString(); assertEquals("Line 5 with changes and", secondChangeFirstLineText); assertEquals("a new line", secondChangeSecondLineText); final Chunk thirdChange = changesFromOriginal.get(2); final int firstLineOfThirdChange = thirdChange.getPosition() + 1; final int thirdChangeSize = thirdChange.size(); assertEquals(11, firstLineOfThirdChange); assertEquals(1, thirdChangeSize); final String thirdChangeText = thirdChange.getLines().get(0).toString(); assertEquals("Line 10 with changes", thirdChangeText); } catch (IOException ioe) { fail("Error running test shouldGetChangesBetweenFiles " + ioe.toString()); } } @Test public void shouldGetInsertsBetweenFiles() { final FileComparator comparator = new FileComparator(original, revised); try { final List<Chunk> insertsFromOriginal = comparator.getInsertsFromOriginal(); assertEquals(1, insertsFromOriginal.size()); final Chunk firstInsert = insertsFromOriginal.get(0); final int firstLineOfFirstInsert = firstInsert.getPosition() + 1; final int firstInsertSize = firstInsert.size(); assertEquals(7, firstLineOfFirstInsert); assertEquals(1, firstInsertSize); final String firstInsertText = firstInsert.getLines().get(0).toString(); assertEquals("new line 6.1", firstInsertText); } catch (IOException ioe) { fail("Error running test shouldGetInsertsBetweenFiles " + ioe.toString()); } } @Test public void shouldGetDeletesBetweenFiles() { final FileComparator comparator = new FileComparator(original, revised); try { final List<Chunk> deletesFromOriginal = comparator.getDeletesFromOriginal(); assertEquals(1, deletesFromOriginal.size()); final Chunk firstDelete = deletesFromOriginal.get(0); final int firstLineOfFirstDelete = firstDelete.getPosition() + 1; assertEquals(1, firstLineOfFirstDelete); } catch (IOException ioe) { fail("Error running test shouldGetDeletesBetweenFiles " + ioe.toString()); } } }