/**
* Tests that a permalink can be generated for a blog entry.
*/
public void testBlogEntryPermalink() throws Exception {
BlogService service = new BlogService();
BlogEntry blogEntry = new BlogEntry(blog);
service.putBlogEntry(blogEntry);
String prefix = "/";
String suffix = "";
blogEntry.setTitle("Here is a title");
assertEquals(prefix + "here-is-a-title" + suffix, permalinkProvider.getPermalink(blogEntry));
blogEntry.setTitle("Here's a title");
assertEquals(prefix + "heres-a-title" + suffix, permalinkProvider.getPermalink(blogEntry));
blogEntry.setTitle("Here's a title!");
assertEquals(prefix + "heres-a-title" + suffix, permalinkProvider.getPermalink(blogEntry));
blogEntry.setTitle("Here_is_a_title");
assertEquals(prefix + "here-is-a-title" + suffix, permalinkProvider.getPermalink(blogEntry));
blogEntry.setTitle("Here-is-a-title");
assertEquals(prefix + "here-is-a-title" + suffix, permalinkProvider.getPermalink(blogEntry));
blogEntry.setTitle("Here is a title");
assertEquals(prefix + "here-is-a-title" + suffix, permalinkProvider.getPermalink(blogEntry));
blogEntry.setTitle("Here is : a title");
assertEquals(prefix + "here-is-a-title" + suffix, permalinkProvider.getPermalink(blogEntry));
blogEntry.setTitle("Here is/a title");
assertEquals(prefix + "here-is-a-title" + suffix, permalinkProvider.getPermalink(blogEntry));
blogEntry.setTitle("Here is\\a title");
assertEquals(prefix + "here-is-a-title" + suffix, permalinkProvider.getPermalink(blogEntry));
blogEntry.setTitle("Here is, a title");
assertEquals(prefix + "here-is-a-title" + suffix, permalinkProvider.getPermalink(blogEntry));
blogEntry.setTitle("Here is; a title");
assertEquals(prefix + "here-is-a-title" + suffix, permalinkProvider.getPermalink(blogEntry));
blogEntry.setTitle("Here is a title.");
assertEquals(prefix + "here-is-a-title" + suffix, permalinkProvider.getPermalink(blogEntry));
blogEntry.setTitle(":Here is a title.");
assertEquals(prefix + "here-is-a-title" + suffix, permalinkProvider.getPermalink(blogEntry));
blogEntry.setTitle("Here is. a title");
assertEquals(prefix + "here-is-a-title" + suffix, permalinkProvider.getPermalink(blogEntry));
blogEntry.setTitle(null);
assertEquals(prefix + blogEntry.getId() + suffix, permalinkProvider.getPermalink(blogEntry));
blogEntry.setTitle("");
assertEquals(prefix + blogEntry.getId() + suffix, permalinkProvider.getPermalink(blogEntry));
blogEntry.setTitle("./:!@�$%^&*()");
assertEquals(prefix + blogEntry.getId() + suffix, permalinkProvider.getPermalink(blogEntry));
blogEntry.setTitle("Here is a title with chars from the latin1 supplemental charset: \u00a0 \u00a1 \u00a2 \u00a3 \u00a4 \u00a5 \u00a6 \u00a7 \u00a8 \u00a9 \u00aa \u00ab \u00ac \u00ad \u00ae \u00af");
assertEquals(prefix + "here-is-a-title-with-chars-from-the-latin1-supplemental-charset" + suffix, permalinkProvider.getPermalink(blogEntry));
blogEntry.setTitle("Here is a title with chars from the latin1 supplemental charset: \u00b0 \u00b1 \u00b2 \u00b3 \u00b4 \u00b5 \u00b6 \u00b7 \u00b8 \u00b9 \u00ba \u00bb \u00bc \u00bd \u00be \u00bf");
assertEquals(prefix + "here-is-a-title-with-chars-from-the-latin1-supplemental-charset-2-3" + suffix, permalinkProvider.getPermalink(blogEntry));
blogEntry.setTitle("Here is a title with chars from the latin1 supplemental charset: \u00c0 \u00c1 \u00c2 \u00c3 \u00c4 \u00c5 \u00c6 \u00c7 \u00c8 \u00c9 \u00ca \u00cb \u00cc \u00cd \u00ce \u00cf");
assertEquals(prefix + "here-is-a-title-with-chars-from-the-latin1-supplemental-charset-a-a-a-a-a-a-ae-c-e-e-e-e-i-i-i-i" + suffix, permalinkProvider.getPermalink(blogEntry));
blogEntry.setTitle("Here is a title with chars from the latin1 supplemental charset: \u00d0 \u00d1 \u00d2 \u00d3 \u00d4 \u00d5 \u00d6 \u00d7 \u00d8 \u00d9 \u00da \u00db \u00dc \u00dd \u00de \u00df");
assertEquals(prefix + "here-is-a-title-with-chars-from-the-latin1-supplemental-charset-d-n-o-o-o-o-o-x-o-u-u-u-u-y-p-ss" + suffix, permalinkProvider.getPermalink(blogEntry));
blogEntry.setTitle("Here is a title with chars from the latin1 supplemental charset: \u00e0 \u00e1 \u00e2 \u00e3 \u00e4 \u00e5 \u00e6 \u00e7 \u00e8 \u00e9 \u00ea \u00eb \u00ec \u00ed \u00ee \u00ef");
assertEquals(prefix + "here-is-a-title-with-chars-from-the-latin1-supplemental-charset-a-a-a-a-a-a-ae-c-e-e-e-e-i-i-i-i" + suffix, permalinkProvider.getPermalink(blogEntry));
blogEntry.setTitle("Here is a title with chars from the latin1 supplemental charset: \u00f0 \u00f1 \u00f2 \u00f3 \u00f4 \u00f5 \u00f6 \u00f7 \u00f8 \u00f9 \u00fa \u00fb \u00fc \u00fd \u00fe \u00ff");
assertEquals(prefix + "here-is-a-title-with-chars-from-the-latin1-supplemental-charset-d-n-o-o-o-o-o-o-u-u-u-u-y-p-y" + suffix, permalinkProvider.getPermalink(blogEntry));
}