001: // Copyright (C) 2003,2004,2005 by Object Mentor, Inc. All rights reserved.
002: // Released under the terms of the GNU General Public License version 2 or later.
003: package fitnesse.wikitext.widgets;
004:
005: import fitnesse.wiki.InMemoryPage;
006: import fitnesse.wiki.PageCrawler;
007: import fitnesse.wiki.PathParser;
008: import fitnesse.wiki.WikiPage;
009:
010: public class TagWidgetTest extends AbstractWidget {
011:
012: private PageCrawler crawler;
013:
014: private WikiPage root;
015:
016: private WikiPage parentOne;
017:
018: public void setUp() throws Exception {
019: root = InMemoryPage.makeRoot("RooT");
020: crawler = root.getPageCrawler();
021: parentOne = crawler.addPage(root,
022: PathParser.parse("ParentOne"), "parent");
023: }
024:
025: //
026: // Tag values
027: //
028: public void testSingleTag() throws Exception {
029: TagWidget widget = new TagWidget(new WidgetRoot(parentOne), "!"
030: + TagWidget.WIDGET_NAME + " apple\n");
031:
032: String widgetContent = widget.render();
033: assertTagPresent(widgetContent, "apple");
034: }
035:
036: public void testMultipleTags() throws Exception {
037: TagWidget widget = new TagWidget(new WidgetRoot(parentOne), "!"
038: + TagWidget.WIDGET_NAME + " apple orange dog\n");
039:
040: String widgetContent = widget.render();
041: assertTagPresent(widgetContent, "apple");
042: assertTagPresent(widgetContent, "orange");
043: assertTagPresent(widgetContent, "dog");
044: }
045:
046: public void testTinyTags() throws Exception {
047: TagWidget widget = new TagWidget(new WidgetRoot(parentOne), "!"
048: + TagWidget.WIDGET_NAME + " a");
049:
050: String widgetContent = widget.render();
051: assertTagPresent(widgetContent, "a");
052: }
053:
054: public void testBigTags() throws Exception {
055: String lognTag = "ReallyLongTagThatHasLotsOfLetters";
056: TagWidget widget = new TagWidget(new WidgetRoot(parentOne), "!"
057: + TagWidget.WIDGET_NAME + " " + lognTag);
058:
059: String widgetContent = widget.render();
060: assertTagPresent(widgetContent, lognTag);
061:
062: widget = new TagWidget(new WidgetRoot(parentOne), "!"
063: + TagWidget.WIDGET_NAME + " " + lognTag + " " + lognTag
064: + "2");
065:
066: widgetContent = widget.render();
067: assertTagPresent(widgetContent, lognTag);
068: assertTagPresent(widgetContent, lognTag + "2");
069: }
070:
071: //
072: // Display
073: //
074: public void testLowercase() throws Exception {
075: TagWidget widget = new TagWidget(new WidgetRoot(parentOne), "!"
076: + TagWidget.WIDGET_NAME.toLowerCase() + " apple\n");
077:
078: String widgetContent = widget.render();
079: assertTagPresent(widgetContent, "apple");
080: assertTrue(widgetContent.indexOf(TagWidget.WIDGET_TITLE) != -1);
081: }
082:
083: public void testInvalidTags() throws Exception {
084: TagWidget widget = new TagWidget(new WidgetRoot(parentOne), "!"
085: + TagWidget.WIDGET_NAME + " @ok$");
086:
087: String widgetContent = widget.render();
088: assertTrue(widgetContent, widgetContent
089: .indexOf(TagWidget.WIDGET_TITLE) != -1);
090: assertTrue(widgetContent, widgetContent
091: .indexOf(TagWidget.ERROR_INVALID_TAG) != -1);
092: }
093:
094: public void testMissingTags() throws Exception {
095: TagWidget widget = new TagWidget(new WidgetRoot(parentOne), "!"
096: + TagWidget.WIDGET_NAME + " ");
097:
098: String widgetContent = widget.render();
099: assertTrue(widgetContent, widgetContent
100: .indexOf(TagWidget.WIDGET_TITLE) != -1);
101: assertTrue(widgetContent, widgetContent
102: .indexOf(TagWidget.ERROR_INVALID_TAG) != -1);
103: }
104:
105: //
106: // Whitespace
107: //
108: public void testWhitespace() throws Exception {
109: TagWidget widget = new TagWidget(new WidgetRoot(parentOne), "!"
110: + TagWidget.WIDGET_NAME + " apple \t orange\n");
111:
112: String widgetContent = widget.render();
113: assertTagPresent(widgetContent, "apple");
114: assertTagPresent(widgetContent, "orange");
115: }
116:
117: public void testWhitespaceAgain() throws Exception {
118: TagWidget widget = new TagWidget(new WidgetRoot(parentOne), "!"
119: + TagWidget.WIDGET_NAME
120: + " apple \t orange dog\tcow\n");
121:
122: String widgetContent = widget.render();
123: assertTagPresent(widgetContent, "apple");
124: assertTagPresent(widgetContent, "orange");
125: assertTagPresent(widgetContent, "dog");
126: assertTagPresent(widgetContent, "cow");
127: }
128:
129: //
130: // Regex
131: //
132: public void testRegexp() throws Exception {
133: // Well formed
134: assertMatches("!" + TagWidget.WIDGET_NAME + " orange\r");
135: assertMatches("!" + TagWidget.WIDGET_NAME + " orange\n");
136: assertMatches("!" + TagWidget.WIDGET_NAME + " orange42 apple\n");
137: assertMatches("!" + TagWidget.WIDGET_NAME
138: + " orange apple dog\n");
139:
140: // Lowercase
141: assertMatches("!" + TagWidget.WIDGET_NAME.toLowerCase()
142: + " 42orange apple\n");
143: assertMatches("!" + TagWidget.WIDGET_NAME.toLowerCase()
144: + " orange ap3ple dog\n");
145:
146: // Extra whitespace
147: assertMatches("!" + TagWidget.WIDGET_NAME
148: + " orange apple\r");
149: assertMatches("!" + TagWidget.WIDGET_NAME
150: + " \t orange apple\tDOG lion goose\n");
151:
152: // Missing required parameters
153: assertNoMatch("!" + TagWidget.WIDGET_NAME + "\r");
154: assertNoMatch("!" + TagWidget.WIDGET_NAME + "\n");
155:
156: // Illegal characters
157: // assertNoMatch("!" + TagWidget.WIDGET_NAME + " or|ange \r");
158: // assertNoMatch("!" + TagWidget.WIDGET_NAME + " du!-ck\n");
159: }
160:
161: //
162: // Utility methods
163: //
164: private void assertTagPresent(String content, String tag) {
165: assertTrue(content, content.indexOf(getRenderedTag(tag)) != -1);
166: }
167:
168: private String getRenderedTag(String tag) {
169: return ">" + tag + "</span>";
170: }
171:
172: protected String getRegexp() {
173: return TagWidget.REGEXP;
174: }
175: }
|