summaryrefslogtreecommitdiff
path: root/src/test/scala/spray/json/StandardFormatsSpec.scala
diff options
context:
space:
mode:
authorMathias <mathias@spray.cc>2012-10-12 14:15:12 +0200
committerMathias <mathias@spray.cc>2012-10-12 14:15:12 +0200
commite5a7de26dfc8a4bb4410b7ee500624e30bf66650 (patch)
tree70d2133716f04df15b93350a36b8dd1aad28704c /src/test/scala/spray/json/StandardFormatsSpec.scala
parent5354b7b2b1af66049328eed150e036a314878559 (diff)
downloadspray-json-e5a7de26dfc8a4bb4410b7ee500624e30bf66650.tar.gz
spray-json-e5a7de26dfc8a4bb4410b7ee500624e30bf66650.tar.bz2
spray-json-e5a7de26dfc8a4bb4410b7ee500624e30bf66650.zip
Remove obsolete /cc/ package directories
Diffstat (limited to 'src/test/scala/spray/json/StandardFormatsSpec.scala')
-rw-r--r--src/test/scala/spray/json/StandardFormatsSpec.scala76
1 files changed, 76 insertions, 0 deletions
diff --git a/src/test/scala/spray/json/StandardFormatsSpec.scala b/src/test/scala/spray/json/StandardFormatsSpec.scala
new file mode 100644
index 0000000..0b4dc26
--- /dev/null
+++ b/src/test/scala/spray/json/StandardFormatsSpec.scala
@@ -0,0 +1,76 @@
+/*
+ * Copyright (C) 2011 Mathias Doenitz
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package spray.json
+
+import org.specs2.mutable._
+import scala.Right
+
+class StandardFormatsSpec extends Specification with DefaultJsonProtocol {
+
+ "The optionFormat" should {
+ "convert None to JsNull" in {
+ None.asInstanceOf[Option[Int]].toJson mustEqual JsNull
+ }
+ "convert JsNull to None" in {
+ JsNull.convertTo[Option[Int]] mustEqual None
+ }
+ "convert Some(Hello) to JsString(Hello)" in {
+ Some("Hello").asInstanceOf[Option[String]].toJson mustEqual JsString("Hello")
+ }
+ "convert JsString(Hello) to Some(Hello)" in {
+ JsString("Hello").convertTo[Option[String]] mustEqual Some("Hello")
+ }
+ }
+
+ "The eitherFormat" should {
+ val a: Either[Int, String] = Left(42)
+ val b: Either[Int, String] = Right("Hello")
+
+ "convert the left side of an Either value to Json" in {
+ a.toJson mustEqual JsNumber(42)
+ }
+ "convert the right side of an Either value to Json" in {
+ b.toJson mustEqual JsString("Hello")
+ }
+ "convert the left side of an Either value from Json" in {
+ JsNumber(42).convertTo[Either[Int, String]] mustEqual Left(42)
+ }
+ "convert the right side of an Either value from Json" in {
+ JsString("Hello").convertTo[Either[Int, String]] mustEqual Right("Hello")
+ }
+ }
+
+ "The tuple1Format" should {
+ "convert (42) to a JsNumber" in {
+ Tuple1(42).toJson mustEqual JsNumber(42)
+ }
+ "be able to convert a JsNumber to a Tuple1[Int]" in {
+ JsNumber(42).convertTo[Tuple1[Int]] mustEqual Tuple1(42)
+ }
+ }
+
+ "The tuple2Format" should {
+ val json = JsArray(JsNumber(42), JsNumber(4.2))
+ "convert (42, 4.2) to a JsArray" in {
+ (42, 4.2).toJson mustEqual json
+ }
+ "be able to convert a JsArray to a (Int, Double)]" in {
+ json.convertTo[(Int, Double)] mustEqual (42, 4.2)
+ }
+ }
+
+} \ No newline at end of file