[Buix-commits] r1534 - in trunk/guix-compiler-swing/src: main/java/org/nuiton/guix/generator test/java/org/nuiton/guix test/java/org/nuiton/guix/generator
Author: kmorin Date: 2009-07-28 12:02:13 +0200 (Tue, 28 Jul 2009) New Revision: 1534 Added: trunk/guix-compiler-swing/src/test/java/org/nuiton/guix/generator/ trunk/guix-compiler-swing/src/test/java/org/nuiton/guix/generator/SwingGeneratorTest.java Modified: trunk/guix-compiler-swing/src/main/java/org/nuiton/guix/generator/SwingGenerator.java trunk/guix-compiler-swing/src/test/java/org/nuiton/guix/SwingEventHandlerTest.java Log: add not null conditions + tests for the binding generation Modified: trunk/guix-compiler-swing/src/main/java/org/nuiton/guix/generator/SwingGenerator.java =================================================================== --- trunk/guix-compiler-swing/src/main/java/org/nuiton/guix/generator/SwingGenerator.java 2009-07-28 10:02:01 UTC (rev 1533) +++ trunk/guix-compiler-swing/src/main/java/org/nuiton/guix/generator/SwingGenerator.java 2009-07-28 10:02:13 UTC (rev 1534) @@ -50,65 +50,69 @@ */ @Override public JavaFile generate() { - String gmoClassName = gmo.getClassDescriptor().getName(); - File out = new File(destDir, gmoClassName + ".java"); - File outAbstract = new File(destDir, gmoClassName + "Abstract.java"); - File outImpl = new File(destDir, gmoClassName + "Impl.java"); + try { + String gmoClassName = gmo.getClassDescriptor().getName(); + File out = new File(destDir, gmoClassName + ".java"); + File outAbstract = new File(destDir, gmoClassName + "Abstract.java"); + File outImpl = new File(destDir, gmoClassName + "Impl.java"); - if (lastModification > out.lastModified()) { - try { - if (log.isInfoEnabled()) { - log.info("Generation of " + gmo.getClassDescriptor().getName()); - } - if (!out.exists()) { - try { - out.createNewFile(); - outAbstract.createNewFile(); - outImpl.createNewFile(); + if (lastModification > out.lastModified()) { + try { + if (log.isInfoEnabled()) { + log.info("Generation of " + gmo.getClassDescriptor().getName()); } - catch (IOException ex) { - log.error(ex); + if (!out.exists()) { + try { + out.createNewFile(); + outAbstract.createNewFile(); + outImpl.createNewFile(); + } + catch (IOException ex) { + log.error(ex); + } } - } - SwingInterfaceGenerator sing = new SwingInterfaceGenerator(gmo, classes); - SwingAbstractClassGenerator sacg = new SwingAbstractClassGenerator(gmo, classes); - SwingImplementationGenerator simg = new SwingImplementationGenerator(gmo, classes); + SwingInterfaceGenerator sing = new SwingInterfaceGenerator(gmo, classes); + SwingAbstractClassGenerator sacg = new SwingAbstractClassGenerator(gmo, classes); + SwingImplementationGenerator simg = new SwingImplementationGenerator(gmo, classes); - sing.generate(); - generators.put(sing, out); - JavaFile jf = sacg.generate(); - generators.put(sacg, outAbstract); - simg.generate(); - generators.put(simg, outImpl); + sing.generate(); + generators.put(sing, out); + JavaFile jf = sacg.generate(); + generators.put(sacg, outAbstract); + simg.generate(); + generators.put(simg, outImpl); - if (mainClass) { - SwingMainClassGenerator smcg = new SwingMainClassGenerator(gmo); - File outMain = new File(destDir, launcherName + ".java"); - smcg.generate(outMain); - } + if (mainClass) { + SwingMainClassGenerator smcg = new SwingMainClassGenerator(gmo); + File outMain = new File(destDir, launcherName + ".java"); + smcg.generate(outMain); + } - serializer.startTag("", "bean"); - serializer.attribute("", "id", gmoClassName.replace(out.getName().charAt(0), - Character.toLowerCase(out.getName().charAt(0)))).attribute("", "class", gmoClassName + "Impl").attribute("", "singleton", "false").endTag("", "bean"); + serializer.startTag("", "bean"); + serializer.attribute("", "id", gmoClassName.replace(out.getName().charAt(0), + Character.toLowerCase(out.getName().charAt(0)))).attribute("", "class", gmoClassName + "Impl").attribute("", "singleton", "false").endTag("", "bean"); - setBindingsToGenerate(sacg.getBindings2Generate()); + setBindingsToGenerate(sacg.getBindings2Generate()); - return jf; + return jf; + } + catch (IllegalArgumentException ex) { + log.error(ex); + } + catch (IllegalStateException ex) { + log.error(ex); + } + catch (IOException ex) { + log.error(ex); + } } - catch (IllegalArgumentException ex) { - log.error(ex); + else if (log.isWarnEnabled()) { + log.warn(gmo.getClassDescriptor().getName() + " has already been generated and is up to date."); } - catch (IllegalStateException ex) { - log.error(ex); - } - catch (IOException ex) { - log.error(ex); - } } - else if (log.isWarnEnabled()) { - log.warn(gmo.getClassDescriptor().getName() + " has already been generated and is up to date."); + finally { + return null; } - return null; } @Override @@ -121,6 +125,10 @@ @Override public List<Class> generateBindings(StringBuffer dbCreation, StringBuffer dbDeletion, TagHandler prevTh, JavaFile jf, Class clazz, String[] binding, int i, List<String> alreadyChecked, String methodToInvoke, Map<GuixGenerator,JavaFile> generatedFiles) { + if(dbCreation == null || dbDeletion == null || binding == null || (jf == null && clazz ==null) + || methodToInvoke == null || generatedFiles == null || i < 0) { + return null; + } //does the attribute or method to bind exists ? boolean bindingExists = false; //the return type of the binding @@ -393,12 +401,20 @@ alreadyChecked = new ArrayList<String>(); } alreadyChecked.add(getter); - //if it is not the last element of the binding - if(i + 1 < binding.length) { - result.addAll(generateBindings(dbCreation, dbDeletion, th, nextFile, nextClazz, binding, i+1, alreadyChecked, methodToInvoke, generatedFiles)); + try { + //if it is not the last element of the binding + if(i + 1 < binding.length) { + result.addAll(generateBindings(dbCreation, dbDeletion, th, nextFile, nextClazz, binding, i+1, alreadyChecked, methodToInvoke, generatedFiles)); + } + if(listener == null) { + return null; + } + if(!result.contains(listener)) { + result.add(listener); + } } - if(!result.contains(listener)) { - result.add(listener); + catch(NullPointerException eee) { + return null; } } else if(log.isErrorEnabled()) { Modified: trunk/guix-compiler-swing/src/test/java/org/nuiton/guix/SwingEventHandlerTest.java =================================================================== --- trunk/guix-compiler-swing/src/test/java/org/nuiton/guix/SwingEventHandlerTest.java 2009-07-28 10:02:01 UTC (rev 1533) +++ trunk/guix-compiler-swing/src/test/java/org/nuiton/guix/SwingEventHandlerTest.java 2009-07-28 10:02:13 UTC (rev 1534) @@ -35,6 +35,7 @@ */ public class SwingEventHandlerTest { + /** log */ Log log = LogFactory.getLog(SwingEventHandlerTest.class); /** @@ -44,11 +45,15 @@ public void testAddEvent() { SwingEventHandler seh = new SwingEventHandler(); try { + //null parameters return false assertFalse(seh.addEvent(null, "", "")); assertFalse(seh.addEvent(JComponent.class, null, "")); assertFalse(seh.addEvent(JComponent.class, "", null)); + //tests a basic adding assertTrue(seh.addEvent(JComponent.class, "propertyChange", "test1")); + //tests the adding of some different code for the same event assertTrue(seh.addEvent(JComponent.class, "propertyChange", "test2")); + //tests an unknown event assertFalse(seh.addEvent(JComponent.class, "azerty", "")); } catch (IntrospectionException eee) { @@ -65,10 +70,19 @@ public void testGenerate() { SwingEventHandler seh = new SwingEventHandler(); try { + //tests a basic generation without any added event + assertNotNull(seh.generate("object")); assertNotNull(seh.generate("")); + assertNotNull(seh.generate(null)); + assertEquals(seh.generate("object"), ""); assertEquals(seh.generate(""), ""); + assertEquals(seh.generate(null), ""); + //adds an event seh.addEvent(JComponent.class, "propertyChange", ""); + //tests that something is generated + assertTrue(seh.generate("object").length() > 0); assertTrue(seh.generate("").length() > 0); + assertTrue(seh.generate(null).length() > 0); } catch (IntrospectionException eee) { if(log.isErrorEnabled()) { Added: trunk/guix-compiler-swing/src/test/java/org/nuiton/guix/generator/SwingGeneratorTest.java =================================================================== --- trunk/guix-compiler-swing/src/test/java/org/nuiton/guix/generator/SwingGeneratorTest.java (rev 0) +++ trunk/guix-compiler-swing/src/test/java/org/nuiton/guix/generator/SwingGeneratorTest.java 2009-07-28 10:02:13 UTC (rev 1534) @@ -0,0 +1,144 @@ +/** + * *##% guix-compiler-gwt + * Copyright (C) 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%* + */ +package org.nuiton.guix.generator; + +import java.beans.PropertyChangeListener; +import java.lang.reflect.Modifier; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import javax.swing.JToggleButton; +import javax.swing.event.ChangeListener; +import org.junit.Assert; +import org.junit.Test; +import org.nuiton.guix.SwingGuixInitializer; +import org.nuiton.guix.tags.swing.ToggleButtonHandler; + +/** + * + * @author kmorin + */ +public class SwingGeneratorTest { + @Test + public void testGenerate() { + SwingGenerator sg = new SwingGenerator(); + Assert.assertNull(sg.generate()); + } + + @Test + public void testGenerateBinding() { + SwingGuixInitializer.initialize(); + SwingGenerator sg = new SwingGenerator(); + //tests the not null condition for the parameters that needs to be not null + Assert.assertNull(sg.generateBindings(null, new StringBuffer(), null, null, Class.class, new String[0], 0, null, "", new HashMap<GuixGenerator, JavaFile>())); + Assert.assertNull(sg.generateBindings(new StringBuffer(), null, null, null, Class.class, new String[0], 0, null, "", new HashMap<GuixGenerator, JavaFile>())); + Assert.assertNull(sg.generateBindings(new StringBuffer(), new StringBuffer(), null, null, Class.class, null, 0, null, "", new HashMap<GuixGenerator, JavaFile>())); + Assert.assertNull(sg.generateBindings(new StringBuffer(), new StringBuffer(), null, null, Class.class, new String[0], -1, null, "", new HashMap<GuixGenerator, JavaFile>())); + Assert.assertNull(sg.generateBindings(new StringBuffer(), new StringBuffer(), null, null, Class.class, new String[0], -1, null, "", new HashMap<GuixGenerator, JavaFile>())); + Assert.assertNull(sg.generateBindings(new StringBuffer(), new StringBuffer(), null, null, Class.class, new String[0], 0, null, null, new HashMap<GuixGenerator, JavaFile>())); + Assert.assertNull(sg.generateBindings(new StringBuffer(), new StringBuffer(), null, null, Class.class, new String[0], 0, null, "", null)); + Assert.assertNull(sg.generateBindings(new StringBuffer(), new StringBuffer(), null, null, null, new String[0], 0, null, "", new HashMap<GuixGenerator, JavaFile>())); + + //tests with a class parameter not null + //tests without TagHandlers + List<Class> l = sg.generateBindings(new StringBuffer(), new StringBuffer(), null, null, JToggleButton.class, new String[]{"isSelected()"}, 0, null, "", new HashMap<GuixGenerator, JavaFile>()); + Assert.assertNotNull(l); + Assert.assertEquals(l.size(), 1); + Assert.assertNotNull(l.get(0)); + Assert.assertEquals(l.get(0), PropertyChangeListener.class); + //tests a successful generation with a method as a binding + l = sg.generateBindings(new StringBuffer(), new StringBuffer(), new ToggleButtonHandler(), null, JToggleButton.class, new String[]{"isSelected()"}, 0, null, "", new HashMap<GuixGenerator, JavaFile>()); + Assert.assertNotNull(l); + Assert.assertEquals(l.size(), 1); + Assert.assertNotNull(l.get(0)); + Assert.assertEquals(l.get(0), ChangeListener.class); + //tests a successful generation with an attribute as a binding + l = sg.generateBindings(new StringBuffer(), new StringBuffer(), new ToggleButtonHandler(), null, JToggleButton.class, new String[]{"selected"}, 0, null, "", new HashMap<GuixGenerator, JavaFile>()); + Assert.assertNotNull(l); + Assert.assertEquals(l.size(), 1); + Assert.assertNotNull(l.get(0)); + Assert.assertEquals(l.get(0), ChangeListener.class); + + //tests with a javafile parameter not null + //tests if the result is null without the taghandler associated to the field + JavaFile jf = new JavaFile(); + jf.addField(new JavaField(Modifier.PRIVATE, "javax.swing.JToggleButton", "button", null)); + jf.addMethod(new JavaMethod(Modifier.PUBLIC, "javax.swing.JToggleButton", "getButton", null, null, "", null)); + l = sg.generateBindings(new StringBuffer(), new StringBuffer(), null, jf, null, new String[]{"getButton()", "isSelected()"}, 0, null, "", new HashMap<GuixGenerator, JavaFile>()); + Assert.assertNotNull(l); + Assert.assertEquals(l.size(), 1); + Assert.assertNotNull(l.get(0)); + Assert.assertEquals(l.get(0), PropertyChangeListener.class); + + //tests a successful generation with a method as a binding + jf = new JavaFile(); + jf.addField(new JavaField(Modifier.PRIVATE, "javax.swing.JToggleButton", "button", null, new ToggleButtonHandler())); + jf.addMethod(new JavaMethod(Modifier.PUBLIC, "javax.swing.JToggleButton", "getButton", null, null, "", null)); + l = sg.generateBindings(new StringBuffer(), new StringBuffer(), null, jf, null, new String[]{"getButton()", "isSelected()"}, 0, null, "", new HashMap<GuixGenerator, JavaFile>()); + Assert.assertNotNull(l); + Assert.assertEquals(l.size(), 2); + Assert.assertNotNull(l.get(0)); + Assert.assertEquals(l.get(0), ChangeListener.class); + Assert.assertNotNull(l.get(1)); + Assert.assertEquals(l.get(1), PropertyChangeListener.class); + //tests a successful generation with an attribute as a binding + l = sg.generateBindings(new StringBuffer(), new StringBuffer(), null, jf, null, new String[]{"button","selected"}, 0, null, "", new HashMap<GuixGenerator, JavaFile>()); + Assert.assertNotNull(l); + Assert.assertEquals(l.size(), 2); + Assert.assertNotNull(l.get(0)); + Assert.assertEquals(l.get(0), ChangeListener.class); + Assert.assertNotNull(l.get(1)); + Assert.assertEquals(l.get(1), PropertyChangeListener.class); + + //tests with a javafile parameter not null with an attribute whose type is another generated file + //tests if the result is null without the taghandler associated to the field + jf = new JavaFile(); + jf.addField(new JavaField(Modifier.PRIVATE, "test.Test", "test", null)); + jf.addMethod(new JavaMethod(Modifier.PUBLIC, "test.Test", "getTest", null, null, "", null)); + JavaFile jf2 = new JavaFile(Modifier.PUBLIC, 0, "test", "Test", null, null); + jf2.addField(new JavaField(Modifier.PRIVATE, "javax.swing.JToggleButton", "button", null)); + jf2.addMethod(new JavaMethod(Modifier.PUBLIC, "javax.swing.JToggleButton", "getButton", null, null, "", null)); + Assert.assertNull(sg.generateBindings(new StringBuffer(), new StringBuffer(), null, jf, null, new String[]{"getTest()","getButton()","isSelected()"}, 0, null, "", new HashMap<GuixGenerator, JavaFile>())); + //test without jf2 in the map of generators with JavaFile + jf2 = new JavaFile(Modifier.PUBLIC, 0, "test", "Test", null, null); + jf2.addField(new JavaField(Modifier.PRIVATE, "javax.swing.JToggleButton", "button", null, new ToggleButtonHandler())); + jf2.addMethod(new JavaMethod(Modifier.PUBLIC, "javax.swing.JToggleButton", "getButton", null, null, "", null)); + Assert.assertNull(sg.generateBindings(new StringBuffer(), new StringBuffer(), null, jf, null, new String[]{"getTest()","getButton()","isSelected()"}, 0, null, "", new HashMap<GuixGenerator, JavaFile>())); + Map<GuixGenerator,JavaFile> map = new HashMap<GuixGenerator, JavaFile>(); + map.put(sg, jf2); + //tests a successful generation with a method as a binding + l = sg.generateBindings(new StringBuffer(), new StringBuffer(), null, jf, null, new String[]{"getTest()","getButton()", "isSelected()"}, 0, null, "", map); + Assert.assertNotNull(l); + Assert.assertEquals(l.size(), 2); + Assert.assertNotNull(l.get(0)); + Assert.assertEquals(l.get(0), ChangeListener.class); + //the PropertyChangeListener is recorded only once + Assert.assertNotNull(l.get(1)); + Assert.assertEquals(l.get(1), PropertyChangeListener.class); + //tests a successful generation with an attribute as a binding + l = sg.generateBindings(new StringBuffer(), new StringBuffer(), null, jf, null, new String[]{"test","button","selected"}, 0, null, "", map); + Assert.assertNotNull(l); + Assert.assertEquals(l.size(), 2); + Assert.assertNotNull(l.get(0)); + Assert.assertEquals(l.get(0), ChangeListener.class); + //the PropertyChangeListener is recorded only once + Assert.assertNotNull(l.get(1)); + Assert.assertEquals(l.get(1), PropertyChangeListener.class); + } +}
participants (1)
-
kmorin@users.labs.libre-entreprise.org