// Copyright 2004-2014 Jim Voris // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // package com.qumasoft.qvcslib; import java.io.File; import java.util.Properties; import org.junit.After; import org.junit.AfterClass; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; /** * Compare files with apache diff test. * @author Jim Voris */ public class CompareFilesWithApacheDiffTest { private String baseCompareTestFilesDirectory; public CompareFilesWithApacheDiffTest() { } @BeforeClass public static void setUpClass() throws Exception { } @AfterClass public static void tearDownClass() throws Exception { } @Before public void setUp() { Properties systemProperties = System.getProperties(); baseCompareTestFilesDirectory = systemProperties.getProperty("user.dir") + File.separator; } @After public void tearDown() { } @Test public void testCompareFiles1() { System.out.println("testCompareFiles1"); try { compareFiles("CompareTest1a.txt", "CompareTest1b.txt"); } catch (QVCSException e) { System.err.println(Utility.expandStackTraceToString(e)); fail("testCompareTest1 failed with an exception: " + e.getMessage()); } } @Test public void testCompareFiles2() { System.out.println("testCompareFiles2"); try { compareFiles("CompareTest2a.txt", "CompareTest2b.txt"); } catch (QVCSException e) { System.err.println(Utility.expandStackTraceToString(e)); fail("testCompareTest2 failed with an exception: " + e.getMessage()); } } @Test public void testCompareFiles3() { System.out.println("testCompareFiles3"); try { compareFiles("CompareTest3a.txt", "CompareTest3b.txt"); } catch (QVCSException e) { System.err.println(Utility.expandStackTraceToString(e)); fail("testCompareTest3 failed with an exception: " + e.getMessage()); } } @Test public void testCompareFiles4() { System.out.println("testCompareFiles4"); File tempFileForCompareResults; String[] args = null; try { CompareFilesWithApacheDiff compareFilesWithApacheDiff = compareFilesSetup("CompareTest4a.txt", "CompareTest4b.txt"); args = compareFilesWithApacheDiff.getArgs(); boolean result = compareFilesWithApacheDiff.execute(); assertTrue(result); assertTrue(compareFilesWithApacheDiff.isEqual()); } catch (QVCSException e) { System.err.println(Utility.expandStackTraceToString(e)); fail("testCompareTest4 failed with an exception: " + e.getMessage()); } finally { if (args != null && (args[2] != null)) { String tempFileName = args[2]; tempFileForCompareResults = new File(tempFileName); tempFileForCompareResults.delete(); } } try { CompareFilesWithApacheDiff compareFilesWithApacheDiff = compareFilesSetup("CompareTest4b.txt", "CompareTest4a.txt"); args = compareFilesWithApacheDiff.getArgs(); boolean result = compareFilesWithApacheDiff.execute(); assertTrue(result); assertTrue(compareFilesWithApacheDiff.isEqual()); } catch (QVCSException e) { System.err.println(Utility.expandStackTraceToString(e)); fail("testCompareTest4 failed with an exception: " + e.getMessage()); } finally { if (args != null && (args[2] != null)) { String tempFileName = args[2]; tempFileForCompareResults = new File(tempFileName); tempFileForCompareResults.delete(); } } } @Test public void testCompareFiles5IgnoreWhiteSpace() { System.out.println("testCompareFiles5IgnoreWhiteSpace"); File tempFileForCompareResults; String[] args = null; try { CompareFilesWithApacheDiff compareFilesWithApacheDiff = compareFilesSetup("CompareTest5a.txt", "CompareTest5b.txt"); compareFilesWithApacheDiff.setIgnoreAllWhiteSpace(true); args = compareFilesWithApacheDiff.getArgs(); boolean result = compareFilesWithApacheDiff.execute(); assertTrue(result); assertTrue(compareFilesWithApacheDiff.isEqual()); } catch (QVCSException e) { System.err.println(Utility.expandStackTraceToString(e)); fail("testCompareFiles5IgnoreWhiteSpace failed with an exception: " + e.getMessage()); } finally { if (args != null && (args[2] != null)) { String tempFileName = args[2]; tempFileForCompareResults = new File(tempFileName); tempFileForCompareResults.delete(); } } try { CompareFilesWithApacheDiff compareFilesWithApacheDiff = compareFilesSetup("CompareTest5b.txt", "CompareTest5a.txt"); compareFilesWithApacheDiff.setIgnoreAllWhiteSpace(true); args = compareFilesWithApacheDiff.getArgs(); boolean result = compareFilesWithApacheDiff.execute(); assertTrue(result); assertTrue(compareFilesWithApacheDiff.isEqual()); } catch (QVCSException e) { System.err.println(Utility.expandStackTraceToString(e)); fail("testCompareFiles5IgnoreWhiteSpace failed with an exception: " + e.getMessage()); } finally { if (args != null && (args[2] != null)) { String tempFileName = args[2]; tempFileForCompareResults = new File(tempFileName); tempFileForCompareResults.delete(); } } } @Test public void testCompareFiles6IgnoreEOLChanges() { System.out.println("testCompareFiles6IgnoreEOLChanges"); File tempFileForCompareResults; String[] args = null; try { CompareFilesWithApacheDiff compareFilesWithApacheDiff = compareFilesSetup("CompareTest6a.txt", "CompareTest6b.txt"); compareFilesWithApacheDiff.setIgnoreEOLChangesFlag(true); args = compareFilesWithApacheDiff.getArgs(); boolean result = compareFilesWithApacheDiff.execute(); assertTrue(result); assertTrue(compareFilesWithApacheDiff.isEqual()); } catch (QVCSException e) { System.err.println(Utility.expandStackTraceToString(e)); fail("testCompareFiles6IgnoreEOLChanges failed with an exception: " + e.getMessage()); } finally { if (args != null && (args[2] != null)) { String tempFileName = args[2]; tempFileForCompareResults = new File(tempFileName); tempFileForCompareResults.delete(); } } try { CompareFilesWithApacheDiff compareFilesWithApacheDiff = compareFilesSetup("CompareTest6b.txt", "CompareTest6a.txt"); compareFilesWithApacheDiff.setIgnoreEOLChangesFlag(true); args = compareFilesWithApacheDiff.getArgs(); boolean result = compareFilesWithApacheDiff.execute(); assertTrue(result); assertTrue(compareFilesWithApacheDiff.isEqual()); } catch (QVCSException e) { System.err.println(Utility.expandStackTraceToString(e)); fail("testCompareFiles6IgnoreEOLChanges failed with an exception: " + e.getMessage()); } finally { if (args != null && (args[2] != null)) { String tempFileName = args[2]; tempFileForCompareResults = new File(tempFileName); tempFileForCompareResults.delete(); } } } @Test public void testCompareFiles7IgnoreLeadingWhiteSpaceChanges() { System.out.println("testCompareFiles7IgnoreLeadingWhiteSpaceChanges"); File tempFileForCompareResults; String[] args = null; try { CompareFilesWithApacheDiff compareFilesWithApacheDiff = compareFilesSetup("CompareTest7a.txt", "CompareTest7b.txt"); compareFilesWithApacheDiff.setIgnoreLeadingWhiteSpace(true); args = compareFilesWithApacheDiff.getArgs(); boolean result = compareFilesWithApacheDiff.execute(); assertTrue(result); assertTrue(compareFilesWithApacheDiff.isEqual()); } catch (QVCSException e) { System.err.println(Utility.expandStackTraceToString(e)); fail("testCompareFiles7IgnoreLeadingWhiteSpaceChanges failed with an exception: " + e.getMessage()); } finally { if (args != null && (args[2] != null)) { String tempFileName = args[2]; tempFileForCompareResults = new File(tempFileName); tempFileForCompareResults.delete(); } } try { CompareFilesWithApacheDiff compareFilesWithApacheDiff = compareFilesSetup("CompareTest7b.txt", "CompareTest7a.txt"); compareFilesWithApacheDiff.setIgnoreLeadingWhiteSpace(true); args = compareFilesWithApacheDiff.getArgs(); boolean result = compareFilesWithApacheDiff.execute(); assertTrue(result); assertTrue(compareFilesWithApacheDiff.isEqual()); } catch (QVCSException e) { System.err.println(Utility.expandStackTraceToString(e)); fail("testCompareFiles7IgnoreLeadingWhiteSpaceChanges failed with an exception: " + e.getMessage()); } finally { if (args != null && (args[2] != null)) { String tempFileName = args[2]; tempFileForCompareResults = new File(tempFileName); tempFileForCompareResults.delete(); } } } @Test public void testCompareFiles8IgnoreCase() { System.out.println("testCompareFiles8IgnoreCase"); File tempFileForCompareResults; String[] args = null; try { CompareFilesWithApacheDiff compareFilesWithApacheDiff = compareFilesSetup("CompareTest8a.txt", "CompareTest8b.txt"); compareFilesWithApacheDiff.setIgnoreCaseFlag(true); args = compareFilesWithApacheDiff.getArgs(); boolean result = compareFilesWithApacheDiff.execute(); assertTrue(result); assertTrue(compareFilesWithApacheDiff.isEqual()); } catch (QVCSException e) { System.err.println(Utility.expandStackTraceToString(e)); fail("testCompareFiles8IgnoreCase failed with an exception: " + e.getMessage()); } finally { if (args != null && (args[2] != null)) { String tempFileName = args[2]; tempFileForCompareResults = new File(tempFileName); tempFileForCompareResults.delete(); } } try { CompareFilesWithApacheDiff compareFilesWithApacheDiff = compareFilesSetup("CompareTest8b.txt", "CompareTest8a.txt"); compareFilesWithApacheDiff.setIgnoreCaseFlag(true); args = compareFilesWithApacheDiff.getArgs(); boolean result = compareFilesWithApacheDiff.execute(); assertTrue(result); assertTrue(compareFilesWithApacheDiff.isEqual()); } catch (QVCSException e) { System.err.println(Utility.expandStackTraceToString(e)); fail("testCompareFiles8IgnoreCase failed with an exception: " + e.getMessage()); } finally { if (args != null && (args[2] != null)) { String tempFileName = args[2]; tempFileForCompareResults = new File(tempFileName); tempFileForCompareResults.delete(); } } } @Test public void testCompareFiles9() { System.out.println("testCompareFiles9"); File tempFileForCompareResults; String[] args = null; try { CompareFilesWithApacheDiff compareFilesWithApacheDiff = compareFilesSetup("CompareTest9a.txt", "CompareTest9b.txt"); compareFilesWithApacheDiff.setIgnoreCaseFlag(true); args = compareFilesWithApacheDiff.getArgs(); boolean result = compareFilesWithApacheDiff.execute(); assertTrue(result); assertTrue(!compareFilesWithApacheDiff.isEqual()); } catch (QVCSException e) { System.err.println(Utility.expandStackTraceToString(e)); fail("testCompareFiles9 failed with an exception: " + e.getMessage()); } finally { if (args != null && (args[2] != null)) { String tempFileName = args[2]; tempFileForCompareResults = new File(tempFileName); tempFileForCompareResults.delete(); } } try { CompareFilesWithApacheDiff compareFilesWithApacheDiff = compareFilesSetup("CompareTest9b.txt", "CompareTest9a.txt"); compareFilesWithApacheDiff.setIgnoreCaseFlag(true); args = compareFilesWithApacheDiff.getArgs(); boolean result = compareFilesWithApacheDiff.execute(); assertTrue(result); assertTrue(!compareFilesWithApacheDiff.isEqual()); } catch (QVCSException e) { System.err.println(Utility.expandStackTraceToString(e)); fail("testCompareFiles9 failed with an exception: " + e.getMessage()); } finally { if (args != null && (args[2] != null)) { String tempFileName = args[2]; tempFileForCompareResults = new File(tempFileName); tempFileForCompareResults.delete(); } } } @Test public void testCompareFiles10() { System.out.println("testCompareFiles10"); File tempFileForCompareResults; String[] args = null; try { CompareFilesWithApacheDiff compareFilesWithApacheDiff = compareFilesSetup("CompareTest10a.txt", "CompareTest10b.txt"); compareFilesWithApacheDiff.setIgnoreCaseFlag(true); args = compareFilesWithApacheDiff.getArgs(); boolean result = compareFilesWithApacheDiff.execute(); assertTrue(result); assertTrue(!compareFilesWithApacheDiff.isEqual()); } catch (QVCSException e) { System.err.println(Utility.expandStackTraceToString(e)); fail("testCompareFiles10 failed with an exception: " + e.getMessage()); } finally { if (args != null && (args[2] != null)) { String tempFileName = args[2]; tempFileForCompareResults = new File(tempFileName); tempFileForCompareResults.delete(); } } try { CompareFilesWithApacheDiff compareFilesWithApacheDiff = compareFilesSetup("CompareTest10b.txt", "CompareTest10a.txt"); compareFilesWithApacheDiff.setIgnoreCaseFlag(true); args = compareFilesWithApacheDiff.getArgs(); boolean result = compareFilesWithApacheDiff.execute(); assertTrue(result); assertTrue(!compareFilesWithApacheDiff.isEqual()); } catch (QVCSException e) { System.err.println(Utility.expandStackTraceToString(e)); fail("testCompareFiles10 failed with an exception: " + e.getMessage()); } finally { if (args != null && (args[2] != null)) { String tempFileName = args[2]; tempFileForCompareResults = new File(tempFileName); tempFileForCompareResults.delete(); } } } @Test public void testCompareFiles11() { System.out.println("testCompareFiles11"); File tempFileForCompareResults; String[] args = null; try { CompareFilesWithApacheDiff compareFilesWithApacheDiff = compareFilesSetup("DoesNotExista.txt", "DoesNotExistb.txt"); compareFilesWithApacheDiff.setIgnoreCaseFlag(true); args = compareFilesWithApacheDiff.getArgs(); boolean result = compareFilesWithApacheDiff.execute(); assertTrue(!result); } catch (QVCSException e) { System.err.println(Utility.expandStackTraceToString(e)); fail("testCompareFiles11 failed with an exception: " + e.getMessage()); } finally { if (args != null && (args[2] != null)) { String tempFileName = args[2]; tempFileForCompareResults = new File(tempFileName); tempFileForCompareResults.delete(); } } } @Test public void testCompareFiles12() { System.out.println("testCompareFiles12"); File tempFileForCompareResults; String[] args = null; try { CompareFilesWithApacheDiff compareFilesWithApacheDiff = compareFilesSetup("CompareTest12a.txt", "CompareTest12b.txt"); compareFilesWithApacheDiff.setIgnoreCaseFlag(true); args = compareFilesWithApacheDiff.getArgs(); boolean result = compareFilesWithApacheDiff.execute(); assertTrue(result); assertTrue(!compareFilesWithApacheDiff.isEqual()); } catch (QVCSException e) { System.err.println(Utility.expandStackTraceToString(e)); fail("testCompareFiles12 failed with an exception: " + e.getMessage()); } finally { if (args != null && (args[2] != null)) { String tempFileName = args[2]; tempFileForCompareResults = new File(tempFileName); tempFileForCompareResults.delete(); } } try { CompareFilesWithApacheDiff compareFilesWithApacheDiff = compareFilesSetup("CompareTest12b.txt", "CompareTest12a.txt"); compareFilesWithApacheDiff.setIgnoreCaseFlag(true); args = compareFilesWithApacheDiff.getArgs(); boolean result = compareFilesWithApacheDiff.execute(); assertTrue(result); assertTrue(!compareFilesWithApacheDiff.isEqual()); } catch (QVCSException e) { System.err.println(Utility.expandStackTraceToString(e)); fail("testCompareFiles12 failed with an exception: " + e.getMessage()); } finally { if (args != null && (args[2] != null)) { String tempFileName = args[2]; tempFileForCompareResults = new File(tempFileName); tempFileForCompareResults.delete(); } } } private void compareFiles(String file1Name, String file2Name) throws QVCSException { String fullFile1Name; String fullFile2Name; File tempFileForCompareResults = null; try { tempFileForCompareResults = File.createTempFile("QVCS", ".tmp"); fullFile1Name = baseCompareTestFilesDirectory + file1Name; fullFile2Name = baseCompareTestFilesDirectory + file2Name; } catch (java.io.IOException e) { System.err.println(Utility.expandStackTraceToString(e)); throw new QVCSException("Failed to create QVCS temp file: " + e.getMessage()); } String tempFileNameForCompareResults = tempFileForCompareResults.getAbsolutePath(); String[] args = new String[3]; args[0] = fullFile1Name; args[1] = fullFile2Name; args[2] = tempFileNameForCompareResults; try { CompareFilesWithApacheDiff compareFilesWithApacheDiff = new CompareFilesWithApacheDiff(args); if (!compareFilesWithApacheDiff.execute(args)) { throw new QVCSException("Failed to compare '" + file1Name + "' to '" + file2Name + "'"); } } catch (QVCSException e) { System.err.println(Utility.expandStackTraceToString(e)); throw new QVCSException(e.getMessage()); } finally { tempFileForCompareResults.delete(); } } private CompareFilesWithApacheDiff compareFilesSetup(String file1Name, String file2Name) throws QVCSException { String fullFile1Name; String fullFile2Name; File tempFileForCompareResults = null; try { tempFileForCompareResults = File.createTempFile("QVCS", ".tmp"); fullFile1Name = baseCompareTestFilesDirectory + file1Name; fullFile2Name = baseCompareTestFilesDirectory + file2Name; } catch (java.io.IOException e) { System.err.println(Utility.expandStackTraceToString(e)); throw new QVCSException("Failed to create QVCS temp file: " + e.getMessage()); } String tempFileNameForCompareResults = tempFileForCompareResults.getAbsolutePath(); String[] args = new String[3]; args[0] = fullFile1Name; args[1] = fullFile2Name; args[2] = tempFileNameForCompareResults; return new CompareFilesWithApacheDiff(args); } }