/** * */ package org.eclipse.emf.eef.tests.nonreg.junit.compositionsequence; import junit.framework.TestCase; import org.eclipse.emf.eef.runtime.ui.parts.sequence.CompositionSequence; import org.eclipse.emf.eef.runtime.ui.parts.sequence.CompositionStep; /** * @author <a href="mailto:goulwen.lefur@obeo.fr">Goulwen Le Fur</a> * */ public class TestCompositionSequence extends TestCase { /** * Test the composition process */ public void testSimpleCompositionSequence() { CompositionSequence sequence = new CompositionSequence(); sequence.addStep("G1").addStep("E1"); CompositionStep group2 = sequence.addStep("G2"); group2.addStep("E2"); group2.addStep("E3"); String toString = toString(sequence); assert toString.equals("G1E1G2E2E3"); } /** * Test an advanced composition process */ public void testAdvancedCompositionSequence() { CompositionSequence sequence1 = createAdvancedSequence(); CompositionStep currentStep = sequence1.next(); StringBuffer track = new StringBuffer(); do { track.append(currentStep.key); currentStep = currentStep.next(); } while (currentStep != null); assert track.toString().equals("123456789101112"); } /** * Test the before method */ public void testBefore() { CompositionSequence sequence1 = createAdvancedSequence(); CompositionStep currentStep = sequence1; CompositionStep next = currentStep.next(); while (next != null) { currentStep = next; next = currentStep.next(); } CompositionStep before = currentStep.before(); StringBuffer track = new StringBuffer(); while (before != null) { track.append(before.key); before = before.before(); } assert track.toString().equals("121110987654321"); } /** * Test the before method */ public void testUp() { CompositionSequence sequence1 = new CompositionSequence(); CompositionStep group1 = sequence1.addStep("G1"); CompositionStep e1 = group1.addStep("E1"); CompositionStep e2 = group1.addStep("E2"); CompositionStep group2 = sequence1.addStep("G2"); CompositionStep e3 = group2.addStep("E3"); CompositionStep e4 = group2.addStep("E4"); assert toString(sequence1).equals("G1E1E2G2E3E4"); e2.up(); assert toString(sequence1).equals("G1E2E1G2E3E4"); group2.up(); assert toString(sequence1).equals("G2E3E4G1E2E1"); } /** * Test the before method */ public void testDown() { CompositionSequence sequence1 = new CompositionSequence(); CompositionStep group1 = sequence1.addStep("G1"); CompositionStep e1 = group1.addStep("E1"); CompositionStep e2 = group1.addStep("E2"); CompositionStep group2 = sequence1.addStep("G2"); CompositionStep e3 = group2.addStep("E3"); CompositionStep e4 = group2.addStep("E4"); assert toString(sequence1).equals("G1E1E2G2E3E4"); e3.down(); assert toString(sequence1).equals("G1E1E2G2E4E3"); group1.down(); assert toString(sequence1).equals("G2E4E3G1E1E2"); } /** * Test the before method */ public void testMove() { CompositionSequence sequence1 = new CompositionSequence(); CompositionStep group1 = sequence1.addStep("G1"); CompositionStep e1 = group1.addStep("E1"); CompositionStep e2 = group1.addStep("E2"); CompositionStep group2 = sequence1.addStep("G2"); CompositionStep e3 = group2.addStep("E3"); CompositionStep e4 = group2.addStep("E4"); assert toString(sequence1).equals("G1E1E2G2E3E4"); e3.moveTo(group1); assert toString(sequence1).equals("G1E1E2E3G2E4"); group1.moveTo(group2); group2.addStep("E5"); assert toString(sequence1).equals("G2E4G1E1E2E3E5"); } /** * @param sequence * @return */ private String toString(CompositionSequence sequence) { CompositionStep currentStep = sequence.next(); StringBuffer track = new StringBuffer(); do { track.append(currentStep.key); currentStep = currentStep.next(); } while (currentStep != null); String toString = track.toString(); return toString; } /** * @return an complex sequence */ private CompositionSequence createAdvancedSequence() { CompositionSequence sequence1 = new CompositionSequence(); sequence1.addStep("1").addStep("2"); CompositionStep group2 = sequence1.addStep("3"); group2.addStep("4"); group2.addStep("5"); group2.addStep("6").addStep("7"); CompositionSequence sequence2 = new CompositionSequence(sequence1, "Sub-sequence 1"); CompositionStep group3 = sequence2.addStep("8"); group3.addStep("9"); group3.addStep("10"); sequence2.addStep("11"); group2.addStep(sequence2); sequence1.addStep("12"); return sequence1; } }