package org.test4j.spec.scenario.step.txt; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import org.test4j.spec.scenario.step.txt.ParameterParser; import org.test4j.testng.Test4J; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; @SuppressWarnings("rawtypes") public class ParameterParserTest extends Test4J { @Test(dataProvider = "dataForParserSinglePara") public void testParseSinglePara(String words, String key, String value, int expectedIndex) { Map<String, String> paras = new HashMap<String, String>(); int index = ParameterParser.parseSinglePara(paras, words.toCharArray(), 0, "1"); want.map(paras).hasEntry(key, value); want.number(index).isEqualTo(expectedIndex); } @DataProvider public Iterator dataForParserSinglePara() { return new DataIterator() { { data("customerId=10023", "customerId", "10023", 16); data("id=\"abc\"|说明}", "id", "abc", 11); data("id=\"a\\|bc\"|说明}", "id", "a|bc", 13); data("id=\"a\\}bc\"|说明}", "id", "a}bc", 13); data("id=\"a\\\\bc\"|说明}", "id", "a\\bc", 13); data("id=\"a\\\"bc\"|说明}", "id", "a\"bc", 13); data("abc", "1", "abc", 3); data("\"=abc\"", "1", "=abc", 6); data("\"\\}bc\"", "1", "}bc", 6); } }; } @Test(dataProvider = "dataForParserParameter") public void testParserParameter(String words, Map<String, String> expected) { Map<String, String> maps = ParameterParser.parserParameter(words); want.map(maps).reflectionEq(expected); } @SuppressWarnings("serial") @DataProvider public Iterator dataForParserParameter() { return new DataIterator() { { data("do${value1}in${value2}", new HashMap<String, String>() { { put("1", "value1"); put("2", "value2"); } }); data("do${key1=value1|说明}in${value2", new HashMap<String, String>() { { put("key1", "value1"); put("2", "value2"); } }); data("do${key1=va\\}lue1|说明}in${value2", new HashMap<String, String>() { { put("key1", "va}lue1"); put("2", "value2"); } }); } }; } }