blob: 3ce551e1c35cc6f90706005f5e983fc5b94920e5 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to you under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* 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.apache.jmeter.functions.gui
import org.apache.jmeter.config.Argument
import org.apache.jmeter.config.Arguments
import org.apache.jmeter.test.gui.DisabledIfHeadless
import org.junit.jupiter.api.Assertions.assertEquals
import org.junit.jupiter.params.ParameterizedTest
import org.junit.jupiter.params.provider.MethodSource
class FunctionHelperTest {
data class BuildCallCase(val functionName: String, val parameters: List<String>, val combined: String)
companion object {
@JvmStatic
fun buildCallCases() = listOf(
BuildCallCase("fname", listOf(), "\${fname}"),
BuildCallCase("fname", listOf("a"), "\${fname(a)}"),
BuildCallCase("fname", listOf("a,b"), "\${fname(a\\,b)}"),
BuildCallCase("fname", listOf("a,b,c"), "\${fname(a\\,b\\,c)}"),
BuildCallCase("fname", listOf("a", "b"), "\${fname(a,b)}"),
BuildCallCase("fname", listOf("a,b", "c"), "\${fname(a\\,b,c)}"),
BuildCallCase("fname", listOf("\\\${f(a,b)}"), "\${fname(\\\${f(a\\,b)})}"),
BuildCallCase("fname", listOf("\${f(a,b)},c,\${g(d,e)}", "h"), "\${fname(\${f(a,b)}\\,c\\,\${g(d,e)},h)}"),
BuildCallCase("fname", listOf("a,\${f(b,\${g(c,d)},e)},f", "h"), "\${fname(a\\,\${f(b,\${g(c,d)},e)}\\,f,h)}"),
)
}
@DisabledIfHeadless
@ParameterizedTest
@MethodSource("buildCallCases")
fun `construct correct call string for parameters #parameters`(case: BuildCallCase) {
val args = Arguments()
args.setArguments(case.parameters.map { Argument("dummy$it", it) })
assertEquals(
case.combined,
FunctionHelper.buildFunctionCallString(case.functionName, args).toString()
) {
"buildFunctionCallString(${case.functionName}, ${case.parameters})"
}
}
}