package src.fr.test; import java.util.Set; import java.util.HashSet; import static org.junit.Assert.*; import org.junit.Before; import org.junit.Test; import org.junit.jupiter.api.BeforeEach; import src.fr.impl.*; import src.fr.impl.Parts.*; import src.fr.api.*; public class test_V1 { CategoryImpl engine = new CategoryImpl("Engine"); CategoryImpl transmission = new CategoryImpl("Transmission"); CategoryImpl exterior = new CategoryImpl("Exterior"); CategoryImpl interior = new CategoryImpl("Interior"); //PartType PartType EG100= new PartTypeImpl("EG100",Engine.class, engine); PartType EG133= new PartTypeImpl("EG133",Engine.class, engine); PartType EG210= new PartTypeImpl("EG210",Engine.class, engine); PartType ED110= new PartTypeImpl("ED110",Engine.class, engine); PartType ED180= new PartTypeImpl("ED180",Engine.class, engine); PartType EH120= new PartTypeImpl("EH120",Engine.class, engine); PartType TM5= new PartTypeImpl("TM5", Transmission.class ,transmission); PartType TM6= new PartTypeImpl("TM6", Transmission.class ,transmission); PartType TA5= new PartTypeImpl("TA5", Transmission.class ,transmission); PartType TS6= new PartTypeImpl("TS6", Transmission.class ,transmission); PartType TSF7= new PartTypeImpl("TSF7", Transmission.class ,transmission); PartType TC120= new PartTypeImpl("TC120", Transmission.class ,transmission); PartType XC= new PartTypeImpl("XC", Exterior.class,exterior); PartType XM= new PartTypeImpl("XM", Exterior.class,exterior); PartType XS= new PartTypeImpl("XS", Exterior.class,exterior); PartType IN= new PartTypeImpl("IN", Interior.class ,interior); PartType IH= new PartTypeImpl("IH", Interior.class ,interior); PartType IS= new PartTypeImpl("IS", Interior.class ,interior); CompatibilityManager cm = new CompatibilityManagerImpl(); @BeforeEach public void init(){ Set EH120Requirement = new HashSet(); EH120Requirement.add(TC120); Set TA5Incompatibilities = new HashSet(); TA5Incompatibilities.add(EG100); Set TSF7Incompatibilities = new HashSet(); TSF7Incompatibilities.add(EG100); TSF7Incompatibilities.add(EG133); TSF7Incompatibilities.add(ED110); Set TC120Requirement = new HashSet(); TC120Requirement.add(EH120); Set XCIncompatibilities = new HashSet(); XCIncompatibilities.add(EG210); Set XMIncompatibilities = new HashSet(); XMIncompatibilities.add(EG100); Set XSIncompatibilities = new HashSet(); XSIncompatibilities.add(EG100); Set XSRequirement = new HashSet(); XSRequirement.add(IS); Set ISIncompatibilities = new HashSet(); ISIncompatibilities.add(EG100); ISIncompatibilities.add(TM5); Set ISRequirement = new HashSet(); ISRequirement.add(XS); cm.addRequirements(EH120, EH120Requirement); cm.addIncompatibilities(TA5, TA5Incompatibilities); cm.addIncompatibilities(TSF7, TSF7Incompatibilities); cm.addRequirements(TC120, TC120Requirement); cm.addIncompatibilities(XC, XCIncompatibilities); cm.addIncompatibilities(XM, XMIncompatibilities); cm.addIncompatibilities(XS, XSIncompatibilities); cm.addRequirements(XS, XSRequirement); cm.addIncompatibilities(IS, ISIncompatibilities); cm.addRequirements(IS, ISRequirement); } @Test public void test_Incompatibilities_Simple_1(){ assertTrue(cm.getIncompatibilities(TA5).contains(EG100)); } @Test public void test_multiple_Incompatibilities_Simple_2(){ assertTrue( cm.getIncompatibilities(TSF7).contains(EG100)&& cm.getIncompatibilities(TSF7).contains(EG133)&& cm.getIncompatibilities(TSF7).contains(ED110) ); } @Test public void test_Requirements_3(){ assertTrue(cm.getRequirements(EH120).contains(TC120)); } /* * A <-> B * if A -> B then B -> A */ @Test public void test_Incompatibilities_Complex_4(){ System.out.println("size EG100 incompatibilities : "+cm.getIncompatibilities(EG100).size()); assertTrue(cm.getIncompatibilities(EG100).contains(IS)); assertTrue(cm.getIncompatibilities(EG100).contains(XS)); } /* * if A require B * then A is incompatible with all incompatible of B */ @Test public void test_Require_Incompatibilities_Complex_5(){ assertTrue(cm.getIncompatibilities(XS).contains(EG100)); System.out.println("size XS incompatibilities : " + cm.getIncompatibilities(XS).size()); assertTrue(cm.getIncompatibilities(XS).contains(TM5)); } /* * Require Require Require * if A -> B && B -> C then A -> C */ @Test public void test_Incompatibilities_Complex_7(){ cm.addRequirements(TC120, Set.of(XC)); assertTrue(cm.getRequirements(TC120).contains(XC)); assertTrue(cm.getRequirements(EH120).contains(XC)); cm.removeRequirement(TC120, XC); } @Test public void test_Empty_Requirements_5(){ assertTrue(cm.getRequirements(ED180).isEmpty()); } @Test public void test_Remove_and_restore_Incompatibilities_6(){ assertTrue(cm.getIncompatibilities(XM).contains(EG100)); cm.removeIncompatibility(XM, EG100); assertFalse(cm.getIncompatibilities(XM).contains(EG100)); Set setEG100 = new HashSet(); setEG100.add(EG100); cm.addIncompatibilities(XM, setEG100); assertTrue(cm.getIncompatibilities(XM).contains(EG100)); } @Test public void test_Remove_Empty_7(){ assertTrue(cm.getIncompatibilities(EH120).isEmpty()); cm.removeIncompatibility(EH120, EG100); assertTrue(cm.getIncompatibilities(EH120).isEmpty()); } @Test public void test_Remove_and_restore_Requirements_8(){ assertTrue(cm.getRequirements(EH120).contains(TC120)); cm.removeRequirement(EH120, TC120); assertFalse(cm.getRequirements(EH120).contains(TC120)); Set setTC120 = new HashSet(); setTC120.add(TC120); cm.addRequirements(EH120, setTC120); assertTrue(cm.getRequirements(EH120).contains(TC120)); } @Test public void test_remove_incompatibilities_but_no_removable(){ assertTrue(cm.getIncompatibilities(EG100).contains(IS)); cm.removeIncompatibility(EG100, IS); assertTrue(cm.getIncompatibilities(EG100).contains(IS)); } @Test public void test_Add_and_restore_Incompatibilities_9(){ assertTrue(cm.getIncompatibilities(TSF7).contains(EG100)); assertTrue(cm.getIncompatibilities(TSF7).contains(EG133)); assertTrue(cm.getIncompatibilities(TSF7).contains(ED110)); cm.removeIncompatibility(TSF7, EG100); assertFalse(cm.getIncompatibilities(TSF7).contains(EG100)); assertTrue(cm.getIncompatibilities(TSF7).contains(EG133)); assertTrue(cm.getIncompatibilities(TSF7).contains(ED110)); Set setEG100 = new HashSet(); setEG100.add(EG100); cm.addIncompatibilities(TSF7, setEG100); assertTrue(cm.getIncompatibilities(TSF7).contains(EG100)); assertTrue(cm.getIncompatibilities(TSF7).contains(EG133)); assertTrue(cm.getIncompatibilities(TSF7).contains(ED110)); } }