/* * (c) Copyright 2010-2011 AgileBirds * * This file is part of OpenFlexo. * * OpenFlexo is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * OpenFlexo 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 Public License for more details. * * You should have received a copy of the GNU General Public License * along with OpenFlexo. If not, see <http://www.gnu.org/licenses/>. * */ package org.openflexo.foundation.dm; import javax.naming.InvalidNameException; import org.openflexo.foundation.FlexoEditor; import org.openflexo.foundation.FlexoTestCase; import org.openflexo.foundation.ie.IEWOComponent; import org.openflexo.foundation.ie.cl.FlexoComponentFolder; import org.openflexo.foundation.ie.cl.action.AddComponent; import org.openflexo.toolbox.FileUtils; public class TestBinding extends FlexoDMTestCase { public TestBinding(String arg0) { super(arg0); } public void test0Binding() { FlexoEditor editor = createProject("BindingTest"); FlexoComponentFolder _cf = FlexoTestCase.createFolder("BindingTestFolder", null, editor); IEWOComponent component = FlexoTestCase.createComponent("BindingTestComponent", _cf, AddComponent.ComponentType.OPERATION_COMPONENT, editor); DMProperty testProperty = createProperty(component.getComponentDMEntity(), "testProperty", editor); component.getComponentDMEntity().setBindable(testProperty, true); try { testProperty.setName("changedName"); } catch (InvalidNameException e) { e.printStackTrace(); fail(); } catch (DuplicatePropertyNameException e) { e.printStackTrace(); fail(); } assertTrue(component.getComponentDMEntity().isBindable(testProperty)); component.getComponentDMEntity().setBindable(testProperty, false); assertFalse(component.getComponentDMEntity().isSettable(testProperty)); assertFalse(component.getComponentDMEntity().isMandatory(testProperty)); try { testProperty.setName("changedName2"); } catch (InvalidNameException e) { e.printStackTrace(); fail(); } catch (DuplicatePropertyNameException e) { e.printStackTrace(); fail(); } assertFalse(component.getComponentDMEntity().isBindable(testProperty)); assertFalse(component.getComponentDMEntity().isSettable(testProperty)); assertFalse(component.getComponentDMEntity().isMandatory(testProperty)); component.getComponentDMEntity().setMandatory(testProperty, true); try { testProperty.setName("changedName3"); } catch (InvalidNameException e) { e.printStackTrace(); fail(); } catch (DuplicatePropertyNameException e) { e.printStackTrace(); fail(); } assertTrue(component.getComponentDMEntity().isMandatory(testProperty)); assertTrue(component.getComponentDMEntity().isBindable(testProperty)); assertFalse(component.getComponentDMEntity().isSettable(testProperty)); component.getComponentDMEntity().setMandatory(testProperty, false); try { testProperty.setName("changedName4"); } catch (InvalidNameException e) { e.printStackTrace(); fail(); } catch (DuplicatePropertyNameException e) { e.printStackTrace(); fail(); } assertTrue(component.getComponentDMEntity().isBindable(testProperty)); assertFalse(component.getComponentDMEntity().isSettable(testProperty)); assertFalse(component.getComponentDMEntity().isMandatory(testProperty)); component.getComponentDMEntity().setSettable(testProperty, true); try { testProperty.setName("changedName"); } catch (InvalidNameException e) { e.printStackTrace(); fail(); } catch (DuplicatePropertyNameException e) { e.printStackTrace(); fail(); } assertTrue(component.getComponentDMEntity().isSettable(testProperty)); assertTrue(component.getComponentDMEntity().isBindable(testProperty)); assertFalse(component.getComponentDMEntity().isMandatory(testProperty)); try { testProperty.setName("changedName2"); } catch (InvalidNameException e) { e.printStackTrace(); fail(); } catch (DuplicatePropertyNameException e) { e.printStackTrace(); fail(); } assertTrue(component.getComponentDMEntity().isBindable(testProperty)); assertTrue(component.getComponentDMEntity().isSettable(testProperty)); assertFalse(component.getComponentDMEntity().isMandatory(testProperty)); saveProject(editor.getProject()); editor.getProject().close(); editor = reloadProject(editor.getProject().getProjectDirectory()); _cf = editor.getProject().getFlexoComponentLibrary().getFlexoComponentFolderWithName("BindingTestFolder"); component = _cf.getComponentNamed("BindingTestComponent").getWOComponent(); assertNotNull(component); testProperty = component.getComponentDMEntity().getProperty("changedName2"); assertNotNull(testProperty); component.getComponentDMEntity().setSettable(testProperty, true); assertTrue(component.getComponentDMEntity().isSettable(testProperty)); assertTrue(component.getComponentDMEntity().isBindable(testProperty)); assertFalse(component.getComponentDMEntity().isMandatory(testProperty)); editor.getProject().close(); editor = reloadProject(editor.getProject().getProjectDirectory()); _cf = editor.getProject().getFlexoComponentLibrary().getFlexoComponentFolderWithName("BindingTestFolder"); component = _cf.getComponentNamed("BindingTestComponent").getWOComponent(); assertNotNull(component); testProperty = component.getComponentDMEntity().getProperty("changedName2"); assertNotNull(testProperty); assertTrue(component.getComponentDMEntity().isBindable(testProperty)); assertTrue(component.getComponentDMEntity().isSettable(testProperty)); assertFalse(component.getComponentDMEntity().isMandatory(testProperty)); component = _cf.getComponentNamed("BindingTestComponent").getWOComponent(); assertNotNull(component); testProperty = component.getComponentDMEntity().getProperty("changedName2"); assertNotNull(testProperty); assertTrue(component.getComponentDMEntity().isSettable(testProperty)); assertTrue(component.getComponentDMEntity().isBindable(testProperty)); assertFalse(component.getComponentDMEntity().isMandatory(testProperty)); component.getComponentDMEntity().setMandatory(testProperty, true); assertTrue(component.getComponentDMEntity().isSettable(testProperty)); assertTrue(component.getComponentDMEntity().isBindable(testProperty)); assertTrue(component.getComponentDMEntity().isMandatory(testProperty)); saveProject(editor.getProject()); editor.getProject().close(); editor = reloadProject(editor.getProject().getProjectDirectory()); _cf = editor.getProject().getFlexoComponentLibrary().getFlexoComponentFolderWithName("BindingTestFolder"); component = _cf.getComponentNamed("BindingTestComponent").getWOComponent(); assertNotNull(component); testProperty = component.getComponentDMEntity().getProperty("changedName2"); assertNotNull(testProperty); assertTrue(component.getComponentDMEntity().isSettable(testProperty)); assertTrue(component.getComponentDMEntity().isBindable(testProperty)); assertTrue(component.getComponentDMEntity().isMandatory(testProperty)); editor.getProject().close(); FileUtils.deleteDir(editor.getProject().getProjectDirectory()); } }