Obfuscated, test cases included.
Fore!
[mike@halfadozen ~/IWT]$ ls\ntotal 16\n-rw-rw-r-- 1 mike mike 255 Nov 26 18:21 Person.java\n-rw-rw-r-- 1 mike mike 601 Nov 26 20:02 PersonShun.java\n-rw-r--r-- 1 mike mike 705 Nov 26 18:46 PersonTest.java\n\n[mike@halfadozen ~/IWT]$ cat Person.java\npublic class Person {\n private String _name;\n\n public Person() {\n _name = "";\n }\n\n public Person(String name) {\n _name = name;\n }\n\n public void setName(String name) {\n _name = name;\n }\n\n public String getName() {\n return _name;\n }\n}\n\n[mike@halfadozen ~/IWT]$ cat PersonTest.java\nimport Person;\nimport junit.framework.*;\n\npublic class PersonTest extends TestCase {\n public PersonTest(String name) {\n super(name);\n }\n\n public void testSetName() {\n Person p = new Person();\n\n p.setName("Mike");\n Assert.assertTrue(p.getName().equals("Mike"));\n }\n\n public void testBlankConstructor() {\n Person p = new Person();\n\n Assert.assertTrue(p.getName().equals(""));\n }\n\n public void testNamedConstructor() {\n Person p = new Person("Mike");\n\n Assert.assertTrue(p.getName().equals("Mike"));\n }\n\n public static Test suite() {\n return new TestSuite(PersonTest.class);\n }\n\n public static void main(String[] args) {\n junit.textui.TestRunner.run(suite());\n }\n}\n\n[mike@halfadozen ~/IWT]$ cat PersonShun.java\nimport Person;\n\npublic class PersonShun {\n private static String[] names = { "Peter", "Scott", "Droog", "Xian", \n "Greg", "KMS", "Meerkat", "Jake" };\n\n private static void doShun(Person p) {\n System.out.println("*shun " + p.getName() + "*");\n }\n\n public static void main(String[] args) {\n Person[] people = new Person[names.length];\n\n for (int i = 0; i < names.length; i++) {\n people[i] = new Person(names[i]);\n }\n\n for (int x = 0; x < names.length; x++) {\n for (int y = 0; y < 50; y++) {\n doShun(people[x]);\n }\n }\n }\n}\n\n[mike@halfadozen ~/IWT]$ javac Person.java\n[mike@halfadozen ~/IWT]$ javac PersonTest.java \n[mike@halfadozen ~/IWT]$ javac PersonShun.java \n[mike@halfadozen ~/IWT]$ java PersonTest\n...\nTime: 0.005\n\nOK (3 tests)\n\n[mike@halfadozen ~/IWT]$ java PersonShun\n*shun Peter*\n*shun Peter*\n*shun Peter*\n*shun Peter*\n*shun Peter*\n*shun Peter*\n*shun Peter*\n*shun Peter*\n*shun Peter*\n*shun Peter*\n*shun Peter*\n*shun Peter*\n*shun Peter*\n*shun Peter*\n*shun Peter*\n*shun Peter*\n*shun Peter*\n*shun Peter*\n*shun Peter*\n*shun Peter*\n*shun Peter*\n*shun Peter*\n*shun Peter*\n*shun Peter*\n*shun Peter*\n*shun Peter*\n*shun Peter*\n*shun Peter*\n*shun Peter*\n*shun Peter*\n*shun Peter*\n*shun Peter*\n*shun Peter*\n*shun Peter*\n*shun Peter*\n*shun Peter*\n*shun Peter*\n*shun Peter*\n*shun Peter*\n*shun Peter*\n*shun Peter*\n*shun Peter*\n*shun Peter*\n*shun Peter*\n*shun Peter*\n*shun Peter*\n*shun Peter*\n*shun Peter*\n*shun Peter*\n*shun Peter*\n*shun Scott*\n*shun Scott*\n*shun Scott*\n*shun Scott*\n*shun Scott*\n*shun Scott*\n*shun Scott*\n*shun Scott*\n*shun Scott*\n*shun Scott*\n*shun Scott*\n*shun Scott*\n*shun Scott*\n*shun Scott*\n*shun Scott*\n*shun Scott*\n*shun Scott*\n*shun Scott*\n*shun Scott*\n*shun Scott*\n*shun Scott*\n*shun Scott*\n*shun Scott*\n*shun Scott*\n*shun Scott*\n*shun Scott*\n*shun Scott*\n*shun Scott*\n*shun Scott*\n*shun Scott*\n*shun Scott*\n*shun Scott*\n*shun Scott*\n*shun Scott*\n*shun Scott*\n*shun Scott*\n*shun Scott*\n*shun Scott*\n*shun Scott*\n*shun Scott*\n*shun Scott*\n*shun Scott*\n*shun Scott*\n*shun Scott*\n*shun Scott*\n*shun Scott*\n*shun Scott*\n*shun Scott*\n*shun Scott*\n*shun Scott*\n*shun Droog*\n*shun Droog*\n*shun Droog*\n*shun Droog*\n*shun Droog*\n*shun Droog*\n*shun Droog*\n*shun Droog*\n*shun Droog*\n*shun Droog*\n*shun Droog*\n*shun Droog*\n*shun Droog*\n*shun Droog*\n*shun Droog*\n*shun Droog*\n*shun Droog*\n*shun Droog*\n*shun Droog*\n*shun Droog*\n*shun Droog*\n*shun Droog*\n*shun Droog*\n*shun Droog*\n*shun Droog*\n*shun Droog*\n*shun Droog*\n*shun Droog*\n*shun Droog*\n*shun Droog*\n*shun Droog*\n*shun Droog*\n*shun Droog*\n*shun Droog*\n*shun Droog*\n*shun Droog*\n*shun Droog*\n*shun Droog*\n*shun Droog*\n*shun Droog*\n*shun Droog*\n*shun Droog*\n*shun Droog*\n*shun Droog*\n*shun Droog*\n*shun Droog*\n*shun Droog*\n*shun Droog*\n*shun Droog*\n*shun Droog*\n*shun Xian*\n*shun Xian*\n*shun Xian*\n*shun Xian*\n*shun Xian*\n*shun Xian*\n*shun Xian*\n*shun Xian*\n*shun Xian*\n*shun Xian*\n*shun Xian*\n*shun Xian*\n*shun Xian*\n*shun Xian*\n*shun Xian*\n*shun Xian*\n*shun Xian*\n*shun Xian*\n*shun Xian*\n*shun Xian*\n*shun Xian*\n*shun Xian*\n*shun Xian*\n*shun Xian*\n*shun Xian*\n*shun Xian*\n*shun Xian*\n*shun Xian*\n*shun Xian*\n*shun Xian*\n*shun Xian*\n*shun Xian*\n*shun Xian*\n*shun Xian*\n*shun Xian*\n*shun Xian*\n*shun Xian*\n*shun Xian*\n*shun Xian*\n*shun Xian*\n*shun Xian*\n*shun Xian*\n*shun Xian*\n*shun Xian*\n*shun Xian*\n*shun Xian*\n*shun Xian*\n*shun Xian*\n*shun Xian*\n*shun Xian*\n*shun Greg*\n*shun Greg*\n*shun Greg*\n*shun Greg*\n*shun Greg*\n*shun Greg*\n*shun Greg*\n*shun Greg*\n*shun Greg*\n*shun Greg*\n*shun Greg*\n*shun Greg*\n*shun Greg*\n*shun Greg*\n*shun Greg*\n*shun Greg*\n*shun Greg*\n*shun Greg*\n*shun Greg*\n*shun Greg*\n*shun Greg*\n*shun Greg*\n*shun Greg*\n*shun Greg*\n*shun Greg*\n*shun Greg*\n*shun Greg*\n*shun Greg*\n*shun Greg*\n*shun Greg*\n*shun Greg*\n*shun Greg*\n*shun Greg*\n*shun Greg*\n*shun Greg*\n*shun Greg*\n*shun Greg*\n*shun Greg*\n*shun Greg*\n*shun Greg*\n*shun Greg*\n*shun Greg*\n*shun Greg*\n*shun Greg*\n*shun Greg*\n*shun Greg*\n*shun Greg*\n*shun Greg*\n*shun Greg*\n*shun Greg*\n*shun KMS*\n*shun KMS*\n*shun KMS*\n*shun KMS*\n*shun KMS*\n*shun KMS*\n*shun KMS*\n*shun KMS*\n*shun KMS*\n*shun KMS*\n*shun KMS*\n*shun KMS*\n*shun KMS*\n*shun KMS*\n*shun KMS*\n*shun KMS*\n*shun KMS*\n*shun KMS*\n*shun KMS*\n*shun KMS*\n*shun KMS*\n*shun KMS*\n*shun KMS*\n*shun KMS*\n*shun KMS*\n*shun KMS*\n*shun KMS*\n*shun KMS*\n*shun KMS*\n*shun KMS*\n*shun KMS*\n*shun KMS*\n*shun KMS*\n*shun KMS*\n*shun KMS*\n*shun KMS*\n*shun KMS*\n*shun KMS*\n*shun KMS*\n*shun KMS*\n*shun KMS*\n*shun KMS*\n*shun KMS*\n*shun KMS*\n*shun KMS*\n*shun KMS*\n*shun KMS*\n*shun KMS*\n*shun KMS*\n*shun KMS*\n*shun Meerkat*\n*shun Meerkat*\n*shun Meerkat*\n*shun Meerkat*\n*shun Meerkat*\n*shun Meerkat*\n*shun Meerkat*\n*shun Meerkat*\n*shun Meerkat*\n*shun Meerkat*\n*shun Meerkat*\n*shun Meerkat*\n*shun Meerkat*\n*shun Meerkat*\n*shun Meerkat*\n*shun Meerkat*\n*shun Meerkat*\n*shun Meerkat*\n*shun Meerkat*\n*shun Meerkat*\n*shun Meerkat*\n*shun Meerkat*\n*shun Meerkat*\n*shun Meerkat*\n*shun Meerkat*\n*shun Meerkat*\n*shun Meerkat*\n*shun Meerkat*\n*shun Meerkat*\n*shun Meerkat*\n*shun Meerkat*\n*shun Meerkat*\n*shun Meerkat*\n*shun Meerkat*\n*shun Meerkat*\n*shun Meerkat*\n*shun Meerkat*\n*shun Meerkat*\n*shun Meerkat*\n*shun Meerkat*\n*shun Meerkat*\n*shun Meerkat*\n*shun Meerkat*\n*shun Meerkat*\n*shun Meerkat*\n*shun Meerkat*\n*shun Meerkat*\n*shun Meerkat*\n*shun Meerkat*\n*shun Meerkat*\n*shun Jake*\n*shun Jake*\n*shun Jake*\n*shun Jake*\n*shun Jake*\n*shun Jake*\n*shun Jake*\n*shun Jake*\n*shun Jake*\n*shun Jake*\n*shun Jake*\n*shun Jake*\n*shun Jake*\n*shun Jake*\n*shun Jake*\n*shun Jake*\n*shun Jake*\n*shun Jake*\n*shun Jake*\n*shun Jake*\n*shun Jake*\n*shun Jake*\n*shun Jake*\n*shun Jake*\n*shun Jake*\n*shun Jake*\n*shun Jake*\n*shun Jake*\n*shun Jake*\n*shun Jake*\n*shun Jake*\n*shun Jake*\n*shun Jake*\n*shun Jake*\n*shun Jake*\n*shun Jake*\n*shun Jake*\n*shun Jake*\n*shun Jake*\n*shun Jake*\n*shun Jake*\n*shun Jake*\n*shun Jake*\n*shun Jake*\n*shun Jake*\n*shun Jake*\n*shun Jake*\n*shun Jake*\n*shun Jake*\n*shun Jake*