Package fit.decorator.util

Source Code of fit.decorator.util.TableTest

package fit.decorator.util;

import static org.junit.Assert.assertEquals;

import fit.Parse;
import fit.decorator.exceptions.InvalidInputException;
import org.junit.Before;
import org.junit.Test;

public class TableTest {
  private String fitPage = "<table><tr><td>eg.Division</td></tr>"
    + "<tr><td>numerator</td><td>denominator</td><td>quotient()</td></tr>"
    + "<tr><td>10</td><td>2</td><td>5</td></tr></table>";
  private Table table;

  @Before
  public void setUp() throws Exception {
    table = new Table(fitPage);
  }

  @Test
  public void testToStringShouldParseTableWithMultipleRowsAndColumns() throws Exception {
    assertTable(fitPage);
  }

  @Test
  public void testConstructorShouldBuildTableFromParseObject() throws Exception {
    String expectedTableContents = "<tr><td>fit.decorator.MaxTime</td><td>10</td></tr>";
    Parse parse = new Parse(expectedTableContents, new String[]
      {"tr", "td"});
    table = new Table(parse);
    assertTable(expectedTableContents);
  }

  @Test
  public void testCopyAndAppendLastRow() throws Exception {
    table.copyAndAppendLastRow(1);
    String expectedTableContents = "<table><tr><td>eg.Division</td></tr>"
      + "<tr><td>numerator</td><td>denominator</td><td>quotient()</td></tr>"
      + "<tr><td>10</td><td>2</td><td>5</td></tr>" + "<tr><td>10</td><td>2</td><td>5</td></tr></table>";
    assertTable(expectedTableContents);
  }

  @Test
  public void testCopyAndAppendLastRowMultipleTimes() throws Exception {
    table.copyAndAppendLastRow(3);
    String expectedTableContents = "<table><tr><td>eg.Division</td></tr>"
      + "<tr><td>numerator</td><td>denominator</td><td>quotient()</td></tr>"
      + "<tr><td>10</td><td>2</td><td>5</td></tr><tr><td>10</td><td>2</td><td>5</td></tr>"
      + "<tr><td>10</td><td>2</td><td>5</td></tr>" + "<tr><td>10</td><td>2</td><td>5</td></tr></table>";
    assertTable(expectedTableContents);
  }

  @Test
  public void testCopyAndAppendLastRowZeroTime() throws Exception {
    table.copyAndAppendLastRow(0);
    assertTable(fitPage);
  }

  @Test
  public void testIncrementColumnValueThrowsInvalidInputExceptionIfColumnNameIsNotFound() throws Exception {
    try {
      table.incrementColumnValues(1, "invalidColumnName", null);
    } catch (InvalidInputException e) {
      assertEquals("'invalidColumnName' was not found in the table " + fitPage, e.getMessage());
    }
  }

  @Test
  public void testIncrementColumnValueShouldAddTheGivenDeltaToAllRowsOfTheGivenColumn() throws Exception {
    table.incrementColumnValues("denominator", new Delta("int", "1"), 1);
    assertTable(fitPage);
  }

  @Test
  public void testIncrementColumnValueShouldIncrementallyAddTheGivenDeltaMultipleTimes() throws Exception {
    table.incrementColumnValues(3, "denominator", new Delta("int", "1"));
    String expectedFitPage = "<table><tr><td>eg.Division</td></tr>"
      + "<tr><td>numerator</td><td>denominator</td><td>quotient()</td></tr>"
      + "<tr><td>10</td><td>2</td><td>5</td></tr><tr><td>10</td><td>3</td><td>5</td></tr>"
      + "<tr><td>10</td><td>4</td><td>5</td></tr></table>";
    assertTable(expectedFitPage);
  }

  @Test
  public void testInsertAsFirstRow() throws Exception {
    Parse firstRow = new Parse("<tr><td>first row</td></tr>", new String[]
      {"tr", "td"});
    table.insertAsFirstRow(firstRow);
    String expectedTableContents = "<table><tr><td>first row</td></tr><tr><td>eg.Division</td></tr>"
      + "<tr><td>numerator</td><td>denominator</td><td>quotient()</td></tr>"
      + "<tr><td>10</td><td>2</td><td>5</td></tr></table>";
    assertTable(expectedTableContents);
  }

  @Test
  public void testStripFirstRow() throws Exception {
    table.stripFirstRow();
    String expectedTableContents = "<table>" + "<tr><td>numerator</td><td>denominator</td><td>quotient()</td></tr>"
      + "<tr><td>10</td><td>2</td><td>5</td></tr></table>";
    assertTable(expectedTableContents);
  }

  @Test
  public void testColumnNumberShouldReturnColumnNumberForTheGivenColumnName() throws Exception {
    assertEquals(0, table.columnNumberContainingText("numerator", 1));
    assertEquals(1, table.columnNumberContainingText("denominator", 1));
    assertEquals(2, table.columnNumberContainingText("quotient()", 1));
  }

  @Test
  public void testColumnNumberShouldThrowsInvalidInputExceptionIfColumnNameIsNotFound() throws Exception {
    try {
      table.columnNumberContainingText("invalidColumnName", 1);
    } catch (InvalidInputException e) {
      assertEquals("'invalidColumnName' was not found in the table " + fitPage, e.getMessage());
    }
  }

  @Test
  public void testColumnValueShouldReturnColumnValueForTheGivenColumnNumber() throws Exception {
    assertEquals("10", table.columnValue(2, 0));
    assertEquals("2", table.columnValue(2, 1));
    assertEquals("5", table.columnValue(2, 2));
  }

  @Test
  public void testGetLastRow() throws Exception {
    Parse lastRow = table.lastRow();
    String expectedLastRow = "<tr><td>10</td><td>2</td><td>5</td></tr>";
    assertParseObject(expectedLastRow, lastRow);
  }

  @Test
  public void testGetSecondLastRow() throws Exception {
    String fitPage = "<table><tr><td>eg.Division</td></tr>"
      + "<tr><td>numerator</td><td>denominator</td><td>quotient()</td></tr>"
      + "<tr><td>10</td><td>2</td><td>5</td></tr>" + "<tr><td>5</td><td>1</td><td>5</td></tr></table>";
    table = new Table(fitPage);
    Parse secondLastRow = table.secondLastRow(table.lastRow());
    String expectedSecondLastRow = "<tr><td>10</td><td>2</td><td>5</td></tr>";
    assertParseObject(expectedSecondLastRow, secondLastRow);
  }

  @Test
  public void testRowNumberContainingTextShouldReturnIndexOfTheRowContainingTheText() throws Exception {
    assertEquals(0, table.rowNumberContainingText("eg.Division"));
    assertEquals(1, table.rowNumberContainingText("numerator"));
    assertEquals(1, table.rowNumberContainingText("denominator"));
  }

  @Test
  public void testRowNumberContainingTextShouldThrowInvalidInputExceptionIfSearchTextIsNotFound() throws Exception {
    try {
      table.rowNumberContainingText("invalidColumnName");
    } catch (InvalidInputException e) {
      assertEquals("'invalidColumnName' was not found in the table " + fitPage, e.getMessage());
    }
  }

  @Test
  public void testCopyAndAppendLastRowShouldLeaveTheTableAsItIsIfTotalRowsAreLessThanThree() throws Exception {
    String fitPage = "<table><tr><td>eg.Division</td></tr>"
      + "<tr><td>numerator</td><td>denominator</td><td>quotient()</td></tr></table>";
    table = new Table(fitPage);
    table.copyAndAppendLastRow(4);
    assertTable(fitPage);
  }

  private void assertTable(String expectedTableContents) {
    assertEquals(expectedTableContents, table.toString());
  }

  private void assertParseObject(String expectedTableContents, Parse parse) {
    assertEquals(expectedTableContents, new Table(parse).toString());
  }
}
TOP

Related Classes of fit.decorator.util.TableTest

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.