summaryrefslogtreecommitdiff
path: root/src/test/scala/cc/spray
diff options
context:
space:
mode:
authorMathias <mathias@spray.cc>2011-05-09 09:57:13 +0200
committerMathias <mathias@spray.cc>2011-05-09 09:57:13 +0200
commit7146a4af52a888f0cdf1a806cf640ef243e82a6c (patch)
treec0f41d242f2053674bfe2f6f0b005b8a2b2f0897 /src/test/scala/cc/spray
parentb9b9ae1bc56362695217bb2a8850586700c0315a (diff)
downloadspray-json-7146a4af52a888f0cdf1a806cf640ef243e82a6c.tar.gz
spray-json-7146a4af52a888f0cdf1a806cf640ef243e82a6c.tar.bz2
spray-json-7146a4af52a888f0cdf1a806cf640ef243e82a6c.zip
Squash sub package 'formats'
Diffstat (limited to 'src/test/scala/cc/spray')
-rw-r--r--src/test/scala/cc/spray/json/ReadmeSpec.scala66
-rw-r--r--src/test/scala/cc/spray/json/formats/GenericFormatsSpec.scala2
2 files changed, 67 insertions, 1 deletions
diff --git a/src/test/scala/cc/spray/json/ReadmeSpec.scala b/src/test/scala/cc/spray/json/ReadmeSpec.scala
new file mode 100644
index 0000000..8669c0d
--- /dev/null
+++ b/src/test/scala/cc/spray/json/ReadmeSpec.scala
@@ -0,0 +1,66 @@
+package cc.spray.json
+
+import org.specs.Specification
+
+class ReadmeSpec extends Specification {
+
+ "The Usage snippets" should {
+ "behave as expected" in {
+ import DefaultJsonProtocol._
+
+ val json = """{ "some": "JSON source" }"""
+ val jsonAst = JsonParser(json)
+ jsonAst mustEqual JsObject(JsField("some", "JSON source"))
+
+ val json2 = PrettyPrinter(jsonAst)
+ json2 mustEqual
+ """{
+ | "some": "JSON source"
+ |}""".stripMargin
+
+ val jsonAst2 = List(1, 2, 3).toJson
+ jsonAst2 mustEqual JsArray(JsNumber(1), JsNumber(2), JsNumber(3))
+ }
+ }
+
+ case class Color(name: String, red: Int, green: Int, blue: Int)
+
+ "The case class example" should {
+ "behave as expected" in {
+ object MyJsonProtocol extends DefaultJsonProtocol {
+ implicit val colorFormat = jsonFormat(Color, "name", "red", "green", "blue")
+ }
+ import MyJsonProtocol._
+
+ val json = Color("CadetBlue", 95, 158, 160).toJson
+ val color = json.fromJson[Color]
+
+ color mustEqual Color("CadetBlue", 95, 158, 160)
+ }
+ }
+
+ "The non case class example" should {
+ "behave as expected" in {
+ object MyJsonProtocol extends DefaultJsonProtocol {
+ implicit object ColorJsonFormat extends JsonFormat[Color] {
+ def write(c: Color) = {
+ JsArray(JsString(c.name), JsNumber(c.red), JsNumber(c.green), JsNumber(c.blue))
+ }
+ def read(value: JsValue) = value match {
+ case JsArray(JsString(name) :: JsNumber(red) :: JsNumber(green) :: JsNumber(blue) :: Nil) => {
+ new Color(name, red.toInt, green.toInt, blue.toInt)
+ }
+ case _ => throw new DeserializationException("Color expected")
+ }
+ }
+ }
+ import MyJsonProtocol._
+
+ val json = Color("CadetBlue", 95, 158, 160).toJson
+ val color = json.fromJson[Color]
+
+ color mustEqual Color("CadetBlue", 95, 158, 160)
+ }
+ }
+
+} \ No newline at end of file
diff --git a/src/test/scala/cc/spray/json/formats/GenericFormatsSpec.scala b/src/test/scala/cc/spray/json/formats/GenericFormatsSpec.scala
index adc6fcb..60f4494 100644
--- a/src/test/scala/cc/spray/json/formats/GenericFormatsSpec.scala
+++ b/src/test/scala/cc/spray/json/formats/GenericFormatsSpec.scala
@@ -6,7 +6,7 @@ import org.specs.Specification
class GenericFormatsSpec extends Specification with GenericFormats with BasicFormats {
case class Test2(a: Int, b: Double)
- implicit val test2Format = format(Test2, "a", "b")
+ implicit val test2Format = jsonFormat(Test2, "a", "b")
"A JsonFormat created with format, for a case class with 2 elements," should {
val obj = Test2(42, 4.2)