package no.java.incogito.domain;
import junit.framework.TestCase;
import no.java.incogito.domain.IncogitoUri.IncogitoRestEventsUri.IncogitoRestEventUri.IncogitoRestSessionUri;
import no.java.incogito.domain.Session.Format;
import static no.java.incogito.domain.IncogitoTestData.session46;
import java.util.LinkedList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* @author <a href="mailto:trygvis@java.no">Trygve Laugstøl</a>
* @version $Id$
*/
public class IncogitoUriTest extends TestCase {
public void testBasic() {
IncogitoUri incogitoUri = new IncogitoUri("http://localhost");
String what = incogitoUri.events().eventUri("JavaZone 2009").session(session46);
assertEquals("http://localhost/events/JavaZone%202009/sessions/Dokumentasjon%20uten%20pistol%20-%20g%C3%A5r%20det%20an%3F", what);
IncogitoRestSessionUri session2RestUri = incogitoUri.restEvents().eventUri("JavaZone 2009").session(IncogitoTestData.session3);
String s = session2RestUri.toString();
assertEquals("http://localhost/rest/events/JavaZone%202009/sessions/b8a6034f-573d-4321-9155-a5ed31885958", s);
assertEquals("http://localhost/rest/events/JavaZone%202009/sessions/b8a6034f-573d-4321-9155-a5ed31885958/speaker-photos/2", session2RestUri.speakerPhoto(2));
assertEquals("http://localhost/events/JavaZone%202009/sessions/Scala%20%2b%20Wicket%20=%20Match%20made%20in%20heaven%3F",
incogitoUri.events().eventUri("JavaZone 2009").session(session46.title("Scala + Wicket = Match made in heaven?")));
assertEquals("http://localhost/events/JavaZone%202009/sessions/%2b=",
incogitoUri.events().eventUri("JavaZone 2009").session(session46.title("+=")));
}
// public void testCrap() {
// String expr = "^/events/([.&&[^/]]*)/?$";
// showMatches("/events/JavaZone%202009/", expr);
// showMatches("/events/JavaZone%202009", expr);
//
// expr = "^/events/([\\w%0-9])*";
// showMatches("/events/JavaZone%202009/", expr);
// showMatches("/events/JavaZone%202009", expr);
//
// expr = "^/events/(.*)?$";
// showMatches("/events/JavaZone%202009/", expr);
// showMatches("/events/JavaZone%202009", expr);
// }
private void showMatches(String text, String regexp) {
List<Integer> starts = new LinkedList<Integer>();
List<Integer> ends = new LinkedList<Integer>();
List<String> groups = new LinkedList<String>();
Pattern pattern = Pattern.compile(regexp);
Matcher matcher = pattern.matcher(text);
while (matcher.find()) {
// System.out.println("start: " + matcher.start() + ", end: " + matcher.end() + ", group: " + matcher.group());
starts.add(matcher.start());
ends.add(matcher.end());
groups.add(matcher.group());
}
System.out.print(regexp + " with " + text + " => ");
for (String group : groups) {
System.out.println(group);
}
// System.out.print("match: ");
//
// if (starts.size() == 0) {
// System.out.println();
// return;
// }
//
// int start = starts.remove(0);
// int end = ends.remove(0);
// for (int i = 0; i < text.length(); i++) {
// if (i == start && start == end - 1) {
// System.out.print("|");
// }
// else if (i == start) {
// System.out.print("|");
// } else if (i == end - 1) {
// System.out.print("|");
//
// if (starts.size() == 0) {
// break;
// }
// start = starts.remove(0);
// end = ends.remove(0);
// } else if (start < i && i < end) {
// System.out.print("-");
// } else {
// System.out.print(" ");
// }
// }
//
// System.out.println();
System.out.println();
}
}