diff options
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.java | 142 |
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 + "'"); + } + } +} |