001    /**
002     * This is part of CSE 331 Problem Set 0.
003     */
004    package ps0.test;
005    import ps0.RandomHello;
006    
007    import junit.framework.TestCase;
008    import java.util.HashSet;
009    import java.util.Set;
010    
011    /**
012     * RandomHelloTest is a simple test of the RandomHello class that is
013     * to be written by the students. This test just makes sure that the
014     * program does not crash and that it prints at least 5 different
015     * greetings.
016     */
017    public class RandomHelloTest extends TestCase {
018    
019        /** Number of times to run the greeting test until we're quite sure we'd have seen all the greetings */
020        private int TIMES_TO_TEST = 1000;
021    
022        /** Required number of greetings */
023        private int REQUIRED_NUMBER_OF_GREETINGS = 5;
024    
025        /**
026         * Tests that RandomHello does not crash.
027         */
028        public void testCrash() {
029            /* If RandomHello.main() throws an exception, it will
030             * propagate outside testCrash() and JUnit will flag
031             * an error. */
032            RandomHello.main(new String[0]);
033        }
034    
035    
036        /**
037         * Tests that the greetings are indeed random and that there are
038         * at least 5 different ones.
039         */
040        public void testGreetings() {
041            RandomHello world = new RandomHello();
042            Set<String> set = new HashSet<String>();
043    
044            for (int i=0; i< TIMES_TO_TEST; i++) {
045                String greeting = world.getGreeting();
046                if (!set.contains(greeting)) {
047                    set.add(greeting);
048                }
049            }
050            assertTrue("Insufficient number of greetings. Only "+set.size()+" greetings observed when we asked for "+ REQUIRED_NUMBER_OF_GREETINGS, set.size() >= REQUIRED_NUMBER_OF_GREETINGS);
051            assertFalse("Too many greetings in RandomHello. "+set.size()+" different greetings were observed when we asked for exactly "+ REQUIRED_NUMBER_OF_GREETINGS, set.size() > REQUIRED_NUMBER_OF_GREETINGS);
052        }
053    
054    
055    }