import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
public final class RectangleCounterTest {
private RectangleCounter rectangleCounter;
@Before
public void setUp() {
rectangleCounter = new RectangleCounter();
}
@Test
public void testInputWithNoColumnsContainsNoRectangles() {
String[] inputGrid = new String[]{};
assertEquals(0, rectangleCounter.countRectangles(inputGrid));
}
@Ignore("Remove to run test")
@Test
public void testNonTrivialInputWithNoRectangles() {
String[] inputGrid = new String[]{" "};
assertEquals(0, rectangleCounter.countRectangles(inputGrid));
}
@Ignore("Remove to run test")
@Test
public void testInputWithOneRectangle() {
String[] inputGrid = new String[]{
"+-+",
"| |",
"+-+"
};
assertEquals(1, rectangleCounter.countRectangles(inputGrid));
}
@Ignore("Remove to run test")
@Test
public void testInputWithTwoRectanglesWithoutSharedEdges() {
String[] inputGrid = new String[]{
" +-+",
" | |",
"+-+-+",
"| | ",
"+-+ "
};
assertEquals(2, rectangleCounter.countRectangles(inputGrid));
}
@Ignore("Remove to run test")
@Test
public void testInputWithFiveRectanglesWithSharedEdges() {
String[] inputGrid = new String[]{
" +-+",
" | |",
"+-+-+",
"| | |",
"+-+-+"
};
assertEquals(5, rectangleCounter.countRectangles(inputGrid));
}
@Ignore("Remove to run test")
@Test
public void testThatRectangleOfHeightOneIsCounted() {
String[] inputGrid = new String[]{
"+--+",
"+--+"
};
assertEquals(1, rectangleCounter.countRectangles(inputGrid));
}
@Ignore("Remove to run test")
@Test
public void testThatRectangleOfWidthOneIsCounted() {
String[] inputGrid = new String[]{
"++",
"||",
"++"
};
assertEquals(1, rectangleCounter.countRectangles(inputGrid));
}
@Ignore("Remove to run test")
@Test
public void testThatOneByOneSquareIsCounted() {
String[] inputGrid = new String[]{
"++",
"++"
};
assertEquals(1, rectangleCounter.countRectangles(inputGrid));
}
@Ignore("Remove to run test")
@Test
public void testThatIncompleteRectanglesAreNotCounted() {
String[] inputGrid = new String[]{
" +-+",
" |",
"+-+-+",
"| | -",
"+-+-+"
};
assertEquals(1, rectangleCounter.countRectangles(inputGrid));
}
@Ignore("Remove to run test")
@Test
public void testThatRectanglesOfDifferentSizesAreAllCounted() {
String[] inputGrid = new String[]{
"+------+----+",
"| | |",
"+---+--+ |",
"| | |",
"+---+-------+"
};
assertEquals(3, rectangleCounter.countRectangles(inputGrid));
}
@Ignore("Remove to run test")
@Test
public void testThatIntersectionsWithoutCornerCharacterDoNotCountAsRectangleCorners() {
String[] inputGrid = new String[]{
"+------+----+",
"| | |",
"+------+ |",
"| | |",
"+---+-------+"
};
assertEquals(2, rectangleCounter.countRectangles(inputGrid));
}
@Ignore("Remove to run test")
@Test
public void testLargeInputWithManyRectangles() {
String[] inputGrid = new String[]{
"+---+--+----+",
"| +--+----+",
"+---+--+ |",
"| +--+----+",
"+---+--+--+-+",
"+---+--+--+-+",
"+------+ | |",
" +-+"
};
assertEquals(60, rectangleCounter.countRectangles(inputGrid));
}
}