//: annotations/AtUnitExample4.java package annotations; import java.util.*; import net.mindview.atunit.*; import net.mindview.util.*; import static net.mindview.util.Print.*; public class AtUnitExample4 { static String theory = "All brontosauruses " + "are thin at one end, much MUCH thicker in the " + "middle, and then thin again at the far end."; private String word; private Random rand = new Random(); // Time-based seed public AtUnitExample4(String word) { this.word = word; } public String getWord() { return word; } public String scrambleWord() { List chars = new ArrayList(); for(Character c : word.toCharArray()) chars.add(c); Collections.shuffle(chars, rand); StringBuilder result = new StringBuilder(); for(char ch : chars) result.append(ch); return result.toString(); } @TestProperty static List input = Arrays.asList(theory.split(" ")); @TestProperty static Iterator words = input.iterator(); @TestObjectCreate static AtUnitExample4 create() { if(words.hasNext()) return new AtUnitExample4(words.next()); else return null; } @Test boolean words() { print("'" + getWord() + "'"); return getWord().equals("are"); } @Test boolean scramble1() { // Change to a specific seed to get verifiable results: rand = new Random(47); print("'" + getWord() + "'"); String scrambled = scrambleWord(); print(scrambled); return scrambled.equals("lAl"); } @Test boolean scramble2() { rand = new Random(74); print("'" + getWord() + "'"); String scrambled = scrambleWord(); print(scrambled); return scrambled.equals("tsaeborornussu"); } public static void main(String[] args) throws Exception { System.out.println("starting"); OSExecute.command( "java net.mindview.atunit.AtUnit AtUnitExample4"); } } /* Output: starting annotations.AtUnitExample4 . scramble1 'All' lAl . scramble2 'brontosauruses' tsaeborornussu . words 'are' OK (3 tests) *///:~