package nl.hsac.fitnesse.fixture.slim;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
public class CompareFixtureTest {
private final CompareFixture fixture = new CompareFixture();
@Test
public void testShowDiff() {
assertEquals("Same string", "<div>Hello</div>", fixture.differenceBetweenAnd("Hello", "Hello"));
assertEquals("Different string 2nd longer",
"<div><span>Hello</span><ins class=\"collapse_rim\"> sir</ins></div>",
fixture.differenceBetweenAnd("Hello", "Hello sir"));
assertEquals("Different string 2nd shorter",
"<div><span>Hello</span><del class=\"collapse_rim\"> sir</del></div>",
fixture.differenceBetweenAnd("Hello sir", "Hello"));
assertEquals("Different string insert",
"<div><span>Hello </span><ins class=\"collapse_rim\">dear </ins><span>sir</span></div>",
fixture.differenceBetweenAnd("Hello sir", "Hello dear sir"));
assertEquals("Different string delete",
"<div><span>Hello </span><del class=\"collapse_rim\">dear </del><span>sir</span></div>",
fixture.differenceBetweenAnd("Hello dear sir", "Hello sir"));
assertEquals("Different string replace",
"<div><span>Hello </span><del class=\"collapse_rim\">dear</del><ins class=\"collapse_rim\">stupid</ins><span> sir</span></div>",
fixture.differenceBetweenAnd("Hello dear sir", "Hello stupid sir"));
assertEquals("Different string extra spaces",
"<div><span>Hello </span><ins class=\"collapse_rim\"> </ins><span>sir</span></div>",
fixture.differenceBetweenAnd("Hello sir", "Hello sir"));
assertEquals("Different string extra spaces",
"<div><span>Hello </span><ins class=\"collapse_rim\"> </ins><span>sir </span></div>",
fixture.differenceBetweenAnd("Hello sir ", "Hello sir "));
}
@Test
public void testShowDiffWithNull() {
assertEquals("Both null", null, fixture.differenceBetweenAnd(null, null));
assertEquals("One null", "<div><ins class=\"collapse_rim\">Hello</ins></div>", fixture.differenceBetweenAnd(null, "Hello"));
assertEquals("Two null", "<div><del class=\"collapse_rim\">Bye</del></div>", fixture.differenceBetweenAnd("Bye", null));
}
@Test
public void testShowDiffWithHtmlChars() {
assertEquals("Same string", "<div>1 < 3</div>", fixture.differenceBetweenAnd("1 < 3", "1 < 3"));
assertEquals("Different strings",
"<div><span>Hello </span><del class=\"collapse_rim\">></del><ins class=\"collapse_rim\"><</ins></div>",
fixture.differenceBetweenAnd("Hello >", "Hello <"));
}
@Test
public void testShowDiffWithNewline() {
assertEquals("Same string", "<div>1 \n 3</div>", fixture.differenceBetweenAnd("1 \n 3", "1 \n 3"));
assertEquals("Different strings",
"<div><span>Hello \n</span><ins class=\"collapse_rim\"> <br/></ins><span>sir</span><ins class=\"collapse_rim\">\t</ins><span>\nBye\r\nSee You tomorrow</span></div>",
fixture.differenceBetweenAnd("Hello \nsir\nBye\r\nSee You tomorrow", "Hello \n\nsir\t\nBye\r\nSee You tomorrow"));
}
@Test
public void testShowDiffWithExplicitWhitespace() {
assertEquals("Same string", "<div>1 \n 3</div>", fixture.differenceBetweenExplicitWhitespaceAnd("1 \n 3", "1 \n 3"));
assertEquals("Different strings",
"<div><span>Hello \n" +
"</span><ins class=\"collapse_rim\">¶<br/></ins><span>sir</span><ins class=\"collapse_rim\">→</ins><span>\n" +
"Bye</span><del class=\"collapse_rim\">↵</del><span>\n" +
"See</span><del class=\"collapse_rim\">•</del><ins class=\"collapse_rim\">·</ins><span>You tomorrow</span></div>",
fixture.differenceBetweenExplicitWhitespaceAnd("Hello \nsir\nBye\r\nSee\u00A0You tomorrow", "Hello \n\nsir\t\nBye\nSee You tomorrow"));
}
@Test
public void testShowDiffIgnoreWhitespace() {
assertEquals("Same string", "<div>1 \n 3</div>", fixture.differenceBetweenIgnoreWhitespaceAnd("1 \n 3", "1 \n 3"));
assertEquals("Same string with ", "<div>1 \n 3</div>", fixture.differenceBetweenIgnoreWhitespaceAnd("1 \n 3", "1 \u00A0 \n\u00A0 3"));
assertEquals("Different strings only different in whitespace",
"<div>Hello \n" +
"sir\n" +
"Bye\r\n" +
"See You tomorrow</div>",
fixture.differenceBetweenIgnoreWhitespaceAnd("Hello \nsir\nBye\r\nSee You tomorrow", "Hello \n\nsir\t\nBye\r\nSee You tomorrow"));
assertEquals("Different string 2nd shorter",
"<div><span>Hello</span><del class=\"collapse_rim\"> sir</del></div>",
fixture.differenceBetweenIgnoreWhitespaceAnd("Hello sir", "Hello"));
assertEquals("Both null", null, fixture.differenceBetweenIgnoreWhitespaceAnd(null, null));
assertEquals("One null", "<div><ins class=\"collapse_rim\">Hello</ins></div>", fixture.differenceBetweenIgnoreWhitespaceAnd(null, "Hello"));
}
@Test
public void testShowDifferencesPreformat() {
assertEquals("Same string", "<pre>Hello dear madam Bye</pre>", fixture.differenceBetweenIgnoreWhitespaceAnd("<pre>Hello dear madam Bye</pre>", "<pre>Hello dear madam Bye</pre>"));
assertEquals("Different string", "<pre><span>Hello dear madam </span><del class=\"collapse_rim\"><p>Bye</p></del><ins class=\"collapse_rim\">Bye</ins></pre>",
fixture.differenceBetweenIgnoreWhitespaceAnd("<pre>Hello dear madam <p>Bye</p></pre>", "<pre>Hello dear madam Bye</pre>"));
}
}