package org.kefirsf.bb.proc;
import org.junit.Test;
import org.kefirsf.bb.UrlCollection;
import static org.junit.Assert.assertEquals;
import static org.kefirsf.bb.proc.ProcUrl.Schema.*;
/**
* Test parse methods of ProcUrl
*
* @author kefir
*/
public class ProcUrlMethodTest {
public static final String PREFIX = "prefix";
public static final String SUFFIX = "suffix";
private final ProcUrl url;
public ProcUrlMethodTest() {
url = new ProcUrl("a", false, false, false);
}
@Test
public void testParseSchema(){
assertEquals(HTTP, url.parseSchema(createSource("http://"), PREFIX.length()));
assertEquals(HTTPS, url.parseSchema(createSource("https://"), PREFIX.length()));
assertEquals(FTP, url.parseSchema(createSource("ftp://"), PREFIX.length()));
assertEquals(MAILTO, url.parseSchema(createSource("mailto:"), PREFIX.length()));
assertEquals(HTTP, url.parseSchema(createSource("HTTP://"), PREFIX.length()));
assertEquals(HTTPS, url.parseSchema(createSource("HTTPS://"), PREFIX.length()));
assertEquals(FTP, url.parseSchema(createSource("FTP://"), PREFIX.length()));
assertEquals(MAILTO, url.parseSchema(createSource("MAILTO:"), PREFIX.length()));
}
@Test
public void testParseAuthority(){
String[] authorities = new String[]{
"", "john.smith@", "john.smith:pa22w0rd@",
"JOHN.smith@", "john.SMITH:pa22w0rd@"
};
for(String authority: authorities) {
assertEquals(authority, authority.length(), url.parseAuthority(createSource(authority), PREFIX.length()));
}
}
@Test
public void testParseHost(){
String[] hosts = new String[]{
"", "example.com", "www.example.com", "kefirsf.org",
};
for(String host: hosts) {
assertEquals(
host, host.length(),
url.parseHost(createSource(host), PREFIX.length(), new PatternConstant(SUFFIX, false))
);
}
}
@Test
public void testParsePath(){
String[] paths = new String[]{
"", "/", "/home", "/home/", "/home/web", "/AZaz09-._~!$&'()*+,;=:@"
};
for(String path: paths) {
assertEquals(
path, path.length(),
url.parsePath(createSource(path), PREFIX.length(), new PatternConstant(SUFFIX, false))
);
}
}
@Test
public void testParseQuery(){
String[] queries = new String[]{
"", "?", "?key=value", "?key1=value1&key2=value2"
};
for(String query: queries) {
assertEquals(
query, query.length(),
url.parseQuery(createSource(query), PREFIX.length(), new PatternConstant(SUFFIX, false))
);
}
}
@Test
public void testParseFragment(){
String[] fragments = new String[]{
"", "#", "#anchor"
};
for(String fragment: fragments) {
assertEquals(
fragment, fragment.length(),
url.parseFragment(createSource(fragment), PREFIX.length(), new PatternConstant(SUFFIX, false))
);
}
}
@Test
public void testParseLength(){
for(String url1: UrlCollection.VALID) {
assertEquals(
url1, url1.length(),
url.parseLength(createSource(url1), PREFIX.length(), new PatternConstant(SUFFIX, false))
);
}
}
private Source createSource(String value){
StringBuilder b = new StringBuilder();
b.append(PREFIX);
b.append(value);
b.append(SUFFIX);
return new Source(b);
}
}