summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBurak Emir <emir@epfl.ch>2008-01-28 22:27:56 +0000
committerBurak Emir <emir@epfl.ch>2008-01-28 22:27:56 +0000
commit9d7b414f6cbb16d87fefb96e28d4c07afde7c65b (patch)
tree594f4e159aa0bb4096c9441d649a52df48dd9bd3
parentfc0948748007901204e63f704c9d52a16464f109 (diff)
downloadscala-9d7b414f6cbb16d87fefb96e28d4c07afde7c65b.tar.gz
scala-9d7b414f6cbb16d87fefb96e28d4c07afde7c65b.tar.bz2
scala-9d7b414f6cbb16d87fefb96e28d4c07afde7c65b.zip
support for <elem key={x:Option[Seq[Node]]} />,...
support for <elem key={x:Option[Seq[Node]]} />, so that Options can be used for optional attributes.
-rw-r--r--src/library/scala/xml/UnprefixedAttribute.scala8
-rw-r--r--test/files/jvm/xmlattr.check12
-rw-r--r--test/files/jvm/xmlattr.scala74
3 files changed, 55 insertions, 39 deletions
diff --git a/src/library/scala/xml/UnprefixedAttribute.scala b/src/library/scala/xml/UnprefixedAttribute.scala
index e8790620de..611eba2ac6 100644
--- a/src/library/scala/xml/UnprefixedAttribute.scala
+++ b/src/library/scala/xml/UnprefixedAttribute.scala
@@ -19,9 +19,13 @@ class UnprefixedAttribute(val key: String, val value: Seq[Node], next1: MetaData
val next = if (value ne null) next1 else next1.remove(key)
- /** same as this(key, Utility.parseAttributeValue(value), next) */
+ /** same as this(key, Text(value), next) */
def this(key: String, value: String, next: MetaData) =
- this(key, if(value ne null) Text(value) else {val z:NodeSeq=null;z}, next)
+ this(key, if (value ne null) Text(value) else {val z:NodeSeq=null;z}, next)
+
+ /** same as this(key, Text(value), next) */
+ def this(key: String, value: Option[Seq[Node]], next: MetaData) =
+ this(key, if (!value.isEmpty) value.get else {val z:NodeSeq=null;z}, next)
/** returns a copy of this unprefixed attribute with the given next field*/
def copy(next: MetaData) =
diff --git a/test/files/jvm/xmlattr.check b/test/files/jvm/xmlattr.check
index bebcb45081..e69de29bb2 100644
--- a/test/files/jvm/xmlattr.check
+++ b/test/files/jvm/xmlattr.check
@@ -1,12 +0,0 @@
-null
-true
- foo="bar"
-Some(bar)
-bar
-
-true
-
-None
-null
-<b x="&amp;"></b>
-<b x="&amp;"></b>
diff --git a/test/files/jvm/xmlattr.scala b/test/files/jvm/xmlattr.scala
index c34f66eafc..0e519f51df 100644
--- a/test/files/jvm/xmlattr.scala
+++ b/test/files/jvm/xmlattr.scala
@@ -1,29 +1,53 @@
-import scala.xml._
-object Test extends Application {
- {
- var z:NodeSeq = null
-
- Console.println(z)
- Console.println(z==null)
- var x = new UnprefixedAttribute("foo","bar", Null)
- //x = new UnprefixedAttribute("foo", null:Seq[Node], x)
- Console.println(x.toString)
- Console.println(x.get("foo")) // Some(bar)
- Console.println(x("foo")) // bar
-
- val y = x.remove("foo")
- Console.println(y.toString)
- Console.println(y == Null) // true
-
- x = new UnprefixedAttribute("foo", z, x)
- Console.println(x.toString)
- Console.println(x.get("foo")) // None
- Console.println(x("foo")) // null
+import testing.SUnit.{Assert, TestCase, TestConsoleMain, TestSuite}
+import xml.{NodeSeq, Null, Text, UnprefixedAttribute}
+
+object Test extends TestConsoleMain {
+ def suite = new TestSuite()
+
+ object UnprefixedAttributeTest extends TestCase("UnprefixedAttribute") with Assert {
+ override def runTest {
+ var x = new UnprefixedAttribute("foo","bar", Null)
+
+ // always assertX(expected, actual)
+ assertEquals(Some(Text("bar")), x.get("foo"));
+ assertEquals(Text("bar"), x("foo"))
+ assertEquals(None, x.get("no_foo"))
+ assertEquals(null, x("no_foo"))
+
+ val y = x.remove("foo")
+ assertEquals(Null, y)
+
+ val z = new UnprefixedAttribute("foo", null:NodeSeq, x)
+ assertEquals(None, z.get("foo"))
+ }
}
- val x1 = <b x="&amp;"/>
- val x2 = <b x={"&"}/>
- Console.println(x1)
- Console.println(x2)
+ object AttributeWithOptionTest extends TestCase("AttributeWithOption") with Assert {
+ override def runTest {
+ var x = new UnprefixedAttribute("foo", Some(Text("bar")), Null)
+ assertEquals(Some(Text("bar")), x.get("foo"));
+ assertEquals(Text("bar"), x("foo"))
+ assertEquals(None, x.get("no_foo"))
+ assertEquals(null, x("no_foo"))
+
+ val attr1 = Some(Text("foo value"))
+ val attr2 = None
+ val y = <b foo={attr1} bar={attr2} />
+ assertEquals(Some(Text("foo value")), y.attributes.get("foo"));
+ assertEquals(Text("foo value"), y.attributes("foo"))
+ assertEquals(None, y.attributes.get("bar"))
+ assertEquals(null, y.attributes("bar"))
+
+ val z = new UnprefixedAttribute("bar", None, x)
+ assertEquals(z.get("foo"), None) // None
+ }
+ }
+
+ object AttributeOutputTest extends TestCase("AttributeOutput") with Assert {
+ override def runTest {
+ assertEquals(<b x="&amp;"/>.toString, "<b x=\"&amp;\"></b>")
+ assertEquals( <b x={"&"}/>.toString, "<b x=\"&amp;\"></b>")
+ }
+ }
}