summaryrefslogtreecommitdiff
path: root/shared/src/test/scala/spray/json/PrettyPrinterSpec.scala
diff options
context:
space:
mode:
Diffstat (limited to 'shared/src/test/scala/spray/json/PrettyPrinterSpec.scala')
-rw-r--r--shared/src/test/scala/spray/json/PrettyPrinterSpec.scala71
1 files changed, 71 insertions, 0 deletions
diff --git a/shared/src/test/scala/spray/json/PrettyPrinterSpec.scala b/shared/src/test/scala/spray/json/PrettyPrinterSpec.scala
new file mode 100644
index 0000000..b547f59
--- /dev/null
+++ b/shared/src/test/scala/spray/json/PrettyPrinterSpec.scala
@@ -0,0 +1,71 @@
+/*
+ * 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 scala.collection.immutable.ListMap
+import org.specs2.mutable._
+
+class PrettyPrinterSpec extends Specification {
+
+ "The PrettyPrinter" should {
+ "print a more complicated JsObject nicely aligned" in {
+ val js = JsonParser {
+ """{
+ | "Boolean no": false,
+ | "Boolean yes":true,
+ | "Unic\u00f8de" : "Long string with newline\nescape",
+ | "key with \"quotes\"" : "string",
+ | "key with spaces": null,
+ | "number": -1.2323424E-5,
+ | "simpleKey" : "some value",
+ | "sub object" : {
+ | "sub key": 26.5,
+ | "a": "b",
+ | "array": [1, 2, { "yes":1, "no":0 }, ["a", "b", null], false]
+ | },
+ | "zero": 0
+ |}""".stripMargin
+ }
+ def fixedFieldOrder(js: JsValue): JsValue = js match {
+ case JsObject(fields) => JsObject(ListMap(fields.toSeq.sortBy(_._1).map { case (k, v) => (k, fixedFieldOrder(v)) }:_*))
+ case x => x
+ }
+
+ PrettyPrinter(fixedFieldOrder(js)) mustEqual {
+ """{
+ | "Boolean no": false,
+ | "Boolean yes": true,
+ | "Unic\u00f8de": "Long string with newline\nescape",
+ | "key with \"quotes\"": "string",
+ | "key with spaces": null,
+ | "number": -0.000012323424,
+ | "simpleKey": "some value",
+ | "sub object": {
+ | "a": "b",
+ | "array": [1, 2, {
+ | "no": 0,
+ | "yes": 1
+ | }, ["a", "b", null], false],
+ | "sub key": 26.5
+ | },
+ | "zero": 0
+ |}""".stripMargin
+ }
+ }
+ }
+
+} \ No newline at end of file