@Test public void testUppercaseVariants() throws Exception { DictionaryGuess dictionaryGuess = new DictionaryGuess(); Method uppercaseVariationsMethod = DictionaryGuess.class.getDeclaredMethod("uppercaseVariations", Match.class); uppercaseVariationsMethod.setAccessible(true); Match match = new Match.Builder(Pattern.Dictionary, 0, 0, word).sub(new HashMap<Character, Character>()).l33t(true).build(); String msg = String.format("guess multiplier of %s is %s", word, variants); assertEquals(msg, variants, uppercaseVariationsMethod.invoke(dictionaryGuess, match)); }
@Test public void testL33tVariants() throws Exception { Match match = new Match.Builder(Pattern.Dictionary, 0, 0, word).sub(sub).l33t(!sub.isEmpty()).build(); String msg = String.format("extra l33t guesses of %s is %s", word, variants); assertEquals(msg, variants, new DictionaryGuess().l33tVariations(match)); }
@Test public void testDictionaryGuesses133t() throws Exception { Map<Character, Character> sub = new HashMap<>(); sub.put('@', 'a'); Match match = new Match.Builder(Pattern.Dictionary, 0, 0, "aaa@@@").sub(sub).l33t(true).rank(32).build(); String msg = "extra guesses are added for common l33t substitutions"; assertEquals(msg, 32 * new DictionaryGuess().l33tVariations(match), new DictionaryGuess().exec(match), 0.0); }
public static Match createDictionaryL33tMatch(int i, int j, String token, String matchedWord, int rank, String dictionaryName, boolean reversed, Map<Character, Character> sub, String subDisplay) { return new Match.Builder(Pattern.Dictionary, i, j, token) .matchedWord(matchedWord) .rank(rank) .dictionaryName(dictionaryName) .reversed(reversed) .sub(sub) .subDisplay(subDisplay) .l33t(true) .build(); }
public static Match createDictionaryMatch(int i, int j, String token, String matchedWord, int rank, String dictionaryName) { return new Match.Builder(Pattern.Dictionary, i, j, token) .matchedWord(matchedWord) .rank(rank) .dictionaryName(dictionaryName) .reversed(false) .l33t(false) .build(); }
public static Match createReversedDictionaryMatch(int i, int j, String token, String matchedWord, int rank, String dictionaryName) { return new Match.Builder(Pattern.Dictionary, i, j, token) .matchedWord(matchedWord) .rank(rank) .dictionaryName(dictionaryName) .reversed(true) .l33t(false) .build(); }
@Test public void testDictionaryGuessesMixed() throws Exception { Map<Character, Character> sub = new HashMap<>(); sub.put('@', 'a'); Match match = new Match.Builder(Pattern.Dictionary, 0, 0, "AaA@@@").sub(sub).l33t(true).rank(32).build(); String msg = "extra guesses are added for both capitalization and common l33t substitutions"; int expected = 32 * new DictionaryGuess().l33tVariations(match) * new DictionaryGuess().uppercaseVariations(match); assertEquals(msg, expected, new DictionaryGuess().exec(match), 0.0); }
public static Match createReversedDictionaryMatch(int i, int j, String token, String matchedWord, int rank, String dictionaryName) { return new Match.Builder(Pattern.Dictionary, i, j, token) .matchedWord(matchedWord) .rank(rank) .dictionaryName(dictionaryName) .reversed(true) .l33t(false) .build(); }
public static Match createDictionaryMatch(int i, int j, String token, String matchedWord, int rank, String dictionaryName) { return new Match.Builder(Pattern.Dictionary, i, j, token) .matchedWord(matchedWord) .rank(rank) .dictionaryName(dictionaryName) .reversed(false) .l33t(false) .build(); }
public static Match createDictionaryL33tMatch(int i, int j, String token, String matchedWord, int rank, String dictionaryName, boolean reversed, Map<Character, Character> sub, String subDisplay) { return new Match.Builder(Pattern.Dictionary, i, j, token) .matchedWord(matchedWord) .rank(rank) .dictionaryName(dictionaryName) .reversed(reversed) .sub(sub) .subDisplay(subDisplay) .l33t(true) .build(); }