blob: 7b8e3143e5d4899f5edbb79496042ce5afdc8c6e [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2011-2014 EclipseSource Muenchen GmbH and others.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Eugen Neufeld - initial API and implementation
******************************************************************************/
package org.eclipse.emf.ecp.view.treemasterdetail.validation.test;
import static org.junit.Assert.assertEquals;
import org.eclipse.emf.common.util.Diagnostic;
import org.eclipse.emf.ecp.view.spi.context.ViewModelContextFactory;
import org.eclipse.emf.ecp.view.spi.model.VDiagnostic;
import org.eclipse.emf.ecp.view.spi.model.VView;
import org.eclipse.emf.ecp.view.spi.model.VViewFactory;
import org.eclipse.emf.ecp.view.treemasterdetail.model.VTreeMasterDetail;
import org.eclipse.emf.ecp.view.treemasterdetail.model.VTreeMasterDetailFactory;
import org.eclipse.emf.ecp.view.treemasterdetail.validation.test.TestTMD.ChildLevel1;
import org.eclipse.emf.ecp.view.treemasterdetail.validation.test.TestTMD.ChildLevel2;
import org.eclipse.emf.ecp.view.treemasterdetail.validation.test.TestTMD.Root;
import org.eclipse.emf.ecp.view.treemasterdetail.validation.test.TestTMD.TestTMDFactory;
import org.junit.Test;
/**
* Validation tests for TreeMasterDetail.
*
* @author Eugen Neufeld
*
*/
public class TreeMasterDetailValidation_ITest {
private static final String VALID_NAME = "test"; //$NON-NLS-1$
@Test
public void test_InvalidRoot() {
final VView view = VViewFactory.eINSTANCE.createView();
final Root root = TestTMDFactory.eINSTANCE.createRoot();
view.setRootEClass(root.eClass());
final VTreeMasterDetail control = VTreeMasterDetailFactory.eINSTANCE
.createTreeMasterDetail();
view.getChildren().add(control);
ViewModelContextFactory.INSTANCE.createViewModelContext(view, root);
final VDiagnostic diagnostic = control.getDiagnostic();
assertEquals(Diagnostic.ERROR, diagnostic.getHighestSeverity(), 0);
assertEquals(1, diagnostic.getDiagnostics(root).size());
}
@Test
public void test_ValidRoot() {
final VView view = VViewFactory.eINSTANCE.createView();
final Root root = TestTMDFactory.eINSTANCE.createRoot();
root.setName(VALID_NAME);
view.setRootEClass(root.eClass());
final VTreeMasterDetail control = VTreeMasterDetailFactory.eINSTANCE
.createTreeMasterDetail();
view.getChildren().add(control);
ViewModelContextFactory.INSTANCE.createViewModelContext(view, root);
final VDiagnostic diagnostic = control.getDiagnostic();
assertEquals(Diagnostic.OK, diagnostic.getHighestSeverity(), 0);
assertEquals(0, diagnostic.getDiagnostics(root).size());
}
@Test
public void test_InvalidRootInvalidChild() {
final VView view = VViewFactory.eINSTANCE.createView();
final Root root = TestTMDFactory.eINSTANCE.createRoot();
final ChildLevel1 childLevel1 = TestTMDFactory.eINSTANCE.createChildLevel1();
root.getChildren().add(childLevel1);
view.setRootEClass(root.eClass());
final VTreeMasterDetail control = VTreeMasterDetailFactory.eINSTANCE
.createTreeMasterDetail();
view.getChildren().add(control);
ViewModelContextFactory.INSTANCE.createViewModelContext(view, root);
final VDiagnostic diagnostic = control.getDiagnostic();
assertEquals(Diagnostic.ERROR, diagnostic.getHighestSeverity(), 0);
assertEquals(2, diagnostic.getDiagnostics(root).size());
assertEquals(childLevel1, diagnostic.getDiagnostics(root).get(0)
.getData().get(0));
assertEquals(root, diagnostic.getDiagnostics(root).get(1).getData()
.get(0));
assertEquals(1, diagnostic.getDiagnostics(childLevel1).size());
}
@Test
public void test_ValidRootInvalidChild() {
final VView view = VViewFactory.eINSTANCE.createView();
final Root root = TestTMDFactory.eINSTANCE.createRoot();
root.setName(VALID_NAME);
final ChildLevel1 childLevel1 = TestTMDFactory.eINSTANCE.createChildLevel1();
root.getChildren().add(childLevel1);
view.setRootEClass(root.eClass());
final VTreeMasterDetail control = VTreeMasterDetailFactory.eINSTANCE
.createTreeMasterDetail();
view.getChildren().add(control);
ViewModelContextFactory.INSTANCE.createViewModelContext(view, root);
final VDiagnostic diagnostic = control.getDiagnostic();
assertEquals(Diagnostic.ERROR, diagnostic.getHighestSeverity(), 0);
assertEquals(1, diagnostic.getDiagnostics(root).size());
assertEquals(childLevel1, diagnostic.getDiagnostics(root).get(0)
.getData().get(0));
assertEquals(1, diagnostic.getDiagnostics(childLevel1).size());
}
@Test
public void test_InvalidRootValidChild() {
final VView view = VViewFactory.eINSTANCE.createView();
final Root root = TestTMDFactory.eINSTANCE.createRoot();
final ChildLevel1 childLevel1 = TestTMDFactory.eINSTANCE.createChildLevel1();
childLevel1.setName(VALID_NAME);
root.getChildren().add(childLevel1);
view.setRootEClass(root.eClass());
final VTreeMasterDetail control = VTreeMasterDetailFactory.eINSTANCE
.createTreeMasterDetail();
view.getChildren().add(control);
ViewModelContextFactory.INSTANCE.createViewModelContext(view, root);
final VDiagnostic diagnostic = control.getDiagnostic();
assertEquals(Diagnostic.ERROR, diagnostic.getHighestSeverity(), 0);
assertEquals(1, diagnostic.getDiagnostics(root).size());
assertEquals(root, diagnostic.getDiagnostics(root).get(0).getData()
.get(0));
assertEquals(0, diagnostic.getDiagnostics(childLevel1).size());
}
@Test
public void test_ValidRootValidChild() {
final VView view = VViewFactory.eINSTANCE.createView();
final Root root = TestTMDFactory.eINSTANCE.createRoot();
root.setName(VALID_NAME);
final ChildLevel1 childLevel1 = TestTMDFactory.eINSTANCE.createChildLevel1();
childLevel1.setName(VALID_NAME);
root.getChildren().add(childLevel1);
view.setRootEClass(root.eClass());
final VTreeMasterDetail control = VTreeMasterDetailFactory.eINSTANCE
.createTreeMasterDetail();
view.getChildren().add(control);
ViewModelContextFactory.INSTANCE.createViewModelContext(view, root);
final VDiagnostic diagnostic = control.getDiagnostic();
assertEquals(Diagnostic.OK, diagnostic.getHighestSeverity(), 0);
assertEquals(0, diagnostic.getDiagnostics(root).size());
assertEquals(0, diagnostic.getDiagnostics(childLevel1).size());
}
@Test
public void test_ValidRootInvalidChildren() {
final VView view = VViewFactory.eINSTANCE.createView();
final Root root = TestTMDFactory.eINSTANCE.createRoot();
root.setName(VALID_NAME);
final ChildLevel1 childLevel1 = TestTMDFactory.eINSTANCE.createChildLevel1();
childLevel1.setName(VALID_NAME);
root.getChildren().add(childLevel1);
final ChildLevel1 childLevel1_2 = TestTMDFactory.eINSTANCE.createChildLevel1();
root.getChildren().add(childLevel1_2);
view.setRootEClass(root.eClass());
final VTreeMasterDetail control = VTreeMasterDetailFactory.eINSTANCE
.createTreeMasterDetail();
view.getChildren().add(control);
ViewModelContextFactory.INSTANCE.createViewModelContext(view, root);
final VDiagnostic diagnostic = control.getDiagnostic();
assertEquals(Diagnostic.ERROR, diagnostic.getHighestSeverity(), 0);
assertEquals(1, diagnostic.getDiagnostics(root).size());
assertEquals(childLevel1_2, diagnostic.getDiagnostics(root).get(0)
.getData().get(0));
assertEquals(0, diagnostic.getDiagnostics(childLevel1).size());
assertEquals(1, diagnostic.getDiagnostics(childLevel1_2).size());
}
@Test
public void test_InvalidChildInvalidSubChild() {
final VView view = VViewFactory.eINSTANCE.createView();
final Root root = TestTMDFactory.eINSTANCE.createRoot();
root.setName(VALID_NAME);
final ChildLevel1 childLevel1 = TestTMDFactory.eINSTANCE.createChildLevel1();
root.getChildren().add(childLevel1);
final ChildLevel2 childLevel2 = TestTMDFactory.eINSTANCE.createChildLevel2();
childLevel1.getChildren().add(childLevel2);
view.setRootEClass(root.eClass());
final VTreeMasterDetail control = VTreeMasterDetailFactory.eINSTANCE
.createTreeMasterDetail();
view.getChildren().add(control);
ViewModelContextFactory.INSTANCE.createViewModelContext(view, root);
final VDiagnostic diagnostic = control.getDiagnostic();
assertEquals(Diagnostic.ERROR, diagnostic.getHighestSeverity(), 0);
assertEquals(2, diagnostic.getDiagnostics(root).size());
assertEquals(childLevel1, diagnostic.getDiagnostics(root).get(0)
.getData().get(0));
assertEquals(childLevel2, diagnostic.getDiagnostics(root).get(1)
.getData().get(0));
assertEquals(2, diagnostic.getDiagnostics(childLevel1).size());
assertEquals(childLevel1, diagnostic.getDiagnostics(childLevel1).get(0)
.getData().get(0));
assertEquals(childLevel2, diagnostic.getDiagnostics(childLevel1).get(1)
.getData().get(0));
assertEquals(1, diagnostic.getDiagnostics(childLevel2).size());
}
@Test
public void test_ValidChildInvalidSubChild() {
final VView view = VViewFactory.eINSTANCE.createView();
final Root root = TestTMDFactory.eINSTANCE.createRoot();
root.setName(VALID_NAME);
final ChildLevel1 childLevel1 = TestTMDFactory.eINSTANCE.createChildLevel1();
childLevel1.setName(VALID_NAME);
root.getChildren().add(childLevel1);
final ChildLevel2 childLevel2 = TestTMDFactory.eINSTANCE.createChildLevel2();
childLevel1.getChildren().add(childLevel2);
view.setRootEClass(root.eClass());
final VTreeMasterDetail control = VTreeMasterDetailFactory.eINSTANCE
.createTreeMasterDetail();
view.getChildren().add(control);
ViewModelContextFactory.INSTANCE.createViewModelContext(view, root);
final VDiagnostic diagnostic = control.getDiagnostic();
assertEquals(Diagnostic.ERROR, diagnostic.getHighestSeverity(), 0);
assertEquals(1, diagnostic.getDiagnostics(root).size());
assertEquals(childLevel2, diagnostic.getDiagnostics(root).get(0)
.getData().get(0));
assertEquals(1, diagnostic.getDiagnostics(childLevel1).size());
assertEquals(childLevel2, diagnostic.getDiagnostics(childLevel1).get(0)
.getData().get(0));
assertEquals(1, diagnostic.getDiagnostics(childLevel2).size());
}
@Test
public void test_InvalidChildValidSubChild() {
final VView view = VViewFactory.eINSTANCE.createView();
final Root root = TestTMDFactory.eINSTANCE.createRoot();
root.setName(VALID_NAME);
final ChildLevel1 childLevel1 = TestTMDFactory.eINSTANCE.createChildLevel1();
final ChildLevel2 childLevel2 = TestTMDFactory.eINSTANCE.createChildLevel2();
childLevel2.setName(VALID_NAME);
childLevel1.getChildren().add(childLevel2);
root.getChildren().add(childLevel1);
view.setRootEClass(root.eClass());
final VTreeMasterDetail control = VTreeMasterDetailFactory.eINSTANCE
.createTreeMasterDetail();
view.getChildren().add(control);
ViewModelContextFactory.INSTANCE.createViewModelContext(view, root);
final VDiagnostic diagnostic = control.getDiagnostic();
assertEquals(Diagnostic.ERROR, diagnostic.getHighestSeverity(), 0);
assertEquals(1, diagnostic.getDiagnostics(root).size());
assertEquals(childLevel1, diagnostic.getDiagnostics(root).get(0)
.getData().get(0));
assertEquals(1, diagnostic.getDiagnostics(childLevel1).size());
assertEquals(0, diagnostic.getDiagnostics(childLevel2).size());
}
@Test
public void test_ValidChildValidSubChild() {
final VView view = VViewFactory.eINSTANCE.createView();
final Root root = TestTMDFactory.eINSTANCE.createRoot();
root.setName(VALID_NAME);
final ChildLevel1 childLevel1 = TestTMDFactory.eINSTANCE.createChildLevel1();
childLevel1.setName(VALID_NAME);
root.getChildren().add(childLevel1);
final ChildLevel2 childLevel2 = TestTMDFactory.eINSTANCE.createChildLevel2();
childLevel2.setName(VALID_NAME);
childLevel1.getChildren().add(childLevel2);
view.setRootEClass(root.eClass());
final VTreeMasterDetail control = VTreeMasterDetailFactory.eINSTANCE
.createTreeMasterDetail();
view.getChildren().add(control);
ViewModelContextFactory.INSTANCE.createViewModelContext(view, root);
final VDiagnostic diagnostic = control.getDiagnostic();
assertEquals(Diagnostic.OK, diagnostic.getHighestSeverity(), 0);
assertEquals(0, diagnostic.getDiagnostics(root).size());
assertEquals(0, diagnostic.getDiagnostics(childLevel1).size());
assertEquals(0, diagnostic.getDiagnostics(childLevel2).size());
}
@Test
public void test_InvalidRootToValid() {
final VView view = VViewFactory.eINSTANCE.createView();
final Root root = TestTMDFactory.eINSTANCE.createRoot();
view.setRootEClass(root.eClass());
final VTreeMasterDetail control = VTreeMasterDetailFactory.eINSTANCE
.createTreeMasterDetail();
view.getChildren().add(control);
ViewModelContextFactory.INSTANCE.createViewModelContext(view, root);
root.setName(VALID_NAME);
final VDiagnostic diagnostic = control.getDiagnostic();
assertEquals(Diagnostic.OK, diagnostic.getHighestSeverity(), 0);
assertEquals(0, diagnostic.getDiagnostics(root).size());
}
@Test
public void test_ValidRootToInvalid() {
final VView view = VViewFactory.eINSTANCE.createView();
final Root root = TestTMDFactory.eINSTANCE.createRoot();
root.setName(VALID_NAME);
view.setRootEClass(root.eClass());
final VTreeMasterDetail control = VTreeMasterDetailFactory.eINSTANCE
.createTreeMasterDetail();
view.getChildren().add(control);
ViewModelContextFactory.INSTANCE.createViewModelContext(view, root);
root.setName(null);
final VDiagnostic diagnostic = control.getDiagnostic();
assertEquals(Diagnostic.ERROR, diagnostic.getHighestSeverity(), 0);
assertEquals(1, diagnostic.getDiagnostics(root).size());
}
@Test
public void test_InvalidChildToValid() {
final VView view = VViewFactory.eINSTANCE.createView();
final Root root = TestTMDFactory.eINSTANCE.createRoot();
root.setName(VALID_NAME);
final ChildLevel1 childLevel1 = TestTMDFactory.eINSTANCE.createChildLevel1();
root.getChildren().add(childLevel1);
view.setRootEClass(root.eClass());
final VTreeMasterDetail control = VTreeMasterDetailFactory.eINSTANCE
.createTreeMasterDetail();
view.getChildren().add(control);
ViewModelContextFactory.INSTANCE.createViewModelContext(view, root);
childLevel1.setName(VALID_NAME);
final VDiagnostic diagnostic = control.getDiagnostic();
assertEquals(Diagnostic.OK, diagnostic.getHighestSeverity(), 0);
assertEquals(0, diagnostic.getDiagnostics(root).size());
assertEquals(0, diagnostic.getDiagnostics(childLevel1).size());
}
@Test
public void test_ValidChildToInvalid() {
final VView view = VViewFactory.eINSTANCE.createView();
final Root root = TestTMDFactory.eINSTANCE.createRoot();
root.setName(VALID_NAME);
final ChildLevel1 childLevel1 = TestTMDFactory.eINSTANCE.createChildLevel1();
childLevel1.setName(VALID_NAME);
root.getChildren().add(childLevel1);
view.setRootEClass(root.eClass());
final VTreeMasterDetail control = VTreeMasterDetailFactory.eINSTANCE
.createTreeMasterDetail();
view.getChildren().add(control);
ViewModelContextFactory.INSTANCE.createViewModelContext(view, root);
childLevel1.setName(null);
final VDiagnostic diagnostic = control.getDiagnostic();
assertEquals(Diagnostic.ERROR, diagnostic.getHighestSeverity(), 0);
assertEquals(1, diagnostic.getDiagnostics(root).size());
assertEquals(childLevel1, diagnostic.getDiagnostics(root).get(0)
.getData().get(0));
assertEquals(1, diagnostic.getDiagnostics(childLevel1).size());
}
@Test
public void test_ValidRootAddValidChild() {
final VView view = VViewFactory.eINSTANCE.createView();
final Root root = TestTMDFactory.eINSTANCE.createRoot();
root.setName(VALID_NAME);
view.setRootEClass(root.eClass());
final VTreeMasterDetail control = VTreeMasterDetailFactory.eINSTANCE
.createTreeMasterDetail();
view.getChildren().add(control);
ViewModelContextFactory.INSTANCE.createViewModelContext(view, root);
final ChildLevel1 childLevel1 = TestTMDFactory.eINSTANCE.createChildLevel1();
childLevel1.setName(VALID_NAME);
root.getChildren().add(childLevel1);
final VDiagnostic diagnostic = control.getDiagnostic();
assertEquals(Diagnostic.OK, diagnostic.getHighestSeverity(), 0);
assertEquals(0, diagnostic.getDiagnostics(root).size());
assertEquals(0, diagnostic.getDiagnostics(childLevel1).size());
}
@Test
public void test_ValidRootAddInvalidChild() {
final VView view = VViewFactory.eINSTANCE.createView();
final Root root = TestTMDFactory.eINSTANCE.createRoot();
root.setName(VALID_NAME);
view.setRootEClass(root.eClass());
final VTreeMasterDetail control = VTreeMasterDetailFactory.eINSTANCE
.createTreeMasterDetail();
view.getChildren().add(control);
ViewModelContextFactory.INSTANCE.createViewModelContext(view, root);
final ChildLevel1 childLevel1 = TestTMDFactory.eINSTANCE.createChildLevel1();
root.getChildren().add(childLevel1);
final VDiagnostic diagnostic = control.getDiagnostic();
assertEquals(Diagnostic.ERROR, diagnostic.getHighestSeverity(), 0);
assertEquals(1, diagnostic.getDiagnostics(root).size());
assertEquals(childLevel1, diagnostic.getDiagnostics(root).get(0)
.getData().get(0));
assertEquals(1, diagnostic.getDiagnostics(childLevel1).size());
}
@Test
public void test_InvalidRootAddValidChild() {
final VView view = VViewFactory.eINSTANCE.createView();
final Root root = TestTMDFactory.eINSTANCE.createRoot();
view.setRootEClass(root.eClass());
final VTreeMasterDetail control = VTreeMasterDetailFactory.eINSTANCE
.createTreeMasterDetail();
view.getChildren().add(control);
ViewModelContextFactory.INSTANCE.createViewModelContext(view, root);
final ChildLevel1 childLevel1 = TestTMDFactory.eINSTANCE.createChildLevel1();
childLevel1.setName(VALID_NAME);
root.getChildren().add(childLevel1);
final VDiagnostic diagnostic = control.getDiagnostic();
assertEquals(Diagnostic.ERROR, diagnostic.getHighestSeverity(), 0);
assertEquals(1, diagnostic.getDiagnostics(root).size());
assertEquals(0, diagnostic.getDiagnostics(childLevel1).size());
}
@Test
public void test_InvalidRootAddInvalidChild() {
final VView view = VViewFactory.eINSTANCE.createView();
final Root root = TestTMDFactory.eINSTANCE.createRoot();
view.setRootEClass(root.eClass());
final VTreeMasterDetail control = VTreeMasterDetailFactory.eINSTANCE
.createTreeMasterDetail();
view.getChildren().add(control);
ViewModelContextFactory.INSTANCE.createViewModelContext(view, root);
final ChildLevel1 childLevel1 = TestTMDFactory.eINSTANCE.createChildLevel1();
root.getChildren().add(childLevel1);
final VDiagnostic diagnostic = control.getDiagnostic();
assertEquals(Diagnostic.ERROR, diagnostic.getHighestSeverity(), 0);
assertEquals(2, diagnostic.getDiagnostics(root).size());
assertEquals(childLevel1, diagnostic.getDiagnostics(root).get(0)
.getData().get(0));
assertEquals(root, diagnostic.getDiagnostics(root).get(1).getData()
.get(0));
assertEquals(1, diagnostic.getDiagnostics(childLevel1).size());
}
@Test
public void test_ValidRootAddValidSubTree() {
final VView view = VViewFactory.eINSTANCE.createView();
final Root root = TestTMDFactory.eINSTANCE.createRoot();
root.setName(VALID_NAME);
view.setRootEClass(root.eClass());
final VTreeMasterDetail control = VTreeMasterDetailFactory.eINSTANCE
.createTreeMasterDetail();
view.getChildren().add(control);
ViewModelContextFactory.INSTANCE.createViewModelContext(view, root);
final ChildLevel1 childLevel1 = TestTMDFactory.eINSTANCE.createChildLevel1();
childLevel1.setName(VALID_NAME);
final ChildLevel2 childLevel2 = TestTMDFactory.eINSTANCE.createChildLevel2();
childLevel2.setName(VALID_NAME);
childLevel1.getChildren().add(childLevel2);
root.getChildren().add(childLevel1);
final VDiagnostic diagnostic = control.getDiagnostic();
assertEquals(Diagnostic.OK, diagnostic.getHighestSeverity(), 0);
assertEquals(0, diagnostic.getDiagnostics(root).size());
assertEquals(0, diagnostic.getDiagnostics(childLevel1).size());
assertEquals(0, diagnostic.getDiagnostics(childLevel2).size());
}
@Test
public void test_ValidRootAddInvalidSubTree() {
final VView view = VViewFactory.eINSTANCE.createView();
final Root root = TestTMDFactory.eINSTANCE.createRoot();
root.setName(VALID_NAME);
view.setRootEClass(root.eClass());
final VTreeMasterDetail control = VTreeMasterDetailFactory.eINSTANCE
.createTreeMasterDetail();
view.getChildren().add(control);
ViewModelContextFactory.INSTANCE.createViewModelContext(view, root);
final ChildLevel1 childLevel1 = TestTMDFactory.eINSTANCE.createChildLevel1();
final ChildLevel2 childLevel2 = TestTMDFactory.eINSTANCE.createChildLevel2();
childLevel2.setName(VALID_NAME);
childLevel1.getChildren().add(childLevel2);
root.getChildren().add(childLevel1);
final VDiagnostic diagnostic = control.getDiagnostic();
assertEquals(Diagnostic.ERROR, diagnostic.getHighestSeverity(), 0);
assertEquals(1, diagnostic.getDiagnostics(root).size());
assertEquals(childLevel1, diagnostic.getDiagnostics(root).get(0)
.getData().get(0));
assertEquals(1, diagnostic.getDiagnostics(childLevel1).size());
assertEquals(0, diagnostic.getDiagnostics(childLevel2).size());
}
@Test
public void test_ValidRootAddInvalidSubTree2() {
final VView view = VViewFactory.eINSTANCE.createView();
final Root root = TestTMDFactory.eINSTANCE.createRoot();
root.setName(VALID_NAME);
view.setRootEClass(root.eClass());
final VTreeMasterDetail control = VTreeMasterDetailFactory.eINSTANCE
.createTreeMasterDetail();
view.getChildren().add(control);
ViewModelContextFactory.INSTANCE.createViewModelContext(view, root);
final ChildLevel1 childLevel1 = TestTMDFactory.eINSTANCE.createChildLevel1();
childLevel1.setName(VALID_NAME);
final ChildLevel2 childLevel2 = TestTMDFactory.eINSTANCE.createChildLevel2();
childLevel1.getChildren().add(childLevel2);
root.getChildren().add(childLevel1);
final VDiagnostic diagnostic = control.getDiagnostic();
assertEquals(Diagnostic.ERROR, diagnostic.getHighestSeverity(), 0);
assertEquals(1, diagnostic.getDiagnostics(root).size());
assertEquals(childLevel2, diagnostic.getDiagnostics(root).get(0)
.getData().get(0));
assertEquals(1, diagnostic.getDiagnostics(childLevel1).size());
assertEquals(childLevel2, diagnostic.getDiagnostics(childLevel1).get(0)
.getData().get(0));
assertEquals(1, diagnostic.getDiagnostics(childLevel2).size());
}
@Test
public void test_InvalidRootAddValidSubTree() {
final VView view = VViewFactory.eINSTANCE.createView();
final Root root = TestTMDFactory.eINSTANCE.createRoot();
view.setRootEClass(root.eClass());
final VTreeMasterDetail control = VTreeMasterDetailFactory.eINSTANCE
.createTreeMasterDetail();
view.getChildren().add(control);
ViewModelContextFactory.INSTANCE.createViewModelContext(view, root);
final ChildLevel1 childLevel1 = TestTMDFactory.eINSTANCE.createChildLevel1();
childLevel1.setName(VALID_NAME);
final ChildLevel2 childLevel2 = TestTMDFactory.eINSTANCE.createChildLevel2();
childLevel2.setName(VALID_NAME);
childLevel1.getChildren().add(childLevel2);
root.getChildren().add(childLevel1);
final VDiagnostic diagnostic = control.getDiagnostic();
assertEquals(Diagnostic.ERROR, diagnostic.getHighestSeverity(), 0);
assertEquals(1, diagnostic.getDiagnostics(root).size());
assertEquals(0, diagnostic.getDiagnostics(childLevel1).size());
assertEquals(0, diagnostic.getDiagnostics(childLevel2).size());
}
@Test
public void test_InvalidRootAddInvalidSubTree1() {
final VView view = VViewFactory.eINSTANCE.createView();
final Root root = TestTMDFactory.eINSTANCE.createRoot();
view.setRootEClass(root.eClass());
final VTreeMasterDetail control = VTreeMasterDetailFactory.eINSTANCE
.createTreeMasterDetail();
view.getChildren().add(control);
ViewModelContextFactory.INSTANCE.createViewModelContext(view, root);
final ChildLevel1 childLevel1 = TestTMDFactory.eINSTANCE.createChildLevel1();
final ChildLevel2 childLevel2 = TestTMDFactory.eINSTANCE.createChildLevel2();
childLevel2.setName(VALID_NAME);
childLevel1.getChildren().add(childLevel2);
root.getChildren().add(childLevel1);
final VDiagnostic diagnostic = control.getDiagnostic();
assertEquals(Diagnostic.ERROR, diagnostic.getHighestSeverity(), 0);
assertEquals(2, diagnostic.getDiagnostics(root).size());
assertEquals(childLevel1, diagnostic.getDiagnostics(root).get(0)
.getData().get(0));
assertEquals(root, diagnostic.getDiagnostics(root).get(1).getData()
.get(0));
assertEquals(1, diagnostic.getDiagnostics(childLevel1).size());
assertEquals(0, diagnostic.getDiagnostics(childLevel2).size());
}
@Test
public void test_InvalidRootAddInvalidSubTree2() {
final VView view = VViewFactory.eINSTANCE.createView();
final Root root = TestTMDFactory.eINSTANCE.createRoot();
view.setRootEClass(root.eClass());
final VTreeMasterDetail control = VTreeMasterDetailFactory.eINSTANCE
.createTreeMasterDetail();
view.getChildren().add(control);
ViewModelContextFactory.INSTANCE.createViewModelContext(view, root);
final ChildLevel1 childLevel1 = TestTMDFactory.eINSTANCE.createChildLevel1();
childLevel1.setName(VALID_NAME);
final ChildLevel2 childLevel2 = TestTMDFactory.eINSTANCE.createChildLevel2();
childLevel1.getChildren().add(childLevel2);
root.getChildren().add(childLevel1);
final VDiagnostic diagnostic = control.getDiagnostic();
assertEquals(Diagnostic.ERROR, diagnostic.getHighestSeverity(), 0);
assertEquals(2, diagnostic.getDiagnostics(root).size());
assertEquals(childLevel2, diagnostic.getDiagnostics(root).get(0)
.getData().get(0));
assertEquals(root, diagnostic.getDiagnostics(root).get(1).getData()
.get(0));
assertEquals(1, diagnostic.getDiagnostics(childLevel1).size());
assertEquals(childLevel2, diagnostic.getDiagnostics(childLevel1).get(0)
.getData().get(0));
assertEquals(1, diagnostic.getDiagnostics(childLevel2).size());
}
@Test
public void test_ValidRootWithChildAddInvalidSibling() {
final VView view = VViewFactory.eINSTANCE.createView();
final Root root = TestTMDFactory.eINSTANCE.createRoot();
root.setName(VALID_NAME);
final ChildLevel1 childLevel1 = TestTMDFactory.eINSTANCE.createChildLevel1();
childLevel1.setName(VALID_NAME);
root.getChildren().add(childLevel1);
view.setRootEClass(root.eClass());
final VTreeMasterDetail control = VTreeMasterDetailFactory.eINSTANCE
.createTreeMasterDetail();
view.getChildren().add(control);
ViewModelContextFactory.INSTANCE.createViewModelContext(view, root);
final ChildLevel1 childLevel1_2 = TestTMDFactory.eINSTANCE.createChildLevel1();
root.getChildren().add(childLevel1_2);
final VDiagnostic diagnostic = control.getDiagnostic();
assertEquals(Diagnostic.ERROR, diagnostic.getHighestSeverity(), 0);
assertEquals(1, diagnostic.getDiagnostics(root).size());
assertEquals(childLevel1_2, diagnostic.getDiagnostics(root).get(0)
.getData().get(0));
assertEquals(0, diagnostic.getDiagnostics(childLevel1).size());
assertEquals(1, diagnostic.getDiagnostics(childLevel1_2).size());
}
@Test
public void test_ValidChildAddValidSubChild() {
final VView view = VViewFactory.eINSTANCE.createView();
final Root root = TestTMDFactory.eINSTANCE.createRoot();
root.setName(VALID_NAME);
final ChildLevel1 childLevel1 = TestTMDFactory.eINSTANCE.createChildLevel1();
childLevel1.setName(VALID_NAME);
root.getChildren().add(childLevel1);
view.setRootEClass(root.eClass());
final VTreeMasterDetail control = VTreeMasterDetailFactory.eINSTANCE
.createTreeMasterDetail();
view.getChildren().add(control);
ViewModelContextFactory.INSTANCE.createViewModelContext(view, root);
final ChildLevel2 childLevel2 = TestTMDFactory.eINSTANCE.createChildLevel2();
childLevel2.setName(VALID_NAME);
childLevel1.getChildren().add(childLevel2);
final VDiagnostic diagnostic = control.getDiagnostic();
assertEquals(Diagnostic.OK, diagnostic.getHighestSeverity(), 0);
assertEquals(0, diagnostic.getDiagnostics(root).size());
assertEquals(0, diagnostic.getDiagnostics(childLevel1).size());
assertEquals(0, diagnostic.getDiagnostics(childLevel2).size());
}
@Test
public void test_ValidChildAddInvalidSubChild() {
final VView view = VViewFactory.eINSTANCE.createView();
final Root root = TestTMDFactory.eINSTANCE.createRoot();
root.setName(VALID_NAME);
final ChildLevel1 childLevel1 = TestTMDFactory.eINSTANCE.createChildLevel1();
childLevel1.setName(VALID_NAME);
root.getChildren().add(childLevel1);
view.setRootEClass(root.eClass());
final VTreeMasterDetail control = VTreeMasterDetailFactory.eINSTANCE
.createTreeMasterDetail();
view.getChildren().add(control);
ViewModelContextFactory.INSTANCE.createViewModelContext(view, root);
final ChildLevel2 childLevel2 = TestTMDFactory.eINSTANCE.createChildLevel2();
childLevel1.getChildren().add(childLevel2);
final VDiagnostic diagnostic = control.getDiagnostic();
assertEquals(Diagnostic.ERROR, diagnostic.getHighestSeverity(), 0);
assertEquals(1, diagnostic.getDiagnostics(root).size());
assertEquals(childLevel2, diagnostic.getDiagnostics(root).get(0)
.getData().get(0));
assertEquals(1, diagnostic.getDiagnostics(childLevel1).size());
assertEquals(childLevel2, diagnostic.getDiagnostics(childLevel1).get(0)
.getData().get(0));
assertEquals(1, diagnostic.getDiagnostics(childLevel2).size());
}
@Test
public void test_InvalidChildAddValidSubChild() {
final VView view = VViewFactory.eINSTANCE.createView();
final Root root = TestTMDFactory.eINSTANCE.createRoot();
root.setName(VALID_NAME);
final ChildLevel1 childLevel1 = TestTMDFactory.eINSTANCE.createChildLevel1();
root.getChildren().add(childLevel1);
view.setRootEClass(root.eClass());
final VTreeMasterDetail control = VTreeMasterDetailFactory.eINSTANCE
.createTreeMasterDetail();
view.getChildren().add(control);
ViewModelContextFactory.INSTANCE.createViewModelContext(view, root);
final ChildLevel2 childLevel2 = TestTMDFactory.eINSTANCE.createChildLevel2();
childLevel2.setName(VALID_NAME);
root.getChildren().add(childLevel1);
final VDiagnostic diagnostic = control.getDiagnostic();
assertEquals(Diagnostic.ERROR, diagnostic.getHighestSeverity(), 0);
assertEquals(1, diagnostic.getDiagnostics(root).size());
assertEquals(childLevel1, diagnostic.getDiagnostics(root).get(0)
.getData().get(0));
assertEquals(1, diagnostic.getDiagnostics(childLevel1).size());
assertEquals(0, diagnostic.getDiagnostics(childLevel2).size());
}
@Test
public void test_InvalidChildAddInvalidSubChild() {
final VView view = VViewFactory.eINSTANCE.createView();
final Root root = TestTMDFactory.eINSTANCE.createRoot();
root.setName(VALID_NAME);
final ChildLevel1 childLevel1 = TestTMDFactory.eINSTANCE.createChildLevel1();
root.getChildren().add(childLevel1);
view.setRootEClass(root.eClass());
final VTreeMasterDetail control = VTreeMasterDetailFactory.eINSTANCE
.createTreeMasterDetail();
view.getChildren().add(control);
ViewModelContextFactory.INSTANCE.createViewModelContext(view, root);
final ChildLevel2 childLevel2 = TestTMDFactory.eINSTANCE.createChildLevel2();
childLevel1.getChildren().add(childLevel2);
final VDiagnostic diagnostic = control.getDiagnostic();
assertEquals(Diagnostic.ERROR, diagnostic.getHighestSeverity(), 0);
assertEquals(2, diagnostic.getDiagnostics(root).size());
assertEquals(childLevel1, diagnostic.getDiagnostics(root).get(0)
.getData().get(0));
assertEquals(childLevel2, diagnostic.getDiagnostics(root).get(1)
.getData().get(0));
assertEquals(2, diagnostic.getDiagnostics(childLevel1).size());
assertEquals(childLevel1, diagnostic.getDiagnostics(childLevel1).get(0)
.getData().get(0));
assertEquals(childLevel2, diagnostic.getDiagnostics(childLevel1).get(1)
.getData().get(0));
assertEquals(1, diagnostic.getDiagnostics(childLevel2).size());
}
@Test
public void test_ValidChildWithSubChildAddInvalidSibling() {
final VView view = VViewFactory.eINSTANCE.createView();
final Root root = TestTMDFactory.eINSTANCE.createRoot();
root.setName(VALID_NAME);
final ChildLevel1 childLevel1 = TestTMDFactory.eINSTANCE.createChildLevel1();
childLevel1.setName(VALID_NAME);
final ChildLevel2 childLevel2 = TestTMDFactory.eINSTANCE.createChildLevel2();
childLevel2.setName(VALID_NAME);
childLevel1.getChildren().add(childLevel2);
root.getChildren().add(childLevel1);
view.setRootEClass(root.eClass());
final VTreeMasterDetail control = VTreeMasterDetailFactory.eINSTANCE
.createTreeMasterDetail();
view.getChildren().add(control);
ViewModelContextFactory.INSTANCE.createViewModelContext(view, root);
final ChildLevel2 childLevel2_2 = TestTMDFactory.eINSTANCE.createChildLevel2();
childLevel1.getChildren().add(childLevel2_2);
final VDiagnostic diagnostic = control.getDiagnostic();
assertEquals(Diagnostic.ERROR, diagnostic.getHighestSeverity(), 0);
assertEquals(1, diagnostic.getDiagnostics(root).size());
assertEquals(childLevel2_2, diagnostic.getDiagnostics(root).get(0)
.getData().get(0));
assertEquals(1, diagnostic.getDiagnostics(childLevel1).size());
assertEquals(childLevel2_2, diagnostic.getDiagnostics(childLevel1).get(0)
.getData().get(0));
assertEquals(0, diagnostic.getDiagnostics(childLevel2).size());
assertEquals(1, diagnostic.getDiagnostics(childLevel2_2).size());
}
@Test
public void test_ValidRootAddValidChildToInvalid() {
final VView view = VViewFactory.eINSTANCE.createView();
final Root root = TestTMDFactory.eINSTANCE.createRoot();
root.setName(VALID_NAME);
view.setRootEClass(root.eClass());
final VTreeMasterDetail control = VTreeMasterDetailFactory.eINSTANCE
.createTreeMasterDetail();
view.getChildren().add(control);
ViewModelContextFactory.INSTANCE.createViewModelContext(view, root);
final ChildLevel1 childLevel1 = TestTMDFactory.eINSTANCE.createChildLevel1();
childLevel1.setName(VALID_NAME);
root.getChildren().add(childLevel1);
childLevel1.setName(null);
final VDiagnostic diagnostic = control.getDiagnostic();
assertEquals(Diagnostic.ERROR, diagnostic.getHighestSeverity(), 0);
assertEquals(1, diagnostic.getDiagnostics(root).size());
assertEquals(childLevel1, diagnostic.getDiagnostics(root).get(0)
.getData().get(0));
assertEquals(1, diagnostic.getDiagnostics(childLevel1).size());
}
}