From eaefdc99813dd6cab449651d656ff0ee18683dda Mon Sep 17 00:00:00 2001 From: Andrew Wong Date: Thu, 4 May 2017 16:31:09 -0400 Subject: [PATCH 01/12] Testing classImplements method --- .idea/compiler.xml | 16 + .idea/libraries/Maven__junit_junit_4_12.xml | 13 + .../Maven__org_hamcrest_hamcrest_core_1_3.xml | 13 + .idea/misc.xml | 13 + .idea/modules.xml | 8 + .idea/vcs.xml | 6 + .idea/workspace.xml | 788 ++++++++++++++++++ TypeInformation.iml | 17 + pom.xml | 19 + src/main/java/PartOne.java | 20 + src/test/java/TestPartOne.java | 24 + 11 files changed, 937 insertions(+) create mode 100644 .idea/compiler.xml create mode 100644 .idea/libraries/Maven__junit_junit_4_12.xml create mode 100644 .idea/libraries/Maven__org_hamcrest_hamcrest_core_1_3.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/vcs.xml create mode 100644 .idea/workspace.xml create mode 100644 TypeInformation.iml create mode 100644 pom.xml create mode 100644 src/main/java/PartOne.java create mode 100644 src/test/java/TestPartOne.java diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 0000000..d82a6ed --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__junit_junit_4_12.xml b/.idea/libraries/Maven__junit_junit_4_12.xml new file mode 100644 index 0000000..d411041 --- /dev/null +++ b/.idea/libraries/Maven__junit_junit_4_12.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_hamcrest_hamcrest_core_1_3.xml b/.idea/libraries/Maven__org_hamcrest_hamcrest_core_1_3.xml new file mode 100644 index 0000000..f58bbc1 --- /dev/null +++ b/.idea/libraries/Maven__org_hamcrest_hamcrest_core_1_3.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..5755a99 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,13 @@ + + + + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..1ee38f5 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/workspace.xml b/.idea/workspace.xml new file mode 100644 index 0000000..9ec7de5 --- /dev/null +++ b/.idea/workspace.xml @@ -0,0 +1,788 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + DEFINITION_ORDER + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1493926101051 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + No facets are configured + + + + + + + + + + + + + + + 1.8 + + + + + + + + TypeInformation + + + + + + + + Maven: junit:junit:4.12 + + + + + + + + \ No newline at end of file diff --git a/TypeInformation.iml b/TypeInformation.iml new file mode 100644 index 0000000..5cf6df2 --- /dev/null +++ b/TypeInformation.iml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..a8efbaf --- /dev/null +++ b/pom.xml @@ -0,0 +1,19 @@ + + + 4.0.0 + + wong.andrew + TypeInformation + 1.0-SNAPSHOT + + + + junit + junit + 4.12 + + + + \ No newline at end of file diff --git a/src/main/java/PartOne.java b/src/main/java/PartOne.java new file mode 100644 index 0000000..ba0903a --- /dev/null +++ b/src/main/java/PartOne.java @@ -0,0 +1,20 @@ +import java.awt.*; +import java.io.Serializable; + +/** + * Created by andrewwong on 5/4/17. + */ +public class PartOne { + public boolean classImplementsInterface(Class dimension, String interfaceName){ + boolean isImplemented = false; + Object[] interfaces = dimension.getInterfaces(); + for(int i = 0; i < interfaces.length; i++){ + if (interfaces[i].toString().equalsIgnoreCase(interfaceName)){ + isImplemented = true; + break; + } + } + return isImplemented; + } + +} diff --git a/src/test/java/TestPartOne.java b/src/test/java/TestPartOne.java new file mode 100644 index 0000000..31a9fab --- /dev/null +++ b/src/test/java/TestPartOne.java @@ -0,0 +1,24 @@ +import org.junit.Test; + +import java.awt.*; +import java.io.Serializable; +import static org.junit.Assert.*; + +/** + * Created by andrewwong on 5/4/17. + */ +public class TestPartOne { + @Test + public void classImplementsInterface_ClassIsDimensionInterfaceIsSerializable_DimensionImplementsSerializableIsTrue() { + //Arrange + Class dimension = new Dimension; + PartOne partOne = new PartOne(); + String interfaceName = Serializable.class.getName(); + + //Act + boolean isImplemented = partOne.classImplementsInterface(, interfaceName); + + //Assert + assertTrue(isImplemented); + } +} From 6ca874ac7b678bfda128e07e3f7590160bef99a5 Mon Sep 17 00:00:00 2001 From: Andrew Wong Date: Thu, 4 May 2017 19:09:29 -0400 Subject: [PATCH 02/12] It works, need more single responbility, break it down --- .idea/workspace.xml | 169 ++++++++++++++++++++++++++------ src/main/java/ExampleClass.java | 23 +++++ src/main/java/Main.java | 10 ++ src/main/java/PartOne.java | 72 ++++++++++++-- src/test/java/TestPartOne.java | 22 ++++- 5 files changed, 257 insertions(+), 39 deletions(-) create mode 100644 src/main/java/ExampleClass.java create mode 100644 src/main/java/Main.java diff --git a/.idea/workspace.xml b/.idea/workspace.xml index 9ec7de5..560c504 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -1,7 +1,10 @@ - + + + + @@ -679,7 +678,7 @@ @@ -226,7 +210,7 @@ - + @@ -284,6 +268,27 @@ + + + + + + + + @@ -680,44 +687,44 @@ - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - + - + - @@ -761,7 +768,16 @@ - + + + + file://$PROJECT_DIR$/src/test/java/TestPartOne.java + 42 + + + + @@ -793,25 +809,25 @@ - + - + - - + + - + - - + + diff --git a/src/main/java/PartOne.java b/src/main/java/PartOne.java index 333a8ab..997ceac 100644 --- a/src/main/java/PartOne.java +++ b/src/main/java/PartOne.java @@ -3,6 +3,7 @@ import java.lang.reflect.Field; import java.lang.reflect.Method; import java.lang.reflect.Modifier; +import java.util.ArrayList; /** * Created by andrewwong on 5/4/17. @@ -10,6 +11,7 @@ public class PartOne { private final String newLine = "\n"; private final String space = " "; + private final String doubleSpace = " "; public boolean classImplementsInterface(Class aClass, String interfaceName) { boolean isImplemented = false; @@ -88,5 +90,34 @@ private String listConstructors(Object o) { return sb.toString(); } + public String getClassHierarchy(Object o) { + StringBuilder sb = new StringBuilder(); + String hierarchy; + Class currentClass = o.getClass(); + ArrayList listOfClasses = new ArrayList<>(); + for (int i = 0; currentClass != null; i++) { + listOfClasses.add(currentClass); + currentClass = currentClass.getSuperclass(); + } + for(int i = listOfClasses.size(), j = 0; i > 0; i--, j++){ + sb.append(listOfClasses.get(i) + "\n"); + for (int k = 0; k < j; k++){ + sb.append(doubleSpace); + } + } +// for (int i = 0; currentClass != null; i++) { +// sb.append(currentClass + "\n"); +// for (int j = 0; j <= i; j++) { +// if(currentClass.getSuperclass()==null){ +// break; +// } +// sb.append(doubleSpace); +// } +// currentClass = currentClass.getSuperclass(); +// } + hierarchy = sb.toString(); + return hierarchy; + } + } diff --git a/src/test/java/TestPartOne.java b/src/test/java/TestPartOne.java index 853409e..23930b3 100644 --- a/src/test/java/TestPartOne.java +++ b/src/test/java/TestPartOne.java @@ -28,9 +28,9 @@ public void listAllMembers_ObjectHasMembers_ListOfMembersIsReturned(){ //Arrange PartOne partOne = new PartOne(); ExampleClass o = new ExampleClass(); - String expectedList = "Fields:\nprivate field1\nprivate field2\nprivate field3\nprivate field4\n"+ - "Methods:\npublic addFields\npublic final wait\npublic final native wait\npublic final wait\npublic equals\npublic toString\npublic native hashCode\npublic final native getClass\npublic final native notify\npublic final native notifyAll\n"+ - "Constructors:\npublic ExampleClass\npublic ExampleClass\npublic ExampleClass\n"; + String expectedList = "Fields:\nExampleClass private field1\nExampleClass private field2\nExampleClass private field3\nExampleClass private field4\n"+ + "Methods:\nExampleClass public addFields\nObject public final wait\nObject public final native wait\nObject public final wait\nObject public equals\nObject public toString\nObject public native hashCode\nObject public final native getClass\nObject public final native notify\nObject public final native notifyAll\n"+ + "Constructors:\nExampleClass public ExampleClass\nExampleClass public ExampleClass\nExampleClass public ExampleClass\n"; //Act String actualList = partOne.listAllMembers(o); @@ -41,10 +41,12 @@ public void listAllMembers_ObjectHasMembers_ListOfMembersIsReturned(){ @Test public void getClassHierarchy_ClassIsInteger_HierarchyWithObjectAndNumberIsReturned(){ //Arrange - + String expectedHierarchy = "class java.lang.Object\n class java.lang.Number\n class java.lang.Integer\n"; + PartOne partOne = new PartOne(); //Act - + String actualHierarchy = partOne.getClassHierarchy(new Integer(0)); //Assert + assertEquals(expectedHierarchy, actualHierarchy); } } From 2b8d29bc9302c60d14617f04a4fe4acd6e504c55 Mon Sep 17 00:00:00 2001 From: Andrew Wong Date: Thu, 4 May 2017 22:52:49 -0400 Subject: [PATCH 07/12] ClassHierarchy works --- .idea/workspace.xml | 72 +++++++++++++++++++++------------- src/main/java/PartOne.java | 6 +-- src/test/java/TestPartOne.java | 3 +- 3 files changed, 49 insertions(+), 32 deletions(-) diff --git a/.idea/workspace.xml b/.idea/workspace.xml index f18ee4b..177daa3 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -23,8 +23,8 @@ - - + + @@ -35,8 +35,8 @@ - - + + @@ -77,8 +77,8 @@ @@ -89,9 +89,9 @@ DEFINITION_ORDER - @@ -687,47 +687,47 @@ - + - + - + - + - + - + - + - + - - + + - + - - + @@ -739,13 +739,13 @@ - + - + @@ -814,10 +814,26 @@ + + + + + + + + + + + + + + + + - - + + @@ -826,8 +842,8 @@ - - + + diff --git a/src/main/java/PartOne.java b/src/main/java/PartOne.java index 997ceac..0031eb7 100644 --- a/src/main/java/PartOne.java +++ b/src/main/java/PartOne.java @@ -99,9 +99,9 @@ public String getClassHierarchy(Object o) { listOfClasses.add(currentClass); currentClass = currentClass.getSuperclass(); } - for(int i = listOfClasses.size(), j = 0; i > 0; i--, j++){ - sb.append(listOfClasses.get(i) + "\n"); - for (int k = 0; k < j; k++){ + for(int i = listOfClasses.size(); i > 0; i--){ + sb.append(listOfClasses.get(i-1) + "\n"); + for (int k = listOfClasses.size(), topClass = listOfClasses.size() - 1; k >= i; k--){ sb.append(doubleSpace); } } diff --git a/src/test/java/TestPartOne.java b/src/test/java/TestPartOne.java index 23930b3..423396b 100644 --- a/src/test/java/TestPartOne.java +++ b/src/test/java/TestPartOne.java @@ -45,8 +45,9 @@ public void getClassHierarchy_ClassIsInteger_HierarchyWithObjectAndNumberIsRetur PartOne partOne = new PartOne(); //Act String actualHierarchy = partOne.getClassHierarchy(new Integer(0)); + //Assert - assertEquals(expectedHierarchy, actualHierarchy); + assertEquals(expectedHierarchy.trim(), actualHierarchy.trim()); } } From 847cc6a7f64637b65f178aee0aad219ab26638d1 Mon Sep 17 00:00:00 2001 From: Andrew Wong Date: Fri, 5 May 2017 14:32:31 -0400 Subject: [PATCH 08/12] instantiateClassHierarchy method passes test --- .idea/workspace.xml | 216 ++++++++++++++++++++------------- src/main/java/Main.java | 12 +- src/main/java/PartOne.java | 47 ++++--- src/test/java/TestPartOne.java | 22 ++++ 4 files changed, 195 insertions(+), 102 deletions(-) diff --git a/.idea/workspace.xml b/.idea/workspace.xml index 177daa3..4cb5f1c 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -2,6 +2,8 @@ + + @@ -19,12 +21,12 @@ - - + + - - + + @@ -32,11 +34,11 @@ - + - - + + @@ -47,9 +49,11 @@ - - - + + + + + @@ -76,9 +80,9 @@ @@ -89,9 +93,9 @@ DEFINITION_ORDER - @@ -110,6 +114,7 @@ + @@ -196,7 +201,6 @@ - @@ -209,8 +213,9 @@ + - + @@ -289,6 +294,27 @@ + + + + + + + + @@ -647,6 +674,12 @@ + project + + + + + @@ -662,18 +695,20 @@ - + + - - - - - + + + + + + @@ -687,77 +722,78 @@ - + - + - + - + - + - + - + - + - - + + - - + + - - + - + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - + + + - - - + @@ -769,13 +805,6 @@ - - - file://$PROJECT_DIR$/src/test/java/TestPartOne.java - 42 - - - @@ -785,6 +814,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -798,22 +847,14 @@ - - - - + + + + - - - - - - - - @@ -826,14 +867,13 @@ - - + - - + + @@ -842,8 +882,18 @@ - - + + + + + + + + + + + + diff --git a/src/main/java/Main.java b/src/main/java/Main.java index 79d9a0d..7393902 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -1,3 +1,7 @@ +import javax.swing.*; +import java.awt.*; +import java.util.ArrayList; + /** * Created by andrewwong on 5/4/17. */ @@ -5,8 +9,12 @@ public class Main { public static void main(String[] args) { PartOne partOne = new PartOne(); StringBuilder sb = new StringBuilder(); -// System.out.println(partOne.listAllMembers(ExampleClass.class)); ExampleClass object = new ExampleClass(); - System.out.println(partOne.listAllMembers(object)); +// System.out.println(partOne.listAllMembers(object)); +// System.out.println(partOne.getClassHierarchy(new Menu())); + ArrayList instances = partOne.instantiateClassHierarchy(new Integer(0)); + for(Object o: instances){ + System.out.println(o.getClass().getSimpleName()); + } } } diff --git a/src/main/java/PartOne.java b/src/main/java/PartOne.java index 0031eb7..3c6bc1e 100644 --- a/src/main/java/PartOne.java +++ b/src/main/java/PartOne.java @@ -1,8 +1,5 @@ -import java.lang.reflect.Constructor; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import java.lang.reflect.Modifier; +import java.lang.reflect.*; import java.util.ArrayList; /** @@ -95,29 +92,45 @@ public String getClassHierarchy(Object o) { String hierarchy; Class currentClass = o.getClass(); ArrayList listOfClasses = new ArrayList<>(); + for (int i = 0; currentClass != null; i++) { listOfClasses.add(currentClass); currentClass = currentClass.getSuperclass(); } - for(int i = listOfClasses.size(); i > 0; i--){ - sb.append(listOfClasses.get(i-1) + "\n"); - for (int k = listOfClasses.size(), topClass = listOfClasses.size() - 1; k >= i; k--){ + + for (int i = listOfClasses.size(); i > 0; i--) { + sb.append(listOfClasses.get(i - 1) + "\n"); + for (int k = listOfClasses.size(), topClass = listOfClasses.size() - 1; k >= i; k--) { sb.append(doubleSpace); } } -// for (int i = 0; currentClass != null; i++) { -// sb.append(currentClass + "\n"); -// for (int j = 0; j <= i; j++) { -// if(currentClass.getSuperclass()==null){ -// break; -// } -// sb.append(doubleSpace); -// } -// currentClass = currentClass.getSuperclass(); -// } + hierarchy = sb.toString(); return hierarchy; } + public ArrayList instantiateClassHierarchy(Object o) { + ArrayList listOfInstances = new ArrayList<>(); + ArrayList listOfClasses = new ArrayList<>(); + Class currentClass = o.getClass(); + for (int i = 0; currentClass != null; i++) { + listOfClasses.add(currentClass); + currentClass = currentClass.getSuperclass(); + } + for (Class aClass : listOfClasses) { + try { + listOfInstances.add(aClass.getConstructor().newInstance()); + } catch (NoSuchMethodException e) { + System.out.println("Not instantiated, no default constructor for the class " + aClass.getSimpleName()); + } catch (InstantiationException e) { + System.out.println("Not instantiated, the class " + aClass.getSimpleName() + " is abstract"); + } catch (IllegalAccessException e) { + System.out.println("Not instantiated, constructor for the class " + aClass.getSimpleName() + " is inaccessible"); + } catch (InvocationTargetException e) { + System.out.println("Not instantiated, the class " + aClass.getSimpleName() + "has underlying constructor that throws exception"); + } + } + return listOfInstances; + } } diff --git a/src/test/java/TestPartOne.java b/src/test/java/TestPartOne.java index 423396b..87a79d3 100644 --- a/src/test/java/TestPartOne.java +++ b/src/test/java/TestPartOne.java @@ -2,6 +2,7 @@ import java.awt.*; import java.io.Serializable; +import java.util.ArrayList; import static org.junit.Assert.*; @@ -49,5 +50,26 @@ public void getClassHierarchy_ClassIsInteger_HierarchyWithObjectAndNumberIsRetur //Assert assertEquals(expectedHierarchy.trim(), actualHierarchy.trim()); } + @Test + public void instantiateClassHierarchy_ClassIsExampleClass_returnsListOfInstancesOfAllConcreteClasses(){ + //Arrange + PartOne partOne = new PartOne(); + Class exampleClassClass = new ExampleClass().getClass(); + Class objectClass = new Object().getClass(); + ArrayList expectedClassesOfInstances = new ArrayList<>(); + expectedClassesOfInstances.add(exampleClassClass); + expectedClassesOfInstances.add(objectClass); + + //Act + ArrayList actualInstances = partOne.instantiateClassHierarchy(new ExampleClass()); + ArrayList actualClassesOfInstances = new ArrayList<>(); + for(Object instance: actualInstances){ + actualClassesOfInstances.add(instance.getClass()); + } + + //Assert + assertTrue(expectedClassesOfInstances.equals(actualClassesOfInstances)); + //assert that the class of the each instance in the instances array is different + } } From 57e6bc9bc348f5eaad6822e1b660a3098a932df2 Mon Sep 17 00:00:00 2001 From: Andrew Wong Date: Fri, 5 May 2017 15:57:13 -0400 Subject: [PATCH 09/12] Started unitcorn, most classes made --- .idea/workspace.xml | 328 +++++++++++++++--- src/main/java/Main.java | 7 +- src/main/java/PartOne.java | 15 +- .../java/wong/andrew/unitcorn/DummyClass.java | 12 + .../java/wong/andrew/unitcorn/Result.java | 25 ++ .../andrew/unitcorn/UnitCornTestRunner.java | 11 + .../wong/andrew/unitcorn/TestDummyClass.java | 23 ++ .../unitcorn/TestUnitCornTestRunner.java | 32 ++ 8 files changed, 392 insertions(+), 61 deletions(-) create mode 100644 src/main/java/wong/andrew/unitcorn/DummyClass.java create mode 100644 src/main/java/wong/andrew/unitcorn/Result.java create mode 100644 src/main/java/wong/andrew/unitcorn/UnitCornTestRunner.java create mode 100644 src/test/java/wong/andrew/unitcorn/TestDummyClass.java create mode 100644 src/test/java/wong/andrew/unitcorn/TestUnitCornTestRunner.java diff --git a/.idea/workspace.xml b/.idea/workspace.xml index 4cb5f1c..fc9fea4 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -2,10 +2,8 @@ - - @@ -22,23 +20,31 @@ - - + + - - - - - + + + + + + + + + + + + + - - + + - - + + @@ -46,18 +52,35 @@ - - + + - - + + - + + + + + + + + + + + + + + + + + + @@ -67,6 +90,11 @@ + + + each + + @@ -81,8 +109,13 @@ @@ -97,6 +130,9 @@ + + + @@ -127,6 +163,24 @@ - + + + + + + @@ -704,9 +815,9 @@ - + - + @@ -723,20 +834,11 @@ - - - - - - - - - @@ -752,15 +854,24 @@ + + + + + + + + + - @@ -776,14 +887,14 @@ - + - + @@ -842,19 +953,6 @@ - - - - - - - - - - - - - @@ -870,10 +968,26 @@ - + + + + + + + + + - - + + + + + + + + + + @@ -882,24 +996,126 @@ - - + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/java/Main.java b/src/main/java/Main.java index 7393902..5d0f18b 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -14,7 +14,12 @@ public static void main(String[] args) { // System.out.println(partOne.getClassHierarchy(new Menu())); ArrayList instances = partOne.instantiateClassHierarchy(new Integer(0)); for(Object o: instances){ - System.out.println(o.getClass().getSimpleName()); + if(o.getClass().getSimpleName().equals("String")) + { + System.out.println(o.toString()); + } + else + System.out.println(o.getClass().getSimpleName()); } } } diff --git a/src/main/java/PartOne.java b/src/main/java/PartOne.java index 3c6bc1e..713347d 100644 --- a/src/main/java/PartOne.java +++ b/src/main/java/PartOne.java @@ -43,6 +43,7 @@ public String listAllMembers(Object o) { return list; } + //helper method for listAllMembers private String listFields(Object o) { StringBuilder sb = new StringBuilder(); Field[] fields = o.getClass().getDeclaredFields(); @@ -57,6 +58,7 @@ private String listFields(Object o) { return sb.toString(); } + //helper method for listAllMembers private String listMethods(Object o) { StringBuilder sb = new StringBuilder(); @@ -72,6 +74,7 @@ private String listMethods(Object o) { return sb.toString(); } + //helper method for listAllMembers private String listConstructors(Object o) { StringBuilder sb = new StringBuilder(); @@ -121,13 +124,17 @@ public ArrayList instantiateClassHierarchy(Object o) { try { listOfInstances.add(aClass.getConstructor().newInstance()); } catch (NoSuchMethodException e) { - System.out.println("Not instantiated, no default constructor for the class " + aClass.getSimpleName()); + String errorMessage = "Not instantiated, no default constructor for the class" + aClass.getSimpleName(); + listOfInstances.add(errorMessage); } catch (InstantiationException e) { - System.out.println("Not instantiated, the class " + aClass.getSimpleName() + " is abstract"); + String errorMessage = "Not instantiated, the class " + aClass.getSimpleName() + " is abstract"; + listOfInstances.add(errorMessage); } catch (IllegalAccessException e) { - System.out.println("Not instantiated, constructor for the class " + aClass.getSimpleName() + " is inaccessible"); + String errorMessage = "Not instantiated, constructor for the class " + aClass.getSimpleName() + " is inaccessible"; + listOfInstances.add(errorMessage); } catch (InvocationTargetException e) { - System.out.println("Not instantiated, the class " + aClass.getSimpleName() + "has underlying constructor that throws exception"); + String errorMessage = "Not instantiated, the class " + aClass.getSimpleName() + "has underlying constructor that throws exception"; + listOfInstances.add(errorMessage); } } return listOfInstances; diff --git a/src/main/java/wong/andrew/unitcorn/DummyClass.java b/src/main/java/wong/andrew/unitcorn/DummyClass.java new file mode 100644 index 0000000..df3238a --- /dev/null +++ b/src/main/java/wong/andrew/unitcorn/DummyClass.java @@ -0,0 +1,12 @@ +package wong.andrew.unitcorn; + +/** + * Created by andrewwong on 5/5/17. + */ +public class DummyClass { + public boolean dummyMethod(){ + boolean dummyBoolean = true; + return dummyBoolean; + + } +} diff --git a/src/main/java/wong/andrew/unitcorn/Result.java b/src/main/java/wong/andrew/unitcorn/Result.java new file mode 100644 index 0000000..dafbe97 --- /dev/null +++ b/src/main/java/wong/andrew/unitcorn/Result.java @@ -0,0 +1,25 @@ +package wong.andrew.unitcorn; + +/** + * Created by andrewwong on 5/5/17. + */ +public class Result { + private boolean testHasPassed; + private Exception e; + + public boolean isTestHasPassed() { + return testHasPassed; + } + + public void setTestHasPassed(boolean testHasPassed) { + this.testHasPassed = testHasPassed; + } + + public Exception getE() { + return e; + } + + public void setE(Exception e) { + this.e = e; + } +} diff --git a/src/main/java/wong/andrew/unitcorn/UnitCornTestRunner.java b/src/main/java/wong/andrew/unitcorn/UnitCornTestRunner.java new file mode 100644 index 0000000..09ea146 --- /dev/null +++ b/src/main/java/wong/andrew/unitcorn/UnitCornTestRunner.java @@ -0,0 +1,11 @@ +package wong.andrew.unitcorn; + +/** + * Created by andrewwong on 5/5/17. + */ +public class UnitCornTestRunner { + public Result runTest(Class c, String methodName){ + Result result = new Result; + return result; + } +} diff --git a/src/test/java/wong/andrew/unitcorn/TestDummyClass.java b/src/test/java/wong/andrew/unitcorn/TestDummyClass.java new file mode 100644 index 0000000..16fb8da --- /dev/null +++ b/src/test/java/wong/andrew/unitcorn/TestDummyClass.java @@ -0,0 +1,23 @@ +package wong.andrew.unitcorn; + +import org.junit.Test; +import static org.junit.Assert.*; + + +/** + * Created by andrewwong on 5/5/17. + */ +public class TestDummyClass { + @Test + public void dummyMethod_Void_ReturnsVoid(){ + //Arrange + DummyClass dummyClass; + dummyClass = new DummyClass(); + boolean expectedBoolean = true; + //Act + boolean actualBoolean = dummyClass.dummyMethod(); + + //Assert + assertEquals(expectedBoolean, actualBoolean); + } +} diff --git a/src/test/java/wong/andrew/unitcorn/TestUnitCornTestRunner.java b/src/test/java/wong/andrew/unitcorn/TestUnitCornTestRunner.java new file mode 100644 index 0000000..fec8099 --- /dev/null +++ b/src/test/java/wong/andrew/unitcorn/TestUnitCornTestRunner.java @@ -0,0 +1,32 @@ +package wong.andrew.unitcorn; + +import org.junit.Before; +import org.junit.Test; +import static org.junit.Assert.*; + +/** + * Created by andrewwong on 5/5/17. + */ +public class TestUnitCornTestRunner { +// @Before +// public void initializeUnitCorn(){ +// UnitCornTestRunner unitCorn = new UnitCornTestRunner(); +// } + @Test + public void runTest_TestingPartOneListAllMembers_ResultReturned(){ + //Arrange + UnitCornTestRunner unitCorn = new UnitCornTestRunner(); + Result result; + + Class c; + String methodName = ""; + + //Act + result = unitCorn.runTest(c, methodName); + + //Assert + assertNotNull(result); + + + } +} From 1609b8dea6478c8084e820d2d9ce9b739ff46f06 Mon Sep 17 00:00:00 2001 From: Andrew Wong Date: Fri, 5 May 2017 17:10:12 -0400 Subject: [PATCH 10/12] getMethod is tested and works, working runTest --- .idea/workspace.xml | 293 +++++++++++------- src/main/java/wong/andrew/unitcorn/Main.java | 10 + .../andrew/unitcorn/UnitCornTestRunner.java | 24 +- .../wong/andrew/unitcorn/TestDummyClass.java | 5 +- .../unitcorn/TestUnitCornTestRunner.java | 22 +- 5 files changed, 231 insertions(+), 123 deletions(-) create mode 100644 src/main/java/wong/andrew/unitcorn/Main.java diff --git a/.idea/workspace.xml b/.idea/workspace.xml index fc9fea4..130479d 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -2,8 +2,10 @@ - - + + + + @@ -23,30 +25,23 @@ - - - + + + + + - - + + - - - - - - - - - - - + - + + @@ -74,9 +69,23 @@ - - - + + + + + + + + + + + + + + + + + @@ -111,11 +120,12 @@ @@ -176,10 +186,6 @@