/* * Beanfabrics Framework Copyright (C) by Michael Karneim, beanfabrics.org * Use is subject to license terms. See license.txt. */ package org.beanfabrics.model; import static org.junit.Assert.assertEquals; import javax.swing.Icon; import javax.swing.ImageIcon; import junit.framework.JUnit4TestAdapter; import org.beanfabrics.validation.ValidationRule; import org.beanfabrics.validation.ValidationState; import org.junit.Before; import org.junit.Test; /** * @author Michael Karneim */ public class AbstractOperationPMTest { public static junit.framework.Test suite() { return new JUnit4TestAdapter(AbstractOperationPMTest.class); } public AbstractOperationPMTest() { } @Before public void setUp() throws Exception { util = new Util(); } private Util util; private static class Util { public AbstractOperationPM createAbstractOperation() { AbstractOperationPM op = new AbstractOperationPM() { @Override public boolean execute() throws Throwable { return true; // success } }; return op; } } @Test public void create() { util.createAbstractOperation(); } @Test public void execute() throws Throwable { final boolean[] didInvoke = new boolean[1]; AbstractOperationPM op = new AbstractOperationPM() { public boolean execute() { didInvoke[0] = true; return true; // success } }; op.execute(); assertEquals("didInvoke[0]", true, didInvoke[0]); } @Test public void validate() throws Throwable { AbstractOperationPM op = util.createAbstractOperation(); op.getValidator().add(new ValidationRule() { public ValidationState validate() { return new ValidationState("give up"); } }); assertEquals("op.isEnabled()", false, op.isEnabled()); } @Test public void validateInsideCell() throws Throwable { class MyModel extends AbstractPM { AbstractOperationPM op = util.createAbstractOperation(); final TextPM t = new TextPM(); public MyModel() { PMManager.setup(this); } } final MyModel model = new MyModel(); model.op.getValidator().add(new ValidationRule() { public ValidationState validate() { if (model.t.getText().equals("open sesame")) { return null; } else { return new ValidationState("type in 'open sesame'"); } } }); assertEquals("op.isEnabled()", false, model.op.isEnabled()); model.t.setText("open sesame"); assertEquals("op.isEnabled()", true, model.op.isEnabled()); } @Test public void getIcon_v1() { AbstractOperationPM op = util.createAbstractOperation(); assertEquals("op.getIcon()", null, op.getIcon()); } @Test public void getIcon_v2() { AbstractOperationPM op = util.createAbstractOperation(); Icon icon = new ImageIcon(); op.setIcon(icon); assertEquals("op.getIcon()", icon, op.getIcon()); } }