Package fitnesse.responders.testHistory

Source Code of fitnesse.responders.testHistory.TableListComparerTest

package fitnesse.responders.testHistory;

import fitnesse.testsystems.slim.HtmlTableScanner;
import fitnesse.testsystems.slim.Table;
import org.junit.Before;
import org.junit.Test;

import static org.junit.Assert.*;

public class TableListComparerTest {
  private TableListComparer comparer;

  @Before
  public void setUp() {
    HtmlTableScanner leftHandScanner = new HtmlTableScanner("<table>empty</table>");
    HtmlTableScanner rightHandScanner = new HtmlTableScanner("<table>empty</table>");
    comparer = new TableListComparer(leftHandScanner,rightHandScanner);
  }


  @Test
  public void shouldOnlyUseTheBestMatchForTheFirstTable() throws Exception {
    comparer.saveMatch(1, 1, 1.0);
    comparer.saveMatch(1,2,1.1);
    comparer.sortMatchesByScore();
    comparer.saveOnlyTheBestMatches();
    assertEquals(1.1, comparer.tableMatches.get(0).matchScore, .01);
  }

  @Test
  public void shouldOnlyReplaceAMatchIfThereIsNoBetterMatchForEitherTable() throws Exception {
    comparer.saveMatch(1, 1, 1.0);
    comparer.saveMatch(3, 2, 1.2);
    comparer.saveMatch(1,2,1.1);
    comparer.sortMatchesByScore();
    comparer.saveOnlyTheBestMatches();
    assertEquals(1.2, comparer.tableMatches.get(0).matchScore, .001);
    assertEquals(1.0, comparer.tableMatches.get(1).matchScore, .001);
    assertEquals(2, comparer.tableMatches.size());
  }

  @Test
  public void shouldRemoveOldMatchesIfBetterOnesAreFound() throws Exception {
    comparer.tableMatches.add(new HistoryComparer.MatchedPair(1, 1, 1.0));
    comparer.tableMatches.add(new HistoryComparer.MatchedPair(3, 2, 1.0));
    comparer.saveMatch(1,2,1.1);
    comparer.sortMatchesByScore();
    comparer.saveOnlyTheBestMatches();
    assertEquals(1.1, comparer.tableMatches.get(0).matchScore, .001);
    assertEquals(1, comparer.tableMatches.size());
  }

  @Test
  public void shouldReplaceOldMatchForSecondTableEvenIfThereIsNoMatchForFirstTable() throws Exception {
    comparer.tableMatches.add(new HistoryComparer.MatchedPair(3, 2, 1.0));
    comparer.saveMatch(1,2,1.1);
    comparer.sortMatchesByScore();
    comparer.saveOnlyTheBestMatches();
    assertEquals(1.1, comparer.tableMatches.get(0).matchScore, .001);
    assertEquals(1, comparer.tableMatches.size());
  }

    @Test
  public void shouldGetAScoreBackFromCompareTables() throws Exception {
    String table1text = "<table><tr><td>x</td></tr></table>";
    Table table1 = (new HtmlTableScanner(table1text)).getTable(0);
    String table2text = "<table><tr><td>x</td></tr></table>";
    Table table2 = (new HtmlTableScanner(table2text)).getTable(0);
    double score = comparer.compareTables(table1,table2);
    assertEquals(HistoryComparer.MAX_MATCH_SCORE,score, .01);
  }

  @Test
  public void shouldCompareTwoSimpleEqualTables() throws Exception {
    String table1text = "<table><tr><td>x</td></tr></table>";
    Table table1 = (new HtmlTableScanner(table1text)).getTable(0);
    String table2text = "<table><tr><td>x</td></tr></table>";
    Table table2 = (new HtmlTableScanner(table2text)).getTable(0);
    assertTrue(comparer.theTablesMatch(comparer.compareTables(table1, table2)));
  }

  @Test
  public void shouldCompareTwoSimpleUnequalTables() throws Exception {
    String table1text = "<table><tr><td>x</td></tr></table>";
    Table table1 = (new HtmlTableScanner(table1text)).getTable(0);
    String table2text = "<table><tr><td>y</td></tr></table>";
    Table table2 = (new HtmlTableScanner(table2text)).getTable(0);
    assertFalse(comparer.theTablesMatch(comparer.compareTables(table1, table2)));
  }

  @Test
  public void shouldCompareTwoDifferentlySizedTables() throws Exception {
    String table1text = "<table><tr><td>x</td></tr></table>";
    Table table1 = (new HtmlTableScanner(table1text)).getTable(0);
    String table2text = "<table><tr><td>x</td><td>y</td></tr></table>";
    Table table2 = (new HtmlTableScanner(table2text)).getTable(0);
    assertFalse(comparer.theTablesMatch(comparer.compareTables(table1, table2)));
  }

  @Test
  public void shouldIgnoreCollapsedTables() throws Exception {
    String table1text = "<table><tr><td>has collapsed table</td></tr><tr class=\"scenario-detail\"><td><table><tr><td>bleh1</td></tr></table></td></tr></table>";
    String table2text = "<table><tr><td>has collapsed table</td></tr><tr class=\"scenario-detail\"><td><table><tr><td>HAHA</td></tr></table></td></tr></table>";
    Table table1 = (new HtmlTableScanner(table1text)).getTable(0);
    Table table2 = (new HtmlTableScanner(table2text)).getTable(0);
    double score = comparer.compareTables(table1, table2);
    assertEquals(HistoryComparer.MAX_MATCH_SCORE, score, .01 );
    assertTrue(comparer.theTablesMatch(score));
  }

  @Test
   public void shouldCheckTheMatchScoreToSeeIfTablesMatch() throws Exception {
     double score = 1.0;
     assertTrue(comparer.theTablesMatch(score));
     score = .79;
     assertFalse(comparer.theTablesMatch(score));
     score = 1.1;
     assertTrue(comparer.theTablesMatch(score));
   }

  @Test
  public void shouldKeepTheBestScoreForATableEvenIfItIsHasABetterMatchItCantKeep() throws Exception {
    comparer.tableMatches.add(new HistoryComparer.MatchedPair(6, 6, 1.0));
    comparer.saveMatch(6,7,1.1);
    comparer.saveMatch(7,7,1.2);
    comparer.sortMatchesByScore();
    comparer.saveOnlyTheBestMatches();
    assertEquals(1.2, comparer.tableMatches.get(0).matchScore, .001);
    assertEquals(1.0, comparer.tableMatches.get(1).matchScore, .001);
    assertEquals(2, comparer.tableMatches.size());
  }

  @Test
  public void shouldBeAbleToOrderTheMatchesHighestToLowest() throws Exception {
    comparer.tableMatches.add(new HistoryComparer.MatchedPair(6, 6, 1.0));
    comparer.tableMatches.add(new HistoryComparer.MatchedPair(5, 5, .9));
    comparer.tableMatches.add(new HistoryComparer.MatchedPair(4, 4, 1.1));
    comparer.tableMatches.add(new HistoryComparer.MatchedPair(7, 7, 1.05));
    comparer.sortMatchesByScore();
    assertEquals(1.1, comparer.tableMatches.get(0).matchScore, .001);
    assertEquals(1.05, comparer.tableMatches.get(1).matchScore, .001);
    assertEquals(1.0, comparer.tableMatches.get(2).matchScore, .001);
    assertEquals(.9, comparer.tableMatches.get(3).matchScore, .001);
  }

  @Test
  public void shouldBeAbleToOrderTheMatchesByTableIndex() throws Exception {
    comparer.tableMatches.add(new HistoryComparer.MatchedPair(6, 6, 1.0));
    comparer.tableMatches.add(new HistoryComparer.MatchedPair(5, 5, .9));
    comparer.tableMatches.add(new HistoryComparer.MatchedPair(4, 4, 1.1));
    comparer.tableMatches.add(new HistoryComparer.MatchedPair(7, 7, 1.05));
    comparer.sortMatchesByTableIndex();
    assertEquals(4, comparer.tableMatches.get(0).first);

  }

}
TOP

Related Classes of fitnesse.responders.testHistory.TableListComparerTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.