diff --git a/cartailor.html b/cartailor.html index a6b05a7..81b9d3a 100644 --- a/cartailor.html +++ b/cartailor.html @@ -13,26 +13,14 @@ th,td{border: 1px solid rgb(160 160 160);padding: 8px 10px;} EG210 25000 € - - Interior - IS - 2500 € - color : red - Transmission TSF7 15000 € - - Exterior - XS - 10000 € - color : red - Total Price : - 52500 € + 40000 € diff --git a/src/fr/impl/ConfigurationImpl.java b/src/fr/impl/ConfigurationImpl.java index f5775bd..0f9d244 100644 --- a/src/fr/impl/ConfigurationImpl.java +++ b/src/fr/impl/ConfigurationImpl.java @@ -26,7 +26,7 @@ public class ConfigurationImpl implements Configuration { for(String pr: pt1.getPropertyNames()){ Optional prOptional = pt1.getProperty(pr); if(!prOptional.isEmpty()){ - test = ((PartImpl)pt1).isValidProperty(pr); + test = test && ((PartImpl)pt1).isValidProperty(pr); } else test = false; } @@ -67,7 +67,9 @@ public class ConfigurationImpl implements Configuration { else System.out.println("\tnot ok"); System.out.println(test_Requirement + " " + test_Incompabilities); test = test && test_Requirement && test_Incompabilities; + System.out.println("post final : " + test); } + System.out.println("final : " + test); return test; } diff --git a/src/fr/impl/Parts/Engine.java b/src/fr/impl/Parts/Engine.java index 5c384cf..25232f2 100644 --- a/src/fr/impl/Parts/Engine.java +++ b/src/fr/impl/Parts/Engine.java @@ -26,7 +26,10 @@ public class Engine extends PartImpl { @Override public void setType(PartType type){ - this.type = type; - this.price = prices.get(type.getName()); + this.type = type; + if(prices.containsKey(type.getName())){ + this.price = prices.get(type.getName()); + } + else this.price = 0; } } diff --git a/src/fr/impl/Parts/Exterior.java b/src/fr/impl/Parts/Exterior.java index bbe1b4c..3d6be30 100644 --- a/src/fr/impl/Parts/Exterior.java +++ b/src/fr/impl/Parts/Exterior.java @@ -47,7 +47,10 @@ public class Exterior extends PartImpl { @Override public void setType(PartType type){ - this.type = type; - this.price = prices.get(type.getName()); + this.type = type; + if(prices.containsKey(type.getName())){ + this.price = prices.get(type.getName()); + } + else this.price = 0; } } diff --git a/src/fr/impl/Parts/Interior.java b/src/fr/impl/Parts/Interior.java index 8a75f96..9b7d78d 100644 --- a/src/fr/impl/Parts/Interior.java +++ b/src/fr/impl/Parts/Interior.java @@ -47,8 +47,11 @@ public class Interior extends PartImpl { @Override public void setType(PartType type){ - this.type = type; - this.price = prices.get(type.getName()); + this.type = type; + if(prices.containsKey(type.getName())){ + this.price = prices.get(type.getName()); + } + else this.price = 0; } } diff --git a/src/fr/impl/Parts/Transmission.java b/src/fr/impl/Parts/Transmission.java index 28c3c96..b729251 100644 --- a/src/fr/impl/Parts/Transmission.java +++ b/src/fr/impl/Parts/Transmission.java @@ -26,7 +26,10 @@ public class Transmission extends PartImpl { @Override public void setType(PartType type){ - this.type = type; - this.price = prices.get(type.getName()); + this.type = type; + if(prices.containsKey(type.getName())){ + this.price = prices.get(type.getName()); + } + else this.price = 0; } } diff --git a/src/fr/test/test_V1.java b/src/fr/test/test_V1.java index 05602c1..61060a0 100644 --- a/src/fr/test/test_V1.java +++ b/src/fr/test/test_V1.java @@ -206,6 +206,28 @@ public class test_V1 { assertTrue(cm.getIncompatibilities(TSF7).contains(ED110)); } + @Test + public void test_contradiction(){ + CompatibilityManager cm2 = new CompatibilityManagerImpl(); + PartType eg= new PartTypeImpl("eg",Engine.class, engine); + PartType tr= new PartTypeImpl("Tr", Transmission.class, transmission); + + Set egIncompatibilities = new HashSet(); + egIncompatibilities.add(tr); + cm.addIncompatibilities(eg, egIncompatibilities); + + Set efRequirement = new HashSet(); + efRequirement.add(eg); + cm.addRequirements(tr, efRequirement); + + + assertFalse(cm.getIncompatibilities(eg).contains(eg)); + assertTrue(cm.getRequirements(tr).contains(eg)); + assertTrue(cm.getIncompatibilities(tr).contains(tr)); //tr Require eg, eg Incompatible tr, -> eg Incompatible eg + + } + + //Configuration @@ -320,4 +342,29 @@ public class test_V1 { assertTrue(config1.isValid()); } + @Test + public void test_contradiction_config(){ + CompatibilityManager cm2 = new CompatibilityManagerImpl(); + PartType eg= new PartTypeImpl("eg",Engine.class, engine); + PartType tr= new PartTypeImpl("Tr", Transmission.class, transmission); + PartType ex= new PartTypeImpl("Ex", Exterior.class, exterior); + PartType in= new PartTypeImpl("In", Interior.class, interior); + + Set egIncompatibilities = new HashSet(); + egIncompatibilities.add(tr); + cm2.addIncompatibilities(eg, egIncompatibilities); + + Set efRequirement = new HashSet(); + efRequirement.add(eg); + cm2.addRequirements(eg, efRequirement); + + ConfigurationImpl config1 = new ConfigurationImpl(cm2); + config1.selectPart(eg); + config1.selectPart(tr); + config1.selectPart(ex); + config1.selectPart(in); + + assertFalse(config1.isValid()); + } + }