aboutsummaryrefslogtreecommitdiff
path: root/gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/Parser_Test.java
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/Parser_Test.java')
-rw-r--r--gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/Parser_Test.java142
1 files changed, 142 insertions, 0 deletions
diff --git a/gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/Parser_Test.java b/gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/Parser_Test.java
new file mode 100644
index 00000000..da65de51
--- /dev/null
+++ b/gnu/testlet/gnu/javax/swing/text/html/parser/support/Parser/Parser_Test.java
@@ -0,0 +1,142 @@
+// Tags: not-a-test
+
+// Copyright (C) 2005 Audrius Meskauskas <audriusa@bluewin.ch>
+
+// This file is part of Mauve.
+
+// Mauve is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2, or (at your option)
+// any later version.
+
+// Mauve is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License
+// along with Mauve; see the file COPYING. If not, write to
+// the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+// Boston, MA 02110-1301 USA.
+
+
+package gnu.testlet.gnu.javax.swing.text.html.parser.support.Parser;
+
+import java.io.StringReader;
+import java.util.Enumeration;
+import java.util.Iterator;
+import java.util.TreeSet;
+
+import javax.swing.text.AttributeSet;
+import javax.swing.text.MutableAttributeSet;
+import javax.swing.text.SimpleAttributeSet;
+import javax.swing.text.html.HTML;
+import javax.swing.text.html.HTMLEditorKit;
+import javax.swing.text.html.parser.ParserDelegator;
+
+/**
+ * @author Audrius Meskauskas (AudriusA@Bioinformatics.org)
+ */
+public class Parser_Test
+ extends HTMLEditorKit.ParserCallback
+{
+ public boolean hideImplied = true;
+ protected StringBuffer out = new StringBuffer();
+ AttributeSet atts = new SimpleAttributeSet();
+
+ public void generate(String x, String comment)
+ throws Exception
+ {
+ String prolog = "<html><head></head><body>";
+ String epilog = "</body></html>";
+ String html = x; // prolog+x+epilog;
+ System.out.println("// Test " + comment + ".");
+ System.out.println("v.verify(\"" + html + "\",\n \"" + verify(html, null) +
+ "\");"
+ );
+ }
+
+ public void handleComment(char[] parm1, int position)
+ {
+ out.append("{" + new String(parm1) + "}");
+ }
+
+ public void handleEndTag(HTML.Tag tag, int position)
+ {
+ out.append("</" + tag + ">");
+ }
+
+ public void handleSimpleTag(HTML.Tag tag, MutableAttributeSet attributes,
+ int position
+ )
+ {
+ if (tag.toString().equals("#pcdata"))
+ return;
+ out.append("<" + tag);
+ dumpAttributes(attributes);
+ out.append("/>");
+ }
+
+ public void handleStartTag(HTML.Tag tag, MutableAttributeSet attributes,
+ int position
+ )
+ {
+ out.append("<" + tag);
+ dumpAttributes(attributes);
+ out.append('>');
+ }
+
+ public void handleText(char[] chars, int position)
+ {
+ out.append("'" + new String(chars) + "'");
+ }
+
+ public String verify(String html, String trace)
+ throws Exception
+ {
+ out.setLength(0);
+
+ HTMLEditorKit.ParserCallback callback = this;
+ ParserDelegator delegator = new ParserDelegator();
+ delegator.parse(new StringReader(html), callback, true);
+
+ String ou = out.toString();
+ if (trace != null)
+ {
+ if (!ou.equals(trace))
+ {
+ System.err.println("Unable to parse '" + html + "':");
+ System.err.println(" expected: '" + trace + "',");
+ System.out.println(" returned: '" + ou + "'.");
+ throw new Exception("'" + html + "' -> '" + ou + "' expected '" +
+ trace + "'"
+ );
+ }
+ }
+ return ou;
+ }
+
+ protected void dumpAttributes(AttributeSet atts)
+ {
+ Enumeration e = atts.getAttributeNames();
+
+ // Sort them to ensure the same order every time:
+ TreeSet t = new TreeSet();
+ while (e.hasMoreElements())
+ t.add(e.nextElement().toString());
+
+ Iterator iter = t.iterator();
+
+ while (iter.hasNext())
+ {
+ String a = iter.next().toString();
+
+ if (hideImplied)
+ if (a.equals("_implied_"))
+ continue;
+
+ String v = atts.getAttribute(a).toString();
+ out.append(" " + a + "='" + v + "'");
+ }
+ }
+}