/******************************************************************************* * (c) Copyright 2016 Hewlett-Packard Development Company, L.P. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Apache License v2.0 which accompany this distribution. * * The Apache License is available at * http://www.apache.org/licenses/LICENSE-2.0 * *******************************************************************************/ package io.cloudslang.lang.runtime.env; import java.util.NoSuchElementException; import org.junit.Test; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; /** * @author moradi * @version $Id$ * @since 09/11/2014 */ public class ExecutionPathTest { /** * Test method for {@link ExecutionPath#getCurrentPath()}. */ @Test @SuppressWarnings("static-method") public void testCurrentPath() { ExecutionPath executionPath = new ExecutionPath(); StringBuilder expectedPath = new StringBuilder("0"); doAssert(expectedPath, executionPath); executionPath.down(); // 0/0 executionPath.forward(); // 0/1 expectedPath.append(ExecutionPath.PATH_SEPARATOR).append("1"); doAssert(expectedPath, executionPath); executionPath.down(); // 0/1/0 executionPath.forward(); // 0/1/1 executionPath.forward(); // 0/1/2 expectedPath.append(ExecutionPath.PATH_SEPARATOR).append("2"); doAssert(expectedPath, executionPath); executionPath.up(); // 0/1 deleteLevel(expectedPath); doAssert(expectedPath, executionPath); executionPath.forward(); // 0/2 executionPath.forward(); // 0/3 deleteLevel(expectedPath); expectedPath.append(ExecutionPath.PATH_SEPARATOR).append("3"); doAssert(expectedPath, executionPath); executionPath.down(); // 0/3/0 expectedPath.append(ExecutionPath.PATH_SEPARATOR).append("0"); executionPath.down(); // 0/3/0/0 executionPath.forward(); // 0/3/0/1 expectedPath.append(ExecutionPath.PATH_SEPARATOR).append("1"); doAssert(expectedPath, executionPath); executionPath.up(); // 0/3/0 deleteLevel(expectedPath); executionPath.up(); // 0/3 deleteLevel(expectedPath); executionPath.up(); // 0 deleteLevel(expectedPath); doAssert(expectedPath, executionPath); try { executionPath.up(); // 0 } catch (Exception ex) { assertTrue(ex instanceof NoSuchElementException); } doAssert(expectedPath, executionPath); } private static void doAssert(StringBuilder expectedPath, ExecutionPath executionPath) { assertEquals(expectedPath.toString(), executionPath.getCurrentPath()); } private static void deleteLevel(StringBuilder expectedPath) { expectedPath.delete(expectedPath.lastIndexOf(ExecutionPath.PATH_SEPARATOR), expectedPath.length()); } }