summaryrefslogtreecommitdiff
path: root/test/files/run
diff options
context:
space:
mode:
authorpaltherr <paltherr@epfl.ch>2004-03-18 18:09:34 +0000
committerpaltherr <paltherr@epfl.ch>2004-03-18 18:09:34 +0000
commit3869143cba26486193f8a79f1f6ca454a0ff729c (patch)
tree8ecbe5f525184043a70fa213c7124a2220cf7016 /test/files/run
parent0af8d12102a49339d823d919c21e881f9c809ccf (diff)
downloadscala-3869143cba26486193f8a79f1f6ca454a0ff729c.tar.gz
scala-3869143cba26486193f8a79f1f6ca454a0ff729c.tar.bz2
scala-3869143cba26486193f8a79f1f6ca454a0ff729c.zip
- Added test files for xml parsing and xml lite...
- Added test files for xml parsing and xml literals
Diffstat (limited to 'test/files/run')
-rw-r--r--test/files/run/xmlLiterals.check13
-rw-r--r--test/files/run/xmlLiterals.flags1
-rw-r--r--test/files/run/xmlLiterals.scala153
-rw-r--r--test/files/run/xmlParsing.check0
-rw-r--r--test/files/run/xmlParsing.flags1
-rw-r--r--test/files/run/xmlParsing.scala42
6 files changed, 210 insertions, 0 deletions
diff --git a/test/files/run/xmlLiterals.check b/test/files/run/xmlLiterals.check
new file mode 100644
index 0000000000..a8e2049ae1
--- /dev/null
+++ b/test/files/run/xmlLiterals.check
@@ -0,0 +1,13 @@
+passed ok
+passed ok
+passed ok
+passed ok
+passed ok
+passed ok
+passed ok
+passed ok
+passed ok
+passed ok
+passed ok
+Seq(<foo></foo>, <bar>Text</bar>, <foo></foo>)
+<foo></foo>
diff --git a/test/files/run/xmlLiterals.flags b/test/files/run/xmlLiterals.flags
new file mode 100644
index 0000000000..49cf1af47f
--- /dev/null
+++ b/test/files/run/xmlLiterals.flags
@@ -0,0 +1 @@
+-Xmarkup
diff --git a/test/files/run/xmlLiterals.scala b/test/files/run/xmlLiterals.scala
new file mode 100644
index 0000000000..a2b5998fe5
--- /dev/null
+++ b/test/files/run/xmlLiterals.scala
@@ -0,0 +1,153 @@
+//############################################################################
+// XML Literals
+//############################################################################
+// $Id$
+
+import scala.testing.UnitTest._ ;
+
+import scala.xml._ ;
+
+object Test with Application {
+
+ def noWS(x:String):String = {
+ val res = new StringBuffer();
+ var i = 0; while( i < x.length() ) {
+ val c = x.charAt( i );
+ c match {
+ case ' ' | '\n' | '\t' =>
+ case _ => res.append( c )
+ }
+ i = i + 1;
+ }
+ res.toString();
+ }
+
+
+
+ /* */
+ /* === tags, elements === */
+ /* */
+
+ val x = <hello></hello>.toString(); /* see neg(1) */
+
+ /* whitespace (ws) handling */
+
+ val x2 = <hello > </hello>.toString(); /* ws in tags allowed */
+
+ assertEquals( x, noWS( x2 ) );
+
+ val x3 = <hello>
+ <world></world>
+ <test/>
+ <mars></mars></hello>.toString(); /* ws in element content */
+
+ /* Scala comments are not allowed in XML literals. see neg(2) */
+
+ assertEquals( noWS( x3 ),
+ Elem("hello",
+ Elem("world"),
+ Elem("test"),
+ Elem("mars")).toString() );
+
+ /* examples that MUST fail
+
+ val zzz = <hello>/* no comment */</hello>
+ assertEquals( zzz, Elem("hello", Text("/* no comment */");
+
+ */
+
+ /* */
+ /* === attributes === */
+ /* */
+
+ val z = <html>
+ <body background="#FFFFFF">
+ <h1>Hello World</h1>
+ <p>Check the <a href="scala.epfl.ch">scala</a> page!</p>
+ </body>
+ </html>.toString();
+
+ assertEquals( noWS( z ), noWS(
+ Elem("html",
+ Elem("body",
+ Elem("h1",Text("Hello World")),
+ Elem("p",Text("Check the "),
+ Elem("a", Text("scala"))
+ % ('href <= "scala.epfl.ch" ),
+ Text("page!"))
+ ) %('background <= "#FFFFFF")
+ ).toString()
+ ));
+
+ /* todo: better way to deal with whitespace in content */
+ /* (Canonical XML or even more aggressive normlization) */
+
+ /* */
+ /* === embedded Scala blocks === */
+ /* */
+
+ def computeDate() = {
+ Elem("date", Text("now!"));
+ }
+
+
+ /* embedding Scala strings as text and elements */
+ val sc = <hello>{ "World" }{ Text("42") }{ computeDate() }</hello>;
+
+ assertEquals( sc.child.elements.toList,
+ List( Text("World"), Text("42"), Elem( "date", Text("now!") ) ) );
+
+ assertEquals( sc.toString(),
+ Elem("hello",Text("World42"),Elem("date",Text("now!"))).toString() );
+
+ def foo( m:Node ):String = m match {
+ case <hello/> => "hello node"
+ case <hallo ></hallo > => "hallo node"
+ case <test>{ z }</test> => "test node:"+z
+ case <list>{ e1:Node }{ e2:Node }{ _* }</list> => e1.toString() + e2.toString();
+ }
+
+ assertEquals( foo(<hello/>), "hello node" );
+ assertEquals( foo(<hallo/>), "hallo node" );
+ assertEquals( foo(<test>42</test>), "test node:42" );
+ assertEquals( foo(<list><a/><b><c/></b><d/><d/></list>),
+ <a/>.toString() + <b><c/></b>.toString() );
+
+ val rows = <tr>
+ <td>1.1</td><td>1.2</td>
+ </tr>
+ <tr>
+ <td>2.1</td><td>2.2</td>
+ </tr>;
+
+ assertEquals( noWS( rows.toList.toString() ),
+ noWS( List(Elem("tr",
+ Elem("td",Text("1.1")),Elem("td",Text("1.2"))
+ ),
+ Elem("tr",
+ Elem("td",Text("2.1")),Elem("td",Text("2.2"))
+ )
+ ).toString() )
+ );
+ val rows2 = <tr><!-- an XML comment --><td>1.1</td><td>1.2</td>
+ </tr>
+ <tr>
+ <td>2.1</td><td>2.2</td>
+ </tr>;
+
+ assertEquals( noWS( rows.toList.toString() ), noWS( rows2.toList.toString() ) );
+
+ val sequence = <foo/>
+ <bar>Text</bar>
+ <foo/>;
+
+ Console.println( sequence );
+
+ val onlyOne = <foo/>;
+
+ Console.println( onlyOne );
+
+ val tryBrace = <try>Now we try escaped {{ braces }} </try>
+
+}
+
diff --git a/test/files/run/xmlParsing.check b/test/files/run/xmlParsing.check
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/test/files/run/xmlParsing.check
diff --git a/test/files/run/xmlParsing.flags b/test/files/run/xmlParsing.flags
new file mode 100644
index 0000000000..49cf1af47f
--- /dev/null
+++ b/test/files/run/xmlParsing.flags
@@ -0,0 +1 @@
+-Xmarkup
diff --git a/test/files/run/xmlParsing.scala b/test/files/run/xmlParsing.scala
new file mode 100644
index 0000000000..d602d9e0bc
--- /dev/null
+++ b/test/files/run/xmlParsing.scala
@@ -0,0 +1,42 @@
+//############################################################################
+// XML Parsing
+//############################################################################
+// $Id$
+
+import scala.testing.UnitTest._ ;
+
+import scala.xml._ ;
+
+/** this file test just succesful run of the parser. There are no checks whether
+ * the encoding to Scala expressions is done correctly
+ */
+object Test with Application {
+
+ val x0 = <hello/>;
+ val x1s = <foo></foo>.toString();
+ val x2 = <foo><bar><baz/></bar><bar/></foo>.toString();
+
+ /* whitespace (ws) handling */
+
+ val x3 = <hello > </hello>.toString(); /* ws in tags allowed */
+
+ val x4 = <hello>
+ <world></world>
+ <test/>
+ <mars></mars></hello>.toString(); /* ws in element content */
+
+ /* attributes */
+
+ val z = <html>
+ <body background="#FFFFFF">
+ <h1>Hello World</h1>
+ <p>Check the <a href="scala.epfl.ch">scala</a> page!</p>
+ </body>
+ </html>.toString();
+
+ val ent = <foo>
+ hello &nbsp; character entities!
+ welcome &#0160; unicode characters!
+ </foo>
+
+}