package org.limewire.lws.server;
import java.util.HashMap;
import java.util.Map;
import org.limewire.util.BaseTestCase;
abstract class AbstractParseTestCase extends BaseTestCase {
public AbstractParseTestCase(String s) { super(s); }
public void allTest() {
runTest("", new String[]{ });
runTest("p1=v1", new String[]{ "p1", "v1"});
runTest("p1=", new String[]{ "p1", ""});
runTest("p1", new String[]{ "p1", null});
runTest("p1=v1|p2=v2", new String[]{ "p1", "v1", "p2", "v2"});
runTest("p1=v1|p2=v2|p3=v3", new String[]{ "p1", "v1", "p2", "v2", "p3", "v3"});
}
abstract Map<String, String> parse(String line);
/**
* Returns the separator between name/value pairs.
*
* @return the separator between name/value pairs
*/
abstract String getNameValuePairSeparator();
/**
* Runs a test on a given {@link String}, <code>line</code>, and
* expected values.
*
* @param subject subject of the test
* @param expectedNameValuePairs expected name/value pairs, where the evens
* are names and the odds are values
*/
private void runTest(String subject, String[] expectedNameValuePairs) {
subject = subject.replace("|",getNameValuePairSeparator());
Map<String, String> want = new HashMap<String, String>();
for (int i = 0; i<expectedNameValuePairs.length; i += 2) want.put(expectedNameValuePairs[i], expectedNameValuePairs[i+1]);
Map<String, String> have = parse(subject);
assertEquals(subject, want, have);
}
}