@Override protected Slot slotFromNonUnderscoredChar(char character) { if (!Character.isDigit(character)) { rule = Slot.RULE_INPUT_MOVES_INPUT | Slot.RULE_INPUT_REPLACE; final Slot hardcoded = PredefinedSlots.hardcodedSlot(character); return character == PLUS_SIGN ? hardcoded : hardcoded.withTags(Slot.TAG_DECORATION); } final Slot slot = new Slot(rule, character, SlotValidatorSet.setOf(new SlotValidators.DigitValidator())); rule = Slot.RULE_INPUT_MOVES_INPUT; return slot; } }
public static Slot digit() { return new Slot(null, new SlotValidators.DigitValidator()); }
@Test public void validValueRemovedFromNext() { Slot first = new Slot('1', new SlotValidators.DigitValidator()); Slot second = new Slot('2', new SlotValidators.DigitValidator()); first.setNextSlot(second); second.setPrevSlot(first); first.setValue(null); Assert.assertNull(second.getValue()); }
@Test public void validValueCopiedFromNext() { Slot first = new Slot('1', new SlotValidators.DigitValidator()); Slot second = new Slot('2', new SlotValidators.DigitValidator()); first.setNextSlot(second); second.setPrevSlot(first); first.setValue(null); Assert.assertEquals(new Character('2'), first.getValue()); }
@Test public void invalidValueNotRemovedFromNext() { Slot first = new Slot('0', new SlotValidators.DigitValidator()); Slot second = new Slot('a', new SlotValidators.LetterValidator()); first.setNextSlot(second); second.setPrevSlot(first); first.setValue(null); Assert.assertEquals(new Character('a'), second.getValue()); }
@Override public boolean validate(char value) { if (super.validate(value)) { return true; } for (char aChar : maskChars) { if (aChar == value) { return true; } } return false; }
@Test public void invalidValueNotCopiedFromNext() { Slot first = new Slot('0', new SlotValidators.DigitValidator()); Slot second = new Slot('a', new SlotValidators.LetterValidator()); first.setNextSlot(second); second.setPrevSlot(first); first.setValue(null); Assert.assertNull(first.getValue()); }