blob: 6f1b4a2bcb50790157913850538c7c65105fda55 [file] [log] [blame]
/**
* Copyright (c) 2012, 2015 - Lunifera GmbH (Austria), Loetz GmbH&Co.KG and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Florian Pirchner - initial API and implementation
*/
package org.eclipse.osbp.ecview.core.ui.common.tests.editparts.emf;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertTrue;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.eclipse.osbp.ecview.core.common.context.ViewContext;
import org.eclipse.osbp.ecview.core.common.editpart.DelegatingEditPartManager;
import org.eclipse.osbp.ecview.core.common.editpart.IFieldEditpart;
import org.eclipse.osbp.ecview.core.common.editpart.ILayoutEditpart;
import org.eclipse.osbp.ecview.core.common.editpart.validation.IValidatorEditpart;
import org.eclipse.osbp.ecview.core.common.model.core.CoreModelFactory;
import org.eclipse.osbp.ecview.core.common.model.core.YField;
import org.eclipse.osbp.ecview.core.common.model.core.YLayout;
import org.eclipse.osbp.ecview.core.common.model.validation.ValidationFactory;
import org.eclipse.osbp.ecview.core.common.model.validation.ValidationPackage;
import org.eclipse.osbp.ecview.core.common.model.validation.YMinLengthValidator;
import org.eclipse.osbp.runtime.common.dispose.IDisposable;
/**
* Tests the ui field edit part.
*
* @author admin
*
*/
@SuppressWarnings("restriction")
public class FieldEditpartTest {
private DelegatingEditPartManager editpartManager = DelegatingEditPartManager
.getInstance();
private CoreModelFactory modelFactory = CoreModelFactory.eINSTANCE;
/**
* Setup.
*/
@Before
public void setup() {
editpartManager.clear();
editpartManager
.addDelegate(new org.eclipse.osbp.ecview.core.common.editpart.emf.EditpartManager());
editpartManager
.addDelegate(new org.eclipse.osbp.ecview.core.extension.editpart.emf.EditpartManager());
}
/**
* Tests the disposal.
*/
@Test
// BEGIN SUPRESS CATCH EXCEPTION
public void test_dispose() {
// END SUPRESS CATCH EXCEPTION
// ...> yLayout1
// ......> yField1
ViewContext context = new ViewContext();
YField yField1 = modelFactory.createYField();
IFieldEditpart field1Editpart = editpartManager.getEditpart(context, yField1);
Assert.assertFalse(field1Editpart.isDisposed());
field1Editpart.dispose();
Assert.assertTrue(field1Editpart.isDisposed());
field1Editpart.isDisposed();
field1Editpart.dispose();
try {
field1Editpart.addDisposeListener(new IDisposable.Listener() {
@Override
public void notifyDisposed(IDisposable notifier) {
}
});
Assert.fail();
// BEGIN SUPRESS CATCH EXCEPTION
} catch (Exception e) {
// END SUPRESS CATCH EXCEPTION
// expected
}
try {
field1Editpart.getId();
Assert.fail();
// BEGIN SUPRESS CATCH EXCEPTION
} catch (Exception e) {
// END SUPRESS CATCH EXCEPTION
// expected
}
try {
field1Editpart.getModel();
Assert.fail();
// BEGIN SUPRESS CATCH EXCEPTION
} catch (Exception e) {
// END SUPRESS CATCH EXCEPTION
// expected
}
try {
field1Editpart.getParent();
Assert.fail();
// BEGIN SUPRESS CATCH EXCEPTION
} catch (Exception e) {
// END SUPRESS CATCH EXCEPTION
// expected
}
try {
field1Editpart.getView();
Assert.fail();
// BEGIN SUPRESS CATCH EXCEPTION
} catch (Exception e) {
// END SUPRESS CATCH EXCEPTION
// expected
}
try {
field1Editpart.removeDisposeListener(new IDisposable.Listener() {
@Override
public void notifyDisposed(IDisposable notifier) {
}
});
Assert.fail();
// BEGIN SUPRESS CATCH EXCEPTION
} catch (Exception e) {
// END SUPRESS CATCH EXCEPTION
// expected
}
try {
field1Editpart.getValidators();
Assert.fail();
// BEGIN SUPRESS CATCH EXCEPTION
} catch (Exception e) {
// END SUPRESS CATCH EXCEPTION
// expected
}
}
/**
* Tests the automatic disposal of validators.
*/
@Test
public void test_validatorsDisposed_AfterDispose() {
// ...> yLayout1
// ......> yField1
ViewContext context = new ViewContext();
YLayout yLayout1 = modelFactory.createYLayout();
YField yField1 = modelFactory.createYField();
yLayout1.getElements().add(yField1);
IFieldEditpart fieldEditpart = editpartManager.getEditpart(context, yField1);
assertFalse(fieldEditpart.isDisposed());
// create and add validator
//
YMinLengthValidator yValidator = ValidationFactory.eINSTANCE
.createYMinLengthValidator();
YMinLengthValidator yValidator2 = ValidationFactory.eINSTANCE
.createYMinLengthValidator();
IValidatorEditpart validatorEditpart = editpartManager
.getEditpart(context, yValidator);
IValidatorEditpart validatorEditpart2 = editpartManager
.getEditpart(context, yValidator2);
fieldEditpart.addValidator(validatorEditpart);
fieldEditpart.addValidator(validatorEditpart2);
assertFalse(validatorEditpart.isDisposed());
assertFalse(validatorEditpart2.isDisposed());
// dispose parent
//
fieldEditpart.dispose();
assertTrue(fieldEditpart.isDisposed());
assertTrue(validatorEditpart.isDisposed());
assertTrue(validatorEditpart2.isDisposed());
}
/**
* Tests the addition and removal of validators by the edit parts.
*/
@Test
public void test_addRemoveValidator() {
ViewContext context = new ViewContext();
// ...> yLayout1
// ......> yField1
YLayout yLayout1 = modelFactory.createYLayout();
YField yField1 = modelFactory.createYField();
yLayout1.getElements().add(yField1);
IFieldEditpart field1Editpart = editpartManager.getEditpart(context, yField1);
// create and add validator by editpart
//
YMinLengthValidator yValidator = ValidationFactory.eINSTANCE
.createYMinLengthValidator();
IValidatorEditpart validatorEditpart = editpartManager
.getEditpart(context, yValidator);
assertEquals(0, field1Editpart.getValidators().size());
assertEquals(0, yField1.getValidators().size());
// add
field1Editpart.addValidator(validatorEditpart);
assertEquals(1, field1Editpart.getValidators().size());
assertEquals(1, yField1.getValidators().size());
assertSame(validatorEditpart, field1Editpart.getValidators().get(0));
// add twice -> no effect
field1Editpart.addValidator(validatorEditpart);
assertEquals(1, field1Editpart.getValidators().size());
assertEquals(1, yField1.getValidators().size());
// remove validator by editpart
//
field1Editpart.removeValidator(validatorEditpart);
assertEquals(0, field1Editpart.getValidators().size());
assertEquals(0, yField1.getValidators().size());
// remove twice
//
field1Editpart.removeValidator(validatorEditpart);
assertEquals(0, field1Editpart.getValidators().size());
assertEquals(0, yField1.getValidators().size());
}
/**
* Tests the addition and removal of validators by the model.
*/
@Test
public void test_addRemoveValidatorByModel() {
ViewContext context = new ViewContext();
// ...> yLayout1
// ......> yField1
YLayout yLayout1 = modelFactory.createYLayout();
YField yField1 = modelFactory.createYField();
yLayout1.getElements().add(yField1);
ILayoutEditpart layout1Editpart = (ILayoutEditpart) editpartManager
.getEditpart(context, yLayout1);
IFieldEditpart field1Editpart = editpartManager.getEditpart(context, yField1);
Assert.assertEquals(1, layout1Editpart.getElements().size());
Assert.assertSame(yLayout1, yField1.getParent());
// create validator
//
ValidationFactory vf = ValidationFactory.eINSTANCE;
YMinLengthValidator yValidator = vf.createYMinLengthValidator();
assertEquals(0, yField1.getValidators().size());
assertEquals(0, field1Editpart.getValidators().size());
// add by model
yField1.getValidators().add(yValidator);
assertEquals(1, yField1.getValidators().size());
assertEquals(1, field1Editpart.getValidators().size());
assertSame(yValidator, yField1.getValidators().get(0));
// add twice -> no effect
//
yField1.getValidators().add(yValidator);
assertEquals(1, yField1.getValidators().size());
assertEquals(1, field1Editpart.getValidators().size());
assertSame(yValidator, yField1.getValidators().get(0));
// remove validator by model
//
yField1.getValidators().remove(yValidator);
assertEquals(0, yField1.getValidators().size());
assertEquals(0, field1Editpart.getValidators().size());
// remove twice
//
yField1.getValidators().remove(yValidator);
assertEquals(0, yField1.getValidators().size());
assertEquals(0, field1Editpart.getValidators().size());
}
/**
* Tests whether the list of validators for an editpart is unmodifiable
* (only the list within the model may be modified).
*/
@Test
public void test_Validators_unmodifiable() {
ViewContext context = new ViewContext();
YField yField1 = modelFactory.createYField();
IFieldEditpart field1Editpart = editpartManager.getEditpart(context, yField1);
ValidationFactory vf = ValidationFactory.eINSTANCE;
YMinLengthValidator yValidator = vf.createYMinLengthValidator();
IValidatorEditpart validatorEditpart = editpartManager
.getEditpart(context, yValidator);
try {
field1Editpart.getValidators().add(validatorEditpart);
Assert.fail("Must be unmodifieable");
} catch (Exception e) {
}
}
}