package org.test4j.spec.scenario.step.txt; import java.util.HashMap; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.Map; import org.test4j.spec.scenario.step.txt.ParameterParser2; import org.test4j.testng.Test4J; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; @SuppressWarnings("rawtypes") public class ParameterParser2Test 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 = ParameterParser2.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", 12); data("id=\"a\\|bc\"|说明】", "id", "a|bc", 14); data("id=\"a\\}bc\"|说明】", "id", "a}bc", 14); data("id=\"a\\\\bc\"|说明】", "id", "a\\bc", 14); data("id=\"a\\\"bc\"|说明】", "id", "a\"bc", 14); 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> paras = new LinkedHashMap<String, String>(); ParameterParser2.parserParameter(words, paras); want.map(paras).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"); } }); } }; } }