package org.aitools.programd.test.aiml; import org.aitools.util.runtime.DeveloperError; /** * Tests whether a given input has an expected length. * * @author Albertas Mickensas * @author <a href="noel@aitools.org">Noel Bush</a> */ public class LengthChecker extends Checker { private int expectedLength = -1; /** * Creates a new LengthChecker with the given length. * * @param length the length to check for */ public LengthChecker(String length) { try { this.expectedLength = Integer.parseInt(length); } catch (NumberFormatException e) { throw new DeveloperError("The schema allowed a non-integer value for LengthChecker!", e); } } /** * @see org.aitools.programd.test.aiml.Checker#getContent() */ @Override public String getContent() { return "" + this.expectedLength; } /** * @see org.aitools.programd.test.aiml.Checker#getExpected() */ @Override public String getExpected() { return String.format("Expected length: %d", Integer.toString(this.expectedLength)); } /** * @see org.aitools.programd.test.aiml.Checker#getTagName() */ @Override public String getTagName() { return Checker.TAG_EXPECTED_LENGTH; } /** * Tests whether the given input has the expected length. * * @param input the input to test * @return whether the given input has the expected length * @see org.aitools.programd.test.aiml.Checker#test(java.lang.String) */ @Override public boolean test(String input) { if (this.expectedLength != -1) { if (input.trim().length() == this.expectedLength) { return true; } // otherwise... return false; } // otherwise... return false; } }