You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
session-ios/SessionUtilitiesKitTests/Utilities/BencodeEncoderSpec.swift

58 lines
1.9 KiB
Swift

// Copyright © 2023 Rangeproof Pty Ltd. All rights reserved.
import Foundation
import Quick
import Nimble
@testable import SessionUtilitiesKit
class BencodeEncoderSpec: QuickSpec {
override class func spec() {
// MARK: - BencodeEncoder
describe("BencodeEncoder") {
// MARK: ---- should decode a basic string
it("should decode a basic string") {
let result: Data? = try? BencodeEncoder().encode("howdy")
expect(result).to(equal("5:howdy".data(using: .utf8)!))
}
// MARK: ---- should decode a basic integer
it("should decode a basic integer") {
let result: Data? = try? BencodeEncoder().encode(3)
expect(result).to(equal("i3e".data(using: .utf8)!))
}
// MARK: ---- should decode a list of integers
it("should decode a list of integers") {
let result: Data? = try? BencodeEncoder().encode([1, 2])
expect(result).to(equal("li1ei2ee".data(using: .utf8)!))
}
// MARK: ---- should decode a basic dict
it("should decode a basic dict") {
let result: Data? = try? BencodeEncoder().encode(["spam": ["a", "b"]])
expect(result).to(equal("d4:spaml1:a1:bee".data(using: .utf8)!))
}
// MARK: ---- decodes a decodable type
it("decodes a decodable type") {
let result: Data? = try? BencodeEncoder().encode(TestType(intValue: 100, stringValue: "Test"))
expect(result).to(equal("d8:intValuei100e11:stringValue4:Teste".data(using: .utf8)!))
}
}
}
}
// MARK: - Test Types
fileprivate struct TestType: Codable, Equatable {
let intValue: Int
let stringValue: String
}