package de.saring.sportstracker.data;
import javafx.scene.paint.Color;
import org.junit.Before;
import org.junit.Test;
import static org.junit.Assert.*;
/**
* This class contains all unit tests for the SportType class.
*
* @author Stefan Saring
*/
public class SportTypeTest {
private SportType type;
/**
* This method initializes the environment for testing.
*/
@Before
public void setUp() {
// create a new sport type with some test content
type = new SportType(1);
type.setName("Cycling");
type.setIcon("cycling.png");
type.setColor(Color.RED);
type.setRecordDistance(true);
SportSubType sub1 = new SportSubType(1);
sub1.setName("MTB");
type.getSportSubTypeList().set(sub1);
SportSubType sub2 = new SportSubType(2);
sub2.setName("Road");
type.getSportSubTypeList().set(sub2);
SportSubType sub3 = new SportSubType(3);
sub3.setName("City");
type.getSportSubTypeList().set(sub3);
Equipment equipment1 = new Equipment(1);
equipment1.setName("Cannondale Jekyll");
type.getEquipmentList().set(equipment1);
Equipment equipment2 = new Equipment(2);
equipment2.setName("Cannondale R800");
type.getEquipmentList().set(equipment2);
}
/**
* Tests the appropriate method.
*/
@Test
public void testClone() {
SportType clone = type.clone();
// compare original and cloned object => needs to be same
assertNotNull(clone);
assertFalse(type == clone);
assertEquals(type.getId(), clone.getId());
assertEquals(type.getName(), clone.getName());
assertEquals(type.getIcon(), clone.getIcon());
assertEquals(type.getColor(), clone.getColor());
assertEquals(type.isRecordDistance(), clone.isRecordDistance());
assertEquals(type.getSportSubTypeList().size(), clone.getSportSubTypeList().size());
assertEquals(type.getSportSubTypeList().getByID(2).getName(), clone.getSportSubTypeList().getByID(2).getName());
assertEquals(type.getSportSubTypeList().getByID(3).getName(), clone.getSportSubTypeList().getByID(3).getName());
// modify original object only
type.setName("Stuff");
type.setIcon("noicon.png");
type.setColor(Color.PINK);
type.getSportSubTypeList().removeByID(3);
type.getSportSubTypeList().getByID(2).setName("Road123");
type.getEquipmentList().removeByID(1);
type.getEquipmentList().getByID(2).setName("Litespeed Icon");
// compare original and cloned object => needs to be different
assertFalse(type.getName().equals(clone.getName()));
assertFalse(type.getIcon().equals(clone.getIcon()));
assertFalse(type.getColor().equals(clone.getColor()));
assertTrue(type.getSportSubTypeList().size() != clone.getSportSubTypeList().size());
assertFalse(type.getSportSubTypeList().getByID(2).getName().equals(clone.getSportSubTypeList().getByID(2).getName()));
assertTrue(type.getEquipmentList().size() != clone.getEquipmentList().size());
assertNull(type.getEquipmentList().getByID(1));
assertNotNull(clone.getEquipmentList().getByID(1));
assertFalse(type.getEquipmentList().getByID(2).getName().equals(clone.getEquipmentList().getByID(2).getName()));
}
}