package org.aitools.programd.test.aiml;
import java.util.Arrays;
import java.util.List;
/**
* Checks that a string contains all of a list of expected keywords.
*
* @author Albertas Mickensas
* @author <a href="noel@aitools.org">Noel Bush</a>
*/
public class ExpectedKeywordChecker extends Checker {
private List<String> keywords;
/**
* Creates a new ExpectedKeyWordChecker with a given list of expected keywords.
*
* @param list the comma-separated list of keywords
*/
public ExpectedKeywordChecker(String list) {
this.keywords = Arrays.asList(list.split(","));
}
/**
* @see org.aitools.programd.test.aiml.Checker#getContent()
*/
@Override
public String getContent() {
StringBuilder result = new StringBuilder();
int keywordCount = this.keywords.size();
for (String keyword : this.keywords) {
result.append(keyword);
if (this.keywords.indexOf(keyword) < keywordCount - 1) {
result.append(",");
}
}
return result.toString();
}
/**
* @see org.aitools.programd.test.aiml.Checker#getExpected()
*/
@Override
public String getExpected() {
return "Keywords: " + this.keywords;
}
/**
* @see org.aitools.programd.test.aiml.Checker#getTagName()
*/
@Override
public String getTagName() {
return Checker.TAG_EXPECTED_KEYWORDS;
}
/**
* Checks that the given <code>input</code> contains all of this checker's configured list of expected keywords.
*
* @see org.aitools.programd.test.aiml.Checker#test(java.lang.String)
*/
@Override
public boolean test(String input) {
boolean result = true;
for (String keyword : this.keywords) {
result &= input.contains(keyword);
}
return result;
}
}