-
Dariusz Rybicki authoredDariusz Rybicki authored
JSONHelpersTests.swift 4.73 KiB
import CustomDump
import XCTest
@testable import XXClient
final class JSONHelpersTests: XCTestCase {
func testConvertingNumberToStringByKey() {
assertConvertingJsonNumberToString(
input: #"{"number":1234567890,"text":"hello"}"#,
key: "number",
expected: #"{"number":"1234567890","text":"hello"}"#
)
assertConvertingJsonNumberToString(
input: #"{"text":"hello","number":1234567890}"#,
key: "number",
expected: #"{"text":"hello","number":"1234567890"}"#
)
assertConvertingJsonNumberToString(
input: #"{ "number" : 1234567890 , "text" : "hello" }"#,
key: "number",
expected: #"{ "number" : "1234567890" , "text" : "hello" }"#
)
assertConvertingJsonNumberToString(
input: #"{ "text" : "hello" , "number" : 1234567890 }"#,
key: "number",
expected: #"{ "text" : "hello" , "number" : "1234567890" }"#
)
assertConvertingJsonNumberToString(
input: """
{
"number": 1234567890,
"text": "hello"
}
""",
key: "number",
expected: """
{
"number": "1234567890",
"text": "hello"
}
"""
)
assertConvertingJsonNumberToString(
input: """
{
"text": "hello",
"number": 1234567890
}
""",
key: "number",
expected: """
{
"text": "hello",
"number": "1234567890"
}
"""
)
}
func testConvertingNumberToStringByLength() {
assertConvertingJsonNumberToString(
input: """
{
"text": "hello",
"number1": 123456789,
"number2": 1234567890,
"number3": 123456789,
"number4": 1234567890
}
""",
minNumberLength: 10,
expected: """
{
"text": "hello",
"number1": 123456789,
"number2": "1234567890",
"number3": 123456789,
"number4": "1234567890"
}
"""
)
assertConvertingJsonNumberToString(
input: #"{"text":"hello","number1":123456789,"number2":1234567890,"number3":123456789,"number4":1234567890}"#,
minNumberLength: 10,
expected: #"{"text":"hello","number1":123456789,"number2":"1234567890","number3":123456789,"number4":"1234567890"}"#
)
}
func testConvertingStringToNumber() {
assertConvertingJsonStringToNumber(
input: #"{"number":"1234567890","text":"hello"}"#,
key: "number",
expected: #"{"number":1234567890,"text":"hello"}"#
)
assertConvertingJsonStringToNumber(
input: #"{"text":"hello","number":"1234567890"}"#,
key: "number",
expected: #"{"text":"hello","number":1234567890}"#
)
assertConvertingJsonStringToNumber(
input: #"{ "number" : "1234567890" , "text" : "hello" }"#,
key: "number",
expected: #"{ "number" : 1234567890 , "text" : "hello" }"#
)
assertConvertingJsonStringToNumber(
input: #"{ "text" : "hello" , "number" : "1234567890" }"#,
key: "number",
expected: #"{ "text" : "hello" , "number" : 1234567890 }"#
)
assertConvertingJsonStringToNumber(
input: """
{
"number": "1234567890",
"text": "hello"
}
""",
key: "number",
expected: """
{
"number": 1234567890,
"text": "hello"
}
"""
)
assertConvertingJsonStringToNumber(
input: """
{
"text": "hello",
"number": "1234567890"
}
""",
key: "number",
expected: """
{
"text": "hello",
"number": 1234567890
}
"""
)
}
}
private func assertConvertingJsonNumberToString(
input: String,
key: String,
expected: String,
file: StaticString = #file,
line: UInt = #line
) {
XCTAssertNoDifference(
String(
data: convertJsonNumberToString(
in: input.data(using: .utf8)!,
at: key
),
encoding: .utf8
)!,
expected,
file: file,
line: line
)
}
private func assertConvertingJsonNumberToString(
input: String,
minNumberLength: Int,
expected: String,
file: StaticString = #file,
line: UInt = #line
) {
XCTAssertNoDifference(
String(
data: convertJsonNumberToString(
in: input.data(using: .utf8)!,
minNumberLength: minNumberLength
),
encoding: .utf8
)!,
expected,
file: file,
line: line
)
}
private func assertConvertingJsonStringToNumber(
input: String,
key: String,
expected: String,
file: StaticString = #file,
line: UInt = #line
) {
XCTAssertNoDifference(
String(
data: convertJsonStringToNumber(
in: input.data(using: .utf8)!,
at: key
),
encoding: .utf8
)!,
expected,
file: file,
line: line
)
}