/** * */ package com.sap.furcas.runtime.textblocks.modification; import static org.junit.Assert.assertEquals; import org.junit.Test; import com.sap.furcas.metamodel.FURCAS.textblocks.TextBlock; import com.sap.furcas.metamodel.FURCAS.textblocks.Version; import com.sap.furcas.runtime.textblocks.modifcation.TbChangeUtil; import com.sap.furcas.runtime.textblocks.modifcation.TbVersionUtil; import com.sap.furcas.runtime.textblocks.testbase.FixtureProvidingTextBlockTest; /** * */ public class TestTbVersionUtil extends FixtureProvidingTextBlockTest { @Test public void testSetVersion() { // main assertEquals(Version.REFERENCE, main.getVersion()); TbVersionUtil.setVersion(main, Version.CURRENT); assertEquals(Version.CURRENT, main.getVersion()); TbVersionUtil.setVersion(main, Version.PREVIOUS); assertEquals(Version.PREVIOUS, main.getVersion()); // left assertEquals(Version.REFERENCE, left.getVersion()); TbVersionUtil.setVersion(left, Version.CURRENT); assertEquals(Version.CURRENT, left.getVersion()); // lexed3 assertEquals(Version.REFERENCE, lexed3.getVersion()); TbVersionUtil.setVersion(lexed3, Version.CURRENT); assertEquals(Version.CURRENT, lexed3.getVersion()); } @Test public void testMarkAscending() { // should change assertEquals(false, main.isChildrenChanged()); assertEquals(false, middle.isChildrenChanged()); assertEquals(false, subBlock1.isChildrenChanged()); assertEquals(false, subBlock2.isChildrenChanged()); assertEquals(false, subBlock3.isChildrenChanged()); // should not change assertEquals(false, subBlock4.isChildrenChanged()); assertEquals(false, left.isChildrenChanged()); assertEquals(false, leftLeft.isChildrenChanged()); assertEquals(false, right.isChildrenChanged()); TbChangeUtil.markAscending(subBlock3); // should change assertEquals(true, main.isChildrenChanged()); assertEquals(true, middle.isChildrenChanged()); assertEquals(true, subBlock1.isChildrenChanged()); assertEquals(true, subBlock2.isChildrenChanged()); assertEquals(true, subBlock3.isChildrenChanged()); // should not change assertEquals(false, subBlock4.isChildrenChanged()); assertEquals(false, left.isChildrenChanged()); assertEquals(false, leftLeft.isChildrenChanged()); assertEquals(false, right.isChildrenChanged()); TbChangeUtil.markAscending(subBlock4); assertEquals(true, subBlock4.isChildrenChanged()); } @Test public void testGetOtherVersion() { assertEquals(Version.REFERENCE, main.getVersion()); assertEquals(0, main.getOtherVersions().size()); // only REFERENCE version exists assertEquals(main, TbVersionUtil.getOtherVersion(main, Version.REFERENCE)); assertEquals(null, TbVersionUtil.getOtherVersion(main, Version.PREVIOUS)); assertEquals(null, TbVersionUtil.getOtherVersion(main, Version.CURRENT)); TextBlock mainPrevious = modelFactory.createTextBlock(); mainPrevious.setVersion(Version.PREVIOUS); main.getOtherVersions().add(mainPrevious); mainPrevious.getOtherVersions().add(main); assertEquals(1, main.getOtherVersions().size()); assertEquals(1, mainPrevious.getOtherVersions().size()); // only REFERENCE and PREVIOUS versions exists assertEquals(main, TbVersionUtil.getOtherVersion(main, Version.REFERENCE)); assertEquals(mainPrevious, TbVersionUtil.getOtherVersion(main, Version.PREVIOUS)); assertEquals(null, TbVersionUtil.getOtherVersion(main, Version.CURRENT)); TextBlock mainCurrent = modelFactory.createTextBlock(); mainCurrent.setVersion(Version.CURRENT); main.getOtherVersions().add(mainCurrent); mainCurrent.getOtherVersions().add(main); mainCurrent.getOtherVersions().add(mainPrevious); mainPrevious.getOtherVersions().add(mainCurrent); assertEquals(2, main.getOtherVersions().size()); assertEquals(2, mainCurrent.getOtherVersions().size()); assertEquals(2, mainPrevious.getOtherVersions().size()); // all versions exist assertEquals(main, TbVersionUtil.getOtherVersion(main, Version.REFERENCE)); assertEquals(mainPrevious, TbVersionUtil.getOtherVersion(main, Version.PREVIOUS)); assertEquals(mainCurrent, TbVersionUtil.getOtherVersion(main, Version.CURRENT)); } /** * TODO: write test when clear if function should be based on * isChildrenChanged or on sub nodes size * */ @Test public void testHasChildChanges() { } }