package org.netbeans.gradle.project.tasks.vars; import org.junit.Test; import org.netbeans.gradle.project.api.task.TaskVariable; import static org.junit.Assert.*; public final class LenientVariableResolverTest { private DisplayedTaskVariable createVar(String name) { return new DisplayedTaskVariable(new TaskVariable(name), name, VariableTypeDescription.DEFAULT_TYPE); } private DisplayedTaskVariable createVar(String name, String displayName) { return new DisplayedTaskVariable(new TaskVariable(name), displayName, VariableTypeDescription.DEFAULT_TYPE); } private DisplayedTaskVariable createVar(String name, String displayName, String type, String typeArguments) { return new DisplayedTaskVariable( new TaskVariable(name), displayName, new VariableTypeDescription(type, typeArguments)); } @Test public void testComplete() { DisplayedTaskVariable expected = createVar("varName", "Display Name", "varType", "varArgs"); DisplayedTaskVariable parsed = LenientVariableResolver.tryParseTaskVariable( " varName [ varType : varArgs ] : Display Name "); assertEquals(expected, parsed); assertEquals("${varName[vartype:varArgs]:Display Name}", parsed.getScriptReplaceConstant()); } @Test public void testCompleteWithoutDisplayNameSeparator() { DisplayedTaskVariable expected = createVar("varName", "Display Name", "varType", "varArgs"); DisplayedTaskVariable parsed = LenientVariableResolver.tryParseTaskVariable( " varName [ varType : varArgs ]Display Name "); assertEquals(expected, parsed); assertEquals("${varName[vartype:varArgs]:Display Name}", parsed.getScriptReplaceConstant()); } @Test public void testWithoutDisplayName() { DisplayedTaskVariable expected = createVar("varName", "varName", "varType", "varArgs"); DisplayedTaskVariable parsed = LenientVariableResolver.tryParseTaskVariable( " varName [ varType : varArgs ]"); assertEquals(expected, parsed); assertEquals("${varName[vartype:varArgs]}", parsed.getScriptReplaceConstant()); } @Test public void testWithoutTypeArguments() { DisplayedTaskVariable expected = createVar("varName", "Display Name", "varType", ""); DisplayedTaskVariable parsed = LenientVariableResolver.tryParseTaskVariable( " varName [varType] : Display Name "); assertEquals(expected, parsed); assertEquals("${varName[vartype]:Display Name}", parsed.getScriptReplaceConstant()); } @Test public void testWithoutType() { DisplayedTaskVariable expected = createVar("varName", "Display Name"); DisplayedTaskVariable parsed = LenientVariableResolver.tryParseTaskVariable( " varName:Display Name"); assertEquals(expected, parsed); assertEquals("${varName:Display Name}", parsed.getScriptReplaceConstant()); } @Test public void testWithoutTypeDisplayNameContainsBracket() { DisplayedTaskVariable expected = createVar("varName", "Display Name[1]"); DisplayedTaskVariable parsed = LenientVariableResolver.tryParseTaskVariable( " varName:Display Name[1]"); assertEquals(expected, parsed); assertEquals("${varName:Display Name[1]}", parsed.getScriptReplaceConstant()); } @Test public void testVarNameOnly() { DisplayedTaskVariable expected = createVar("varName"); DisplayedTaskVariable parsed = LenientVariableResolver.tryParseTaskVariable( " varName "); assertEquals(expected, parsed); assertEquals("${varName}", parsed.getScriptReplaceConstant()); } @Test public void testWithoutDisplayNameWithSpecialChars() { DisplayedTaskVariable expected = createVar("varName", "varName", "varType", "var\\\\Args\\[0\\]"); DisplayedTaskVariable parsed = LenientVariableResolver.tryParseTaskVariable( " varName [ varType : var\\\\Args\\[0\\] ]"); assertEquals(expected, parsed); assertEquals("${varName[vartype:var\\\\Args\\[0\\]]}", parsed.getScriptReplaceConstant()); } @Test public void testWithoutTypeWithSpecialChars() { DisplayedTaskVariable expected = createVar("varName", "Display\\Name[0]"); DisplayedTaskVariable parsed = LenientVariableResolver.tryParseTaskVariable( " varName:Display\\\\Name\\[0\\]"); assertEquals(expected, parsed); assertEquals("${varName:Display\\\\Name[0]}", parsed.getScriptReplaceConstant()); } @Test public void testCompleteWithSpecialChars() { DisplayedTaskVariable expected = createVar("varName", "Display{Name}", "varType", "var\\\\\\[Args\\]"); DisplayedTaskVariable parsed = LenientVariableResolver.tryParseTaskVariable( " varName [ varType : var\\\\\\[Args\\] ] : Display\\{Name\\} "); assertEquals(expected, parsed); assertEquals("${varName[vartype:var\\\\\\[Args\\]]:Display{Name\\}}", parsed.getScriptReplaceConstant()); } }