package pl.edu.icm.saos.webapp.court;
import static org.junit.Assert.*;
import org.junit.Test;
import org.junit.runner.RunWith;
import com.tngtech.java.junit.dataprovider.DataProvider;
import com.tngtech.java.junit.dataprovider.DataProviderRunner;
import com.tngtech.java.junit.dataprovider.UseDataProvider;
import pl.edu.icm.saos.persistence.model.CommonCourtDivision;
import pl.edu.icm.saos.webapp.court.CcDivisionComparator;
/**
* @author Łukasz Pawełczak
*
*/
@RunWith(DataProviderRunner.class)
public class CcDivisionComparatorTest {
private CcDivisionComparator ccDivisionComparator = new CcDivisionComparator();
@DataProvider
public static Object[][] ccDivisionPositiveData() {
CommonCourtDivision divisionOne = new CommonCourtDivision();
divisionOne.setName("I Wydział");
CommonCourtDivision divisionTwo = new CommonCourtDivision();
divisionTwo.setName("III Wydział");
CommonCourtDivision divisionThree = new CommonCourtDivision();
divisionThree.setName("IX Wydział");
return new Object[][] {
{divisionTwo, divisionOne},
{divisionThree, divisionOne},
{divisionThree, divisionTwo}
};
}
@DataProvider
public static Object[][] ccDivisionNegativeData() {
CommonCourtDivision divisionOne = new CommonCourtDivision();
divisionOne.setName("IX Wydział");
CommonCourtDivision divisionTwo = new CommonCourtDivision();
divisionTwo.setName("IV Wydział");
CommonCourtDivision divisionThree = new CommonCourtDivision();
divisionThree.setName("I Wydział");
return new Object[][] {
{divisionTwo, divisionOne},
{divisionThree, divisionOne},
{divisionThree, divisionTwo}
};
}
@DataProvider
public static Object[][] ccDivisionEqualsZeroData() {
CommonCourtDivision divisionOne = new CommonCourtDivision();
divisionOne.setName("IX Wydział");
CommonCourtDivision divisionTwo = new CommonCourtDivision();
divisionTwo.setName("IX Wydział");
return new Object[][] {
{divisionTwo, divisionOne}
};
}
//------------------------ TESTS --------------------------
@Test
@UseDataProvider("ccDivisionPositiveData")
public void compare_positive(CommonCourtDivision divisionOne, CommonCourtDivision divisionTwo) {
assertTrue(0 < ccDivisionComparator.compare(divisionOne, divisionTwo));
}
@Test
@UseDataProvider("ccDivisionNegativeData")
public void compare_negative(CommonCourtDivision divisionOne, CommonCourtDivision divisionTwo) {
assertTrue(0 > ccDivisionComparator.compare(divisionOne, divisionTwo));
}
@Test
@UseDataProvider("ccDivisionEqualsZeroData")
public void compare_equals_zero(CommonCourtDivision divisionOne, CommonCourtDivision divisionTwo) {
assertTrue(0 == ccDivisionComparator.compare(divisionOne, divisionTwo));
}
@Test
public void compare_polish_letters() {
CommonCourtDivision divisionOne = new CommonCourtDivision();
divisionOne.setName("Sąd apelacyjny w Łodzi");
CommonCourtDivision divisionTwo = new CommonCourtDivision();
divisionTwo.setName("Sąd apelacyjny w Przemyślu");
assertTrue(ccDivisionComparator.compare(divisionOne, divisionTwo) < 0);
}
@Test
public void compare_one_division_contain_roman_number() {
CommonCourtDivision divisionOne = new CommonCourtDivision();
divisionOne.setName("II Wydział");
CommonCourtDivision divisionTwo = new CommonCourtDivision();
divisionTwo.setName("Wydział w poznaniu");
assertTrue(ccDivisionComparator.compare(divisionOne, divisionTwo) > 0);
}
@Test
public void compare_both_divisions_dont_contain_roman_number_sort_alpabetically() {
CommonCourtDivision divisionOne = new CommonCourtDivision();
divisionOne.setName("Sąd w Aninie");
CommonCourtDivision divisionTwo = new CommonCourtDivision();
divisionTwo.setName("Sąd w Białymstoku");
assertTrue(ccDivisionComparator.compare(divisionOne, divisionTwo) < 0);
}
}