package de.saring.sportstracker.data;
import org.junit.Before;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
/**
* This class contains all unit tests for the EntryFilter class.
*
* @author Stefan Saring
*/
public class EntryFilterTest {
private SportTypeList sportTypeList;
/**
* This method initializes the environment for testing.
*/
@Before
public void setUp() {
// create a sport type list with 2 sport types with 2 sport subtypes in each
sportTypeList = new SportTypeList();
SportType type1 = new SportType(1);
type1.setName("SportType 1");
SportSubType subType11 = new SportSubType(11);
subType11.setName("SportSubType 11");
type1.getSportSubTypeList().set(subType11);
SportSubType subType12 = new SportSubType(12);
subType12.setName("SportSubType 12");
type1.getSportSubTypeList().set(subType12);
sportTypeList.set(type1);
SportType type2 = new SportType(2);
type2.setName("SportType 2");
SportSubType subType21 = new SportSubType(21);
subType21.setName("SportSubType 21");
type2.getSportSubTypeList().set(subType21);
SportSubType subType22 = new SportSubType(22);
subType22.setName("SportSubType 22");
type2.getSportSubTypeList().set(subType22);
sportTypeList.set(type2);
}
/**
* Tests the appropriate method.
*/
@Test
public void testUpdateSportTypes() {
EntryFilter filter = EntryFilter.createDefaultExerciseFilter();
// nothing happens when the filter has no sport type and subtype
filter.updateSportTypes(sportTypeList);
assertNull(filter.getSportType());
assertNull(filter.getSportSubType());
// no changes in sport type list => filter sport type and subtype keeps the same
SportType type2 = sportTypeList.getByID(2);
filter.setSportType(type2);
SportSubType subType22 = type2.getSportSubTypeList().getByID(22);
filter.setSportSubType(subType22);
filter.updateSportTypes(sportTypeList);
assertEquals(2, filter.getSportType().getId());
assertEquals(22, filter.getSportSubType().getId());
// the subtypes gets removed => must alse be removed in the filter
type2.getSportSubTypeList().removeByID(22);
filter.updateSportTypes(sportTypeList);
assertEquals(2, filter.getSportType().getId());
assertNull(filter.getSportSubType());
// the sport type gets removed => must alse be removed in the filter
sportTypeList.removeByID(2);
filter.updateSportTypes(sportTypeList);
assertNull(filter.getSportType());
assertNull(filter.getSportSubType());
}
}