package pl.edu.amu.wmi.daut.re; import java.nio.CharBuffer; import java.util.List; import java.util.ArrayList; import junit.framework.TestCase; /** * Klasa testująca klasę RandomStringGenerator. */ public class TestRandomStringGenerator extends TestCase { private static final int N = 1000; /** * Metoda testująca RandomStringGenerator. * Pusty alfabet. */ public final void testNullAlphabet() { try { new RandomStringGenerator(null); fail("Creating null alphabet shouldn't be available"); } catch (IllegalArgumentException e) { return; } } /** * Metoda testująca RandomStringGenerator. * Puste słowo. */ public void testIsEmptyWordPresent() { RandomStringGenerator generator = new RandomStringGenerator("ABCD"); List<String> randomWords = generateRandomWords(generator, N); assertTrue(listContains(randomWords, "")); } /** * Metoda testująca RandomStringGenerator. * Puste słowo, pusty alfabet. */ public void testIsEmptyWordPresentNullAlphabet() { RandomStringGenerator generator = new RandomStringGenerator(""); List<String> randomWords = generateRandomWords(generator, N); assertTrue(listContains(randomWords, "")); } /** * Metoda testująca RandomStringGenerator. * Niepuste słowo. */ public void testAreAllCharacterPresent() { String alphabet = "ABCDEFGHIJ"; RandomStringGenerator generator = new RandomStringGenerator(alphabet); List<String> randomWords = generateRandomWords(generator, N); for (int i = 0; i < alphabet.length(); i++) { assertTrue(listContains(randomWords, alphabet.charAt(i))); } } private List<String> generateRandomWords(RandomStringGenerator generator, int n) { List<String> result = new ArrayList<String>(n); for (int i = 0; i < n; i++) { result.add(generator.getRandomString()); } return result; } private boolean listContains(List<String> list, String pattern) { for (String word : list) { if (word.equals(pattern)) { return true; } } return false; } private boolean listContains(List<String> list, char character) { CharBuffer pattern = CharBuffer.allocate(1); pattern.append(character); for (String word : list) { if (word.contains(pattern)) { return true; } } return false; } }