From 9d7b414f6cbb16d87fefb96e28d4c07afde7c65b Mon Sep 17 00:00:00 2001 From: Burak Emir Date: Mon, 28 Jan 2008 22:27:56 +0000 Subject: support for ,... support for , so that Options can be used for optional attributes. --- src/library/scala/xml/UnprefixedAttribute.scala | 8 ++- test/files/jvm/xmlattr.check | 12 ---- test/files/jvm/xmlattr.scala | 74 ++++++++++++++++--------- 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 - - 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 = - val x2 = - 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 = + 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(.toString, "") + assertEquals( .toString, "") + } + } } -- cgit v1.2.3