DefaultTraitMap implements TraitMap { @Override public Trait getTrait(TraitType traitType) { if (contains(traitType)) { return traitsByType.get(traitType); } return new NullTrait(); }  void addTraits(Trait... traits); void addTraits(Iterable<Trait> traits); @Override Trait getTrait(TraitType traitType); @Override final Traits getTraits(TraitType... traitTypes); final Traits getAll(); final boolean contains(TraitType traitType);  }
@Test public void createsNullTraitForUnfullfillableRequests() { DefaultTraitMap map = new DefaultTraitMap(); TraitType type = new TraitType("Test"); Trait test = map.getTrait(type); test.setCurrentValue(5); assertThat(test.getCurrentValue(), is(0)); }