package ru.outofrange.util;
import org.junit.Assert;
import org.junit.Test;
public class AreaUtilTest {
@Test
public void testHist1() {
int A[] = {0, 1, 1, 0};
int C = 4;
HistResult hr = maxHist(C, A);
int x1 = hr.x1;
Assert.assertEquals(2, x1);
}
@Test
public void testHist2() {
int A[] = {1, 1, 1, 0};
int C = 4;
HistResult hr = maxHist(C, A);
int x1 = hr.x1;
Assert.assertEquals(2, x1);
}
@Test
public void testHist3() {
int A[] = {1, 2, 1, 2};
int C = 4;
HistResult hr = maxHist(C, A);
int x1 = hr.x1;
Assert.assertEquals(3, x1);
}
@Test
public void testHist4() {
int A[] = {1, 2, 2, 2};
int C = 4;
HistResult hr = maxHist(C, A);
int x1 = hr.x1;
Assert.assertEquals(3, x1);
}
@Test
public void testHist5() {
int A[] = {2, 1, 1, 1};
int C = 4;
HistResult hr = maxHist(C, A);
int x1 = hr.x1;
Assert.assertEquals(3, x1);
}
@Test
public void testHist6() {
int A[] = {0, 0, 1, 0};
int C = 4;
HistResult hr = maxHist(C, A);
int x1 = hr.x1;
Assert.assertEquals(2, x1);
}
@Test
public void testHist7() {
int A[] = {5, 1, 1, 1};
int C = 4;
HistResult hr = maxHist(C, A);
int x1 = hr.x1;
Assert.assertEquals(0, x1);
}
@Test
public void testHist8() {
int A[] = {2, 3, 2, 4};
int C = 4;
HistResult hr = maxHist(C, A);
int x1 = hr.x1;
Assert.assertEquals(3, x1);
}
@Test
public void testHist9() {
int A[] = {2, 3, 3, 2};
int C = 4;
HistResult hr = maxHist(C, A);
int x1 = hr.x1;
Assert.assertEquals(3, x1);
}
@Test
public void testHist10() {
int A[] = {0, 1, 1, 0, 1, 1, 1, 0};
int C = 8;
HistResult hr = maxHist(C, A);
int x1 = hr.x1;
Assert.assertEquals(6, x1);
}
@Test
public void test1() {
// dimensions
int R = 4;
int C = 4;
int A[][] = {{0, 1, 1, 0},
{1, 1, 1, 1},
{1, 1, 1, 1},
{1, 0, 1, 0},
};
Result result = maxRectangle(R, C, A);
int x0 = result.getX0();
int y0 = result.getY0();
int x1 = result.getX1();
int y1 = result.getY1();
int width = x1 - x0 + 1;
int height = y1 - y0 + 1;
int square = width * height;
System.out.println("Area of the largest rectangle is " + square);
System.out.println("x0 = " + result.getX0());
System.out.println("y0 = " + result.getY0());
System.out.println("x1 = " + result.getX1());
System.out.println("y1 = " + result.getY1());
System.out.println("width = " + width);
System.out.println("height = " + height);
Assert.assertEquals(8, square);
Assert.assertEquals(4, width);
Assert.assertEquals(2, height);
Assert.assertEquals("X1", 3, result.getX1());
Assert.assertEquals(2, y1);
}
@Test
public void test2() {
int R = 4;
int C = 4;
int A[][] = {{1, 1, 1, 0},
{1, 1, 1, 1},
{1, 1, 1, 1},
{1, 0, 1, 0},
};
Result result = maxRectangle(R, C, A);
int x0 = result.getX0();
int y0 = result.getY0();
int x1 = result.getX1();
int y1 = result.getY1();
int width = x1 - x0 + 1;
int height = y1 - y0 + 1;
int square = width * height;
System.out.println("Area of the largest rectangle is " + square);
System.out.println("x0 = " + result.getX0());
System.out.println("y0 = " + result.getY0());
System.out.println("x1 = " + result.getX1());
System.out.println("y1 = " + result.getY1());
System.out.println("width = " + width);
System.out.println("height = " + height);
Assert.assertEquals(9, square);
Assert.assertEquals(3, width);
Assert.assertEquals(3, height);
Assert.assertEquals("X1", 2, result.getX1());
Assert.assertEquals(2, y1);
}
@Test
public void test3() {
int R = 4;
int C = 4;
int A[][] = {{0, 0, 1, 0},
{1, 0, 1, 0},
{0, 1, 1, 1},
{1, 0, 1, 0},
};
Result result = maxRectangle(R, C, A);
int x0 = result.getX0();
int y0 = result.getY0();
int x1 = result.getX1();
int y1 = result.getY1();
int width = x1 - x0 + 1;
int height = y1 - y0 + 1;
int square = width * height;
System.out.println("Area of the largest rectangle is " + square);
System.out.println("x0 = " + result.getX0());
System.out.println("y0 = " + result.getY0());
System.out.println("x1 = " + result.getX1());
System.out.println("y1 = " + result.getY1());
System.out.println("width = " + width);
System.out.println("height = " + height);
Assert.assertEquals(4, square);
Assert.assertEquals(1, width);
Assert.assertEquals(4, height);
Assert.assertEquals("X1", 2, result.getX1());
Assert.assertEquals(3, y1);
}
@Test
public void test4() {
int R = 4;
int C = 4;
int A[][] = {{1, 1, 1, 0},
{1, 0, 1, 0},
{0, 1, 0, 1},
{1, 0, 1, 0},
};
Result result = maxRectangle(R, C, A);
int x0 = result.getX0();
int y0 = result.getY0();
int x1 = result.getX1();
int y1 = result.getY1();
int width = x1 - x0 + 1;
int height = y1 - y0 + 1;
int square = width * height;
System.out.println("Area of the largest rectangle is " + square);
System.out.println("x0 = " + result.getX0());
System.out.println("y0 = " + result.getY0());
System.out.println("x1 = " + result.getX1());
System.out.println("y1 = " + result.getY1());
System.out.println("width = " + width);
System.out.println("height = " + height);
Assert.assertEquals(3, square);
Assert.assertEquals(3, width);
Assert.assertEquals(1, height);
Assert.assertEquals("X1", 2, result.getX1());
Assert.assertEquals(0, y1);
}
@Test
public void test5() {
int R = 4;
int C = 4;
int A[][] = {{1, 0, 1, 0},
{1, 0, 0, 0},
{1, 0, 0, 1},
{1, 0, 1, 0},
};
Result result = maxRectangle(R, C, A);
int x0 = result.getX0();
int y0 = result.getY0();
int x1 = result.getX1();
int y1 = result.getY1();
int width = x1 - x0 + 1;
int height = y1 - y0 + 1;
int square = width * height;
System.out.println("Area of the largest rectangle is " + square);
System.out.println("x0 = " + result.getX0());
System.out.println("y0 = " + result.getY0());
System.out.println("x1 = " + result.getX1());
System.out.println("y1 = " + result.getY1());
System.out.println("width = " + width);
System.out.println("height = " + height);
Assert.assertEquals(4, square);
Assert.assertEquals(1, width);
Assert.assertEquals(4, height);
Assert.assertEquals("X1", 0, result.getX1());
Assert.assertEquals(3, y1);
}
@Test
public void test6() {
int R = 4;
int C = 4;
int A[][] = {{1, 0, 1, 0},
{1, 0, 0, 0},
{1, 0, 1, 1},
{0, 0, 1, 1},
};
Result result = maxRectangle(R, C, A);
int x0 = result.getX0();
int y0 = result.getY0();
int x1 = result.getX1();
int y1 = result.getY1();
int width = x1 - x0 + 1;
int height = y1 - y0 + 1;
int square = width * height;
System.out.println("Area of the largest rectangle is " + square);
System.out.println("x0 = " + result.getX0());
System.out.println("y0 = " + result.getY0());
System.out.println("x1 = " + result.getX1());
System.out.println("y1 = " + result.getY1());
System.out.println("width = " + width);
System.out.println("height = " + height);
Assert.assertEquals(4, square);
Assert.assertEquals(2, width);
Assert.assertEquals(2, height);
Assert.assertEquals("X1", 3, result.getX1());
Assert.assertEquals(3, y1);
}
@Test
public void test7() {
int R = 4;
int C = 4;
int A[][] = {{0, 0, 1, 0},
{1, 1, 0, 0},
{1, 1, 1, 0},
{1, 1, 0, 1},
};
Result result = maxRectangle(R, C, A);
int x0 = result.getX0();
int y0 = result.getY0();
int x1 = result.getX1();
int y1 = result.getY1();
int width = x1 - x0 + 1;
int height = y1 - y0 + 1;
int square = width * height;
System.out.println("Area of the largest rectangle is " + square);
System.out.println("x0 = " + result.getX0());
System.out.println("y0 = " + result.getY0());
System.out.println("x1 = " + result.getX1());
System.out.println("y1 = " + result.getY1());
System.out.println("width = " + width);
System.out.println("height = " + height);
Assert.assertEquals(6, square);
Assert.assertEquals(2, width);
Assert.assertEquals(3, height);
Assert.assertEquals("X1", 1, result.getX1());
Assert.assertEquals(3, y1);
}
} |