diff options
author | Mathias <mathias@spray.cc> | 2012-10-12 14:15:12 +0200 |
---|---|---|
committer | Mathias <mathias@spray.cc> | 2012-10-12 14:15:12 +0200 |
commit | e5a7de26dfc8a4bb4410b7ee500624e30bf66650 (patch) | |
tree | 70d2133716f04df15b93350a36b8dd1aad28704c /src/test/scala/spray/json/StandardFormatsSpec.scala | |
parent | 5354b7b2b1af66049328eed150e036a314878559 (diff) | |
download | spray-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.scala | 76 |
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 |