/* * Copyright 2015 Red Hat, Inc. and/or its affiliates. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.kie.workbench.common.screens.datamodeller.client; import org.junit.Before; import org.junit.Test; import static org.junit.Assert.*; public class DataModelHelperTest { private DataModelHelper helper; @Before public void setUp() { helper = new DataModelHelper("test"); /* * Set up siblingsMap such that: * a.A --> {a.B, a.b.F} A--+ K * a.B --> {a.C} | | | * a.C --> {d.D, d.e.G} B F L * d.D --> {d.E} | * d.e.G --> {d.e.H} C--+ * k.l.K --> {k.l.L} | | * D G * | | * E H */ helper.dataObjectExtended("a.A", "a.B", true); helper.dataObjectExtended("a.A", "a.b.F", true); helper.dataObjectExtended("a.B", "a.C", true); helper.dataObjectExtended("a.C", "d.D", true); helper.dataObjectExtended("a.C", "d.e.G", true); helper.dataObjectExtended("d.D", "d.E", true); helper.dataObjectExtended("d.e.G", "d.e.H", true); helper.dataObjectExtended("k.l.K", "k.l.L", true); } @Test public void testIsAssignableFrom() throws Exception { assertFalse(helper.isAssignableFrom(null, null)); assertFalse(helper.isAssignableFrom("", null)); assertFalse(helper.isAssignableFrom(null, "")); assertFalse(helper.isAssignableFrom("", "")); assertFalse(helper.isAssignableFrom("a.A", "a.A")); assertFalse(helper.isAssignableFrom("d.E", "d.E")); // Test no extension relation at all assertTrue(helper.isAssignableFrom("a.A", "u.v.W")); assertTrue(helper.isAssignableFrom("a.A", "a.b.c.K")); assertTrue(helper.isAssignableFrom("a.A", "a.b.c.L")); assertTrue(helper.isAssignableFrom("a.b.c.K", "a.A")); assertTrue(helper.isAssignableFrom("a.b.c.L", "a.A")); // Test existing extensions assertTrue(helper.isAssignableFrom("a.B", "a.A")); //Should return true assertFalse(helper.isAssignableFrom("a.A", "a.b.F")); assertFalse(helper.isAssignableFrom("a.A", "d.E")); // D and H are below C in the extension hierarchy, but (at least for now) should be allowed // to change parent to A for example assertTrue(helper.isAssignableFrom("d.D", "a.A")); assertTrue(helper.isAssignableFrom("d.e.H", "a.A")); // Change extensions and retest assertTrue(helper.isAssignableFrom("a.b.F", "k.l.K")); assertTrue(helper.isAssignableFrom("k.l.K", "a.b.F")); helper.dataObjectExtended("a.A", "a.b.F", false); helper.dataObjectExtended("k.l.K", "a.b.F", true); assertFalse(helper.isAssignableFrom("k.l.K", "a.b.F")); assertTrue(helper.isAssignableFrom("a.A", "a.b.F")); helper.dataObjectExtended("a.B", "a.C", false); assertTrue(helper.isAssignableFrom("a.A", "d.E")); assertTrue(helper.isAssignableFrom("a.A", "d.e.H")); assertTrue(helper.isAssignableFrom("d.D", "a.A")); assertTrue(helper.isAssignableFrom("d.e.H", "a.A")); // Restore setup before exiting helper.dataObjectExtended("a.B", "a.C", true); helper.dataObjectExtended("k.l.K", "a.b.F", false); helper.dataObjectExtended("a.A", "a.b.F", true); } }