SwifterTestsJSON.swift 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. //
  2. // SwifterTestsJSON.swift
  3. // Swifter
  4. //
  5. // Copyright © 2016 Damian Kołakowski. All rights reserved.
  6. //
  7. import XCTest
  8. import Swifter
  9. class SwifterTestsSwfitJSON: XCTestCase {
  10. func testJSONStringEscape() {
  11. XCTAssertEqual("".asJson(0), "\"\"")
  12. XCTAssertEqual("\"".asJson(0), "\"\\\"\"")
  13. XCTAssertEqual("\\".asJson(0), "\"\\\\\"")
  14. XCTAssertEqual("/".asJson(0), "\"\\/\"")
  15. XCTAssertEqual("\u{8}".asJson(0), "\"\\b\"")
  16. XCTAssertEqual("\u{0C}".asJson(0), "\"\\f\"")
  17. XCTAssertEqual("\r".asJson(0), "\"\\r\"")
  18. XCTAssertEqual("\n".asJson(0), "\"\\n\"")
  19. XCTAssertEqual("\t".asJson(0), "\"\\t\"")
  20. XCTAssertEqual("ę".asJson(0), "\"\\u0119\"")
  21. XCTAssertEqual("한".asJson(0), "\"\\uD55C\"")
  22. XCTAssertEqual("💖".asJson(0), "\"\\u1F496\"")
  23. XCTAssertEqual("🐪".asJson(0), "\"\\u1F42A\"")
  24. // From Ruby: https://github.com/ruby/ruby/blob/trunk/test/json/json_encoding_test.rb
  25. XCTAssertEqual("© ≠ €!".asJson(0), "\"\\u00A9 \\u2260 \\u20AC!\"")
  26. }
  27. func testJSONNumber() {
  28. XCTAssertEqual(0.asJson(0), "0")
  29. XCTAssertEqual(1.asJson(0), "1")
  30. XCTAssertEqual(99999.asJson(0), "99999")
  31. XCTAssertEqual((1.01).asJson(0), "1.01")
  32. XCTAssertEqual((1.0).asJson(0), "1.0")
  33. XCTAssertEqual(Double(1.01).asJson(0), "1.01")
  34. }
  35. func testJSONBool() {
  36. XCTAssertEqual(true.asJson(0), "true")
  37. XCTAssertEqual(false.asJson(0), "false")
  38. }
  39. func testJSONObject() {
  40. XCTAssertEqual([1, 2].asJson(0), "[1,2]")
  41. XCTAssertEqual(["key1" : [1, 2]].asJson(0), "{\"key1\":[1,2]}")
  42. XCTAssertEqual(["key1" : ["key2": ["key3": false]]].asJson(0), "{\"key1\":{\"key2\":{\"key3\":false}}}")
  43. XCTAssertEqual(["key1" : ["key2": ["key3": false, "key4": 1]]].asJson(0), "{\"key1\":{\"key2\":{\"key4\":1,\"key3\":false}}}")
  44. }
  45. }