package org.priki.format;
import java.util.Collection;
import junit.framework.TestCase;
import org.priki.bo.Text;
import org.priki.bo.Wiki;
import org.priki.bo.Wikiword;
public final class WikiwordsValidatorTest extends TestCase {
private Wiki wiki;
private WikiwordsValidator validator;
@Override
protected void setUp() throws Exception {
wiki = new Wiki();
validator = new WikiwordsValidator(wiki);
}
private Wikiword newWikiword(String keyword, boolean definition, boolean caseSensitive) {
Wikiword word = wiki.newWikiword(keyword);
if (definition) {
word.setDefinition(new Text());
}
word.setCaseSensitive(caseSensitive);
return word;
}
private boolean containsWikiword(String keyword, Collection<Wikiword> words) {
for (Wikiword wikiword : words) {
if (wikiword.getKeyword().equals(keyword)) {
return true;
}
}
return false;
}
public void testWikiwordCaseSensitive() {
newWikiword("TESTE", false, true);
newWikiword("teste", false, false);
newWikiword("Teste", true, true);
newWikiword("TestE", true, false);
// conflicting with "TestE"
Collection<Wikiword> ret = validator.getConflictingWikiwords("TESTE", true);
assertEquals(1, ret.size());
assertTrue(containsWikiword("TestE", ret));
// conflicting with "TestE"
ret = validator.getConflictingWikiwords("teste", true);
assertEquals(1, ret.size());
assertTrue(containsWikiword("TestE", ret));
// conflicting with "TestE"
ret = validator.getConflictingWikiwords("Teste", true);
assertEquals(1, ret.size());
assertTrue(containsWikiword("TestE", ret));
// none conflicting
ret = validator.getConflictingWikiwords("TestE", true);
assertEquals(0, ret.size());
}
public void testWikiwordCaseInsensitive() {
newWikiword("TESTE", false, true);
newWikiword("teste", false, false);
newWikiword("Teste", true, true);
newWikiword("TestE", true, false);
// conflicting with "Teste", "TestE"
Collection<Wikiword> ret = validator.getConflictingWikiwords("TESTE", false);
assertEquals(2, ret.size());
assertTrue(containsWikiword("Teste", ret));
assertTrue(containsWikiword("TestE", ret));
// conflicting with "Teste", "TestE"
ret = validator.getConflictingWikiwords("teste", false);
assertEquals(2, ret.size());
assertTrue(containsWikiword("Teste", ret));
assertTrue(containsWikiword("TestE", ret));
// conflicting with "TestE"
ret = validator.getConflictingWikiwords("Teste", false);
assertEquals(1, ret.size());
assertTrue(containsWikiword("TestE", ret));
// conflicting with "Teste"
ret = validator.getConflictingWikiwords("TestE", false);
assertEquals(1, ret.size());
assertTrue(containsWikiword("Teste", ret));
}
public void testMatchWikiwords() {
assertTrue(validator.matchWikiwords("Something é Test"));
assertTrue(validator.matchWikiwords("Something ç Test"));
assertTrue(validator.matchWikiwords("Something ã Test"));
}
}