mirror of
https://github.com/apple/swift-nio.git
synced 2026-05-20 20:30:36 +00:00
* Apply formatting
* Apply no block comments rule
* Apply OmitExplicitReturns
* Apple OnlyOneTrailingClosureArgument
* Apply NoAssignmentInExpressions
* Fix up DontRepeatTypeInStaticProperties lint errors
* Apply `OrderedImports`
* Apply `ReplaceForEachWithForLoop`
* format file
* Enable the formatting pipeline
* Adopt `AmbiguousTrailingClosureOverload`
* Fix license header
* Fix format check
* Fix `EndOfLineComment`
* Fix CI
* Adapt CI script to check if changes when running formatting
* Separate lint and format into to steps
* Fix format
* Adopt `UseEarlyExits`
* Revert "Adopt `UseEarlyExits`"
This reverts commit d1ac5bbe12.
71 lines
2.5 KiB
Swift
71 lines
2.5 KiB
Swift
//===----------------------------------------------------------------------===//
|
|
//
|
|
// This source file is part of the SwiftNIO open source project
|
|
//
|
|
// Copyright (c) 2021 Apple Inc. and the SwiftNIO project authors
|
|
// Licensed under Apache License v2.0
|
|
//
|
|
// See LICENSE.txt for license information
|
|
// See CONTRIBUTORS.txt for the list of SwiftNIO project authors
|
|
//
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
import Foundation
|
|
import NIOCore
|
|
import NIOFoundationCompat
|
|
import XCTest
|
|
|
|
class JSONSerializationByteBufferTest: XCTestCase {
|
|
|
|
func testSerializationRoundTrip() {
|
|
|
|
let array = ["String1", "String2", "String3"]
|
|
let dictionary = ["key1": "val1", "key2": "val2", "key3": "val3"]
|
|
|
|
var dataArray = Data()
|
|
var dataDictionary = Data()
|
|
|
|
XCTAssertTrue(JSONSerialization.isValidJSONObject(array), "Array object cannot be converted to JSON")
|
|
XCTAssertTrue(JSONSerialization.isValidJSONObject(dictionary), "Dictionary object cannot be converted to JSON")
|
|
|
|
XCTAssertNoThrow(dataArray = try JSONSerialization.data(withJSONObject: array, options: .prettyPrinted))
|
|
XCTAssertNoThrow(
|
|
dataDictionary = try JSONSerialization.data(withJSONObject: dictionary, options: .prettyPrinted)
|
|
)
|
|
|
|
let arrayByteBuffer = ByteBuffer(data: dataArray)
|
|
let dictByteBuffer = ByteBuffer(data: dataDictionary)
|
|
|
|
var foundationArray: [String] = []
|
|
var foundationDict: [String: String] = [:]
|
|
|
|
// Mutable containers comparison.
|
|
XCTAssertNoThrow(
|
|
foundationArray =
|
|
try JSONSerialization.jsonObject(with: arrayByteBuffer, options: .mutableContainers) as! [String]
|
|
)
|
|
XCTAssertEqual(foundationArray, array)
|
|
|
|
XCTAssertNoThrow(
|
|
foundationDict =
|
|
try JSONSerialization.jsonObject(with: dictByteBuffer, options: .mutableContainers) as! [String: String]
|
|
)
|
|
XCTAssertEqual(foundationDict, dictionary)
|
|
|
|
// Mutable leaves comparison.
|
|
XCTAssertNoThrow(
|
|
foundationArray =
|
|
try JSONSerialization.jsonObject(with: arrayByteBuffer, options: .mutableLeaves) as! [String]
|
|
)
|
|
XCTAssertEqual(foundationArray, array)
|
|
|
|
XCTAssertNoThrow(
|
|
foundationDict =
|
|
try JSONSerialization.jsonObject(with: dictByteBuffer, options: .mutableLeaves) as! [String: String]
|
|
)
|
|
XCTAssertEqual(foundationDict, dictionary)
|
|
}
|
|
}
|