package technology.tabula;
import static org.junit.Assert.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.font.PDType1Font;
import org.junit.Before;
import org.junit.Test;
public class TestProjectionProfile {
ProjectionProfile pProfile;
Page page;
@Before
public void setUpProjectionProfile() {
PDPage pdPage = new PDPage();
TextElement textElement = new TextElement(5f, 15f, 10f, 20f, PDType1Font.HELVETICA, 1f, "test", 1f);
TextElement textElement2 = new TextElement(5f, 15f, 10f, 20f, PDType1Font.HELVETICA, 1f, "test", 1f);
List<TextElement> textList = new ArrayList<TextElement>();
textList.add(textElement);
textList.add(textElement2);
Ruling ruling = new Ruling(0, 0, 10, 10);
List<Ruling> rulingList = new ArrayList<Ruling>();
rulingList.add(ruling);
page = new Page(0, 0, 1, 1, 0, 1, pdPage, textList, rulingList);
List<Rectangle> rectangles = new ArrayList<Rectangle>();
rectangles.add(new Rectangle(0f, 0f, 500f, 5f));
pProfile = new ProjectionProfile(page, rectangles, 5, 5);
}
@Test
public void testGetVerticalProjection() {
float[] projection = pProfile.getVerticalProjection();
assertTrue(projection.length == 10);
}
@Test
public void testGetHorizontalProjection() {
float[] projection = pProfile.getHorizontalProjection();
assertTrue(projection.length == 10);
}
@Test
public void testFindVerticalSeparators() {
float[] seperators = pProfile.findVerticalSeparators(page.getText().size() * 2.5f);
assertTrue(seperators.length == 0);
}
@Test
public void testFindHorizontalSeparators() {
float[] seperators = pProfile.findHorizontalSeparators(page.getText().size() * 2.5f);
assertTrue(seperators.length == 0);
}
@Test
public void testSmooth() {
float[] data = {0, 1, 2};
float[] rv = pProfile.smooth(data, 3);
assertEquals(1f, rv[2], 1e-5);
}
@Test
public void testFilter() {
float[] data = {0, 1, 2};
float[] rv = pProfile.filter(data, 3);
assertEquals(3f, rv[1], 1e-5);
}
@Test
public void testGetAutocorrelation() {
float[] projection = {0, 1, 2};
float[] rv = pProfile.getAutocorrelation(projection);
assertEquals(0f, rv[0], 1e-5);
assertTrue(rv.length == 2);
}
@Test
public void testGetFirstDeriv() {
// float[]
// float[] projection = pProfile.getFirstDeriv(new float[]{0.0, 0.0)
// System.out.println(Arrays.toString(projection));
// assertEquals(10, projection[0], 1e-15);
}
}