@Test public void testaddFieldDescSingletonStaticOnly() throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException { UMLArrows arrows = UMLArrows.getInstance(); Field whitelist = WorkerForArrows.class.getDeclaredField("whitelist"); whitelist.setAccessible(true); ArrayList<String> whitelistv1 = new ArrayList<String>(Arrays.asList("TestMisfitsPackage_UMLArrowsTest")); whitelist.set(arrows, whitelistv1); Field fields = UMLArrows.class.getDeclaredField("fields"); fields.setAccessible(true); SingletonDetector detect = new SingletonDetector("red", "purple"); Field detector = UMLArrows.class.getDeclaredField("detectors"); detector.setAccessible(true); ArrayList<PatternDetector> pattern = new ArrayList<PatternDetector>(); pattern.add(detect); detector.set(arrows, pattern); ArrayList<String> fieldsarray = new ArrayList<String>(); fields.set(arrows, new ArrayList<String>()); Field className = UMLArrows.class.getDeclaredField("className"); className.setAccessible(true); // We must avoid having the stripper from touching this string String toAdd = "TestMisfitsPackage_UMLArrowsTest"; String desc = "LTestMisfitsPackage/UMLArrowsTest;"; className.set(arrows, toAdd); fieldsarray.add(toAdd); int access = Opcodes.ACC_STATIC; // An Opcode of only static should leave // isSingle as false arrows.addFieldDesc(desc, access); assertEquals(false, detect.isDetected()); }
@Test public void testprintClass() throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException { UMLArrows arrows = UMLArrows.getInstance(); Field supers = UMLArrows.class.getDeclaredField("supers"); supers.setAccessible(true); Field interfaces = UMLArrows.class.getDeclaredField("interfaces"); interfaces.setAccessible(true); Field uses = UMLArrows.class.getDeclaredField("uses"); uses.setAccessible(true); Field fields = UMLArrows.class.getDeclaredField("fields"); fields.setAccessible(true); Field fieldbuffer = UMLArrows.class.getDeclaredField("fieldBuffer"); fieldbuffer.setAccessible(true); Field methodbuffer = UMLArrows.class.getDeclaredField("methodBuffer"); methodbuffer.setAccessible(true); Field className = UMLArrows.class.getDeclaredField("className"); className.setAccessible(true); className.set(arrows, "test"); supers.set(arrows, ""); interfaces.set(arrows, new ArrayList<String>()); uses.set(arrows, new ArrayList<String>()); fields.set(arrows, new ArrayList<String>()); StringBuffer fTemp = new StringBuffer(); fTemp.append("I was thinking about this buffer and it was a good idea."); StringBuffer mTemp = new StringBuffer(); mTemp.append("This is a powerful MethodBuffer."); fieldbuffer.set(arrows, fTemp); methodbuffer.set(arrows, mTemp); arrows.printClass(); assertEquals( " test [\n shape=\"record\" label = \"{test|I was thinking about this buffer and it was a good idea.|This is a powerful MethodBuffer.\n}\"\n];\n", outContent.toString()); }
@Test public void testprintClassNoBuffers() throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException { UMLArrows arrows = UMLArrows.getInstance(); Field supers = UMLArrows.class.getDeclaredField("supers"); supers.setAccessible(true); Field interfaces = UMLArrows.class.getDeclaredField("interfaces"); interfaces.setAccessible(true); Field uses = UMLArrows.class.getDeclaredField("uses"); uses.setAccessible(true); Field fields = UMLArrows.class.getDeclaredField("fields"); fields.setAccessible(true); Field fieldbuffer = UMLArrows.class.getDeclaredField("fieldBuffer"); fieldbuffer.setAccessible(true); Field methodbuffer = UMLArrows.class.getDeclaredField("methodBuffer"); methodbuffer.setAccessible(true); Field className = UMLArrows.class.getDeclaredField("className"); className.setAccessible(true); className.set(arrows, "test"); supers.set(arrows, ""); interfaces.set(arrows, new ArrayList<String>()); uses.set(arrows, new ArrayList<String>()); fields.set(arrows, new ArrayList<String>()); fieldbuffer.set(arrows, new StringBuffer()); methodbuffer.set(arrows, new StringBuffer()); arrows.printClass(); assertEquals( " test [\n shape=\"record\" label = \"{test||\n}\"\n];\n", outContent.toString()); }
@Test public void testaddToMethodBufferNothing() throws IllegalArgumentException, IllegalAccessException, NoSuchFieldException, SecurityException { String toAdd = ""; UMLArrows arrows = UMLArrows.getInstance(); Field methodBuffer = UMLArrows.class.getDeclaredField("methodBuffer"); methodBuffer.setAccessible(true); StringBuffer currentBuffer = (StringBuffer) methodBuffer.get(arrows); String newBuffer = (currentBuffer.toString() + toAdd); arrows.addToMethodBuffer(toAdd); assertEquals(newBuffer, methodBuffer.get(arrows).toString()); }
@Test public void testaddToFieldBufferSymbols() throws IllegalArgumentException, IllegalAccessException, NoSuchFieldException, SecurityException { String toAdd = "(#)^%@#%^@#$)@#$*@#&$)@!_)*"; UMLArrows arrows = UMLArrows.getInstance(); Field fieldBuffer = UMLArrows.class.getDeclaredField("fieldBuffer"); fieldBuffer.setAccessible(true); StringBuffer currentBuffer = (StringBuffer) fieldBuffer.get(arrows); String newBuffer = (currentBuffer.toString() + toAdd); arrows.addToFieldBuffer(toAdd); assertEquals(newBuffer, fieldBuffer.get(arrows).toString()); }
@Test public void testaddMethodToBuffer() throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException { UMLArrows arrows = UMLArrows.getInstance(); Field whitelist = WorkerForArrows.class.getDeclaredField("whitelist"); whitelist.setAccessible(true); ArrayList<String> whitelistv1 = new ArrayList<String>(Arrays.asList("java_lang_Object")); whitelist.set(arrows, whitelistv1); Field methodbuffer = UMLArrows.class.getDeclaredField("methodBuffer"); methodbuffer.setAccessible(true); methodbuffer.set(arrows, new StringBuffer()); arrows.addMethodToBuffer(Opcodes.ACC_PUBLIC, "test", "()Ljava/lang/Object;"); assertEquals("+test([]) : java_lang_Object\\l ", methodbuffer.get(arrows).toString()); }
@Test public void testsetSuperSpecial() throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException { UMLArrows arrows = UMLArrows.getInstance(); Field whitelist = WorkerForArrows.class.getDeclaredField("whitelist"); whitelist.setAccessible(true); ArrayList<String> whitelistv1 = new ArrayList<String>(Arrays.asList("#$%^&*(<>?:\"{}';'")); whitelist.set(arrows, whitelistv1); Field supers = UMLArrows.class.getDeclaredField("supers"); supers.setAccessible(true); // We must avoid having the stripper from touching this string String theSuper = "#$%^&*(<>?:\"{}';'"; arrows.setSuper(theSuper); assertEquals(theSuper, supers.get(arrows)); }
@Test public void testJComponentForCompositeLeaf() throws IOException, NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException { UMLArrows arrows = UMLArrows.getInstance(); CompositeDetector detect = new CompositeDetector("red", "purple"); Field detector = UMLArrows.class.getDeclaredField("detectors"); detector.setAccessible(true); Field classesField = UMLArrows.class.getDeclaredField("classes"); classesField.setAccessible(true); ArrayList<PatternDetector> pattern = new ArrayList<PatternDetector>(); pattern.add(detect); detector.set(arrows, pattern); // Field classesField = UMLArrows.class.getDeclaredField("classes"); // classesField.setAccessible(true); String[] testString = new String[3]; testString[0] = "java.awt.Component"; testString[1] = "java.awt.Container"; testString[2] = "javax.swing.JComponent"; DesignParser.makeUML(testString); ArrayList<ClassContainer> classes = (ArrayList<ClassContainer>) classesField.get(arrows); for (ClassContainer cls : classes) { if (cls.getClassName().equals("javax_swing_JComponent")) { assertTrue(cls.getLabel().contains("Leaf")); } } }
@Test public void testaddUses() throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException { UMLArrows arrows = UMLArrows.getInstance(); Field whitelist = WorkerForArrows.class.getDeclaredField("whitelist"); whitelist.setAccessible(true); ArrayList<String> whitelistv1 = new ArrayList<String>(Arrays.asList("int", "double", "byte")); whitelist.set(arrows, whitelistv1); Field uses = UMLArrows.class.getDeclaredField("uses"); uses.setAccessible(true); uses.set(arrows, new ArrayList<String>()); ArrayList<String> usesarray = new ArrayList<String>(Arrays.asList("int", "double", "byte")); String desc = "(IDB)Ljava/lang/Object"; arrows.addUses(desc); assertEquals(usesarray, uses.get(arrows)); }
@SuppressWarnings("unchecked") @Test public void testaddUseEmptyString() throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException { UMLArrows arrows = UMLArrows.getInstance(); Field whitelist = WorkerForArrows.class.getDeclaredField("whitelist"); whitelist.setAccessible(true); ArrayList<String> whitelistv1 = new ArrayList<String>(Arrays.asList("")); whitelist.set(arrows, whitelistv1); Field uses = UMLArrows.class.getDeclaredField("uses"); uses.setAccessible(true); ArrayList<String> usesarray = (ArrayList<String>) uses.get(arrows); String toAdd = ""; usesarray.add(toAdd); arrows.addUse(toAdd); assertEquals(usesarray, uses.get(arrows)); }
@SuppressWarnings("unchecked") @Test public void testaddInterfaceNumerics() throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException { UMLArrows arrows = UMLArrows.getInstance(); Field whitelist = WorkerForArrows.class.getDeclaredField("whitelist"); whitelist.setAccessible(true); ArrayList<String> whitelistv1 = new ArrayList<String>(Arrays.asList("0937240432")); whitelist.set(arrows, whitelistv1); Field interfaces = UMLArrows.class.getDeclaredField("interfaces"); interfaces.setAccessible(true); ArrayList<String> interfacesarray = (ArrayList<String>) interfaces.get(arrows); String toAdd = "0937240432"; interfacesarray.add(toAdd); arrows.addInterface(toAdd); assertEquals(interfacesarray, interfaces.get(arrows)); }
@Test public void testaddFieldDescObject() throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException { UMLArrows arrows = UMLArrows.getInstance(); Field whitelist = WorkerForArrows.class.getDeclaredField("whitelist"); whitelist.setAccessible(true); ArrayList<String> whitelistv1 = new ArrayList<String>(Arrays.asList("java_lang_Object")); whitelist.set(arrows, whitelistv1); Field fields = UMLArrows.class.getDeclaredField("fields"); fields.setAccessible(true); ArrayList<String> fieldsarray = new ArrayList<String>(); fields.set(arrows, new ArrayList<String>()); // We must avoid having the stripper from touching this string String toAdd = "java_lang_Object"; String desc = "Ljava/lang/Object;"; int access = Opcodes.ACC_PUBLIC; fieldsarray.add(toAdd); arrows.addFieldDesc(desc, access); assertEquals(fieldsarray, fields.get(arrows)); }
@Test public void testresetUMLArrowsValues() throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException { UMLArrows arrows = UMLArrows.getInstance(); // Get the fields // //Whitelist is not reset in Reset Arrows, since it is consistent // //between all class in UML // Field whitelist = // WorkerForArrows.class.getDeclaredField("whitelist"); // whitelist.setAccessible(true); Field supers = UMLArrows.class.getDeclaredField("supers"); supers.setAccessible(true); Field interfaces = UMLArrows.class.getDeclaredField("interfaces"); interfaces.setAccessible(true); Field uses = UMLArrows.class.getDeclaredField("uses"); uses.setAccessible(true); Field fields = UMLArrows.class.getDeclaredField("fields"); fields.setAccessible(true); // Set the values // whitelist.set(arrows,new ArrayList<String>(Arrays.asList( // "String", "cóol", "Understood"))); supers.set(arrows, "This is a cool String"); interfaces.set( arrows, new ArrayList<String>(Arrays.asList("Looks interesting", "cóol", "Understood"))); uses.set(arrows, new ArrayList<String>(Arrays.asList("String", "cóol", "Testing123"))); fields.set(arrows, new ArrayList<String>(Arrays.asList("Helllllo", "cóol", "Mic Check?"))); // Reset arrows.resetUMLArrows(); // Test // assertEquals(whitelist.get(arrows), new ArrayList<String>()); assertEquals("", supers.get(arrows)); assertEquals(new ArrayList<String>(), interfaces.get(arrows)); assertEquals(new ArrayList<String>(), uses.get(arrows)); assertEquals(new ArrayList<String>(), fields.get(arrows)); }
@Test public void testresetUMLArrows() throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException { int classesSize; UMLArrows arrows = UMLArrows.getInstance(); Field currentClass = UMLArrows.class.getDeclaredField("currentClass"); currentClass.setAccessible(true); classesSize = arrows.getClasses().size(); arrows.setCurrentClass("DecoratorDetector"); assertEquals(0, classesSize); ClassContainer curClass = (ClassContainer) currentClass.get(arrows); arrows.setCurrentClass("DecoratorDetector"); classesSize = arrows.getClasses().size(); assertEquals(1, classesSize); assertEquals(curClass, arrows.getClasses().get(0)); }
// private final ByteArrayOutputStream outContent = new ByteArrayOutputStream(); // private final ByteArrayOutputStream errContent = new ByteArrayOutputStream(); // // @Before // public void setUpStreams() { // System.setOut(new PrintStream(outContent)); // System.setErr(new PrintStream(errContent)); // } // // @After // public void cleanUpStreams() { // System.setOut(null); // System.setErr(null); // } // @Test public void testContainerForComposite() throws IOException, NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException { UMLArrows arrows = UMLArrows.getInstance(); CompositeDetector detect = new CompositeDetector("red", "purple"); Field detector = UMLArrows.class.getDeclaredField("detectors"); detector.setAccessible(true); ArrayList<PatternDetector> pattern = new ArrayList<PatternDetector>(); pattern.add(detect); detector.set(arrows, pattern); String[] testString = new String[3]; testString[0] = "java.awt.Component"; testString[1] = "javax.swing.JComponent"; testString[2] = "java.awt.Container"; DesignParser.makeUML(testString); assertEquals(true, detect.isDetected()); }
@Test public void testgetInstance() { assertEquals("UMLArrows", (UMLArrows.getInstance().getClass().getSimpleName())); }
@Test public void testgetSameInstance() { UMLArrows arrows = UMLArrows.getInstance(); // == used to test if it is the same Instance. assertTrue(arrows == UMLArrows.getInstance()); }