Skip to content
Snippets Groups Projects
Commit 526642a5 authored by Dariusz Rybicki's avatar Dariusz Rybicki
Browse files

Add Progress model

parent 98585779
No related branches found
No related tags found
2 merge requests!102Release 1.0.0,!18Update Bindings
import Foundation
public struct Progress: Equatable {
public init(
completed: Bool,
transmitted: Int,
total: Int
) {
self.completed = completed
self.transmitted = transmitted
self.total = total
}
public var completed: Bool
public var transmitted: Int
public var total: Int
// TODO: add error
// public var error: ???
}
import Bindings
extension Progress: Codable {
enum CodingKeys: String, CodingKey {
case completed = "Completed"
case transmitted = "Transmitted"
case total = "Total"
// TODO: add error
// case error = "Err"
}
public static func decode(_ data: Data) throws -> Self {
try JSONDecoder().decode(Self.self, from: data)
}
public func encode() throws -> Data {
try JSONEncoder().encode(self)
}
}
import CustomDump
import XCTest
@testable import ElixxirDAppsSDK
final class ProgressTests: XCTestCase {
func testCoding() throws {
let completed = false
let transmitted: Int = 128
let total: Int = 2048
let jsonString = """
{
"Completed": \(completed),
"Transmitted": \(transmitted),
"Total": \(total),
"Err": null
}
"""
let jsonData = jsonString.data(using: .utf8)!
let progress = try Progress.decode(jsonData)
XCTAssertNoDifference(progress, Progress(
completed: completed,
transmitted: transmitted,
total: total
))
let encodedProgress = try progress.encode()
let decodedProgress = try Progress.decode(encodedProgress)
XCTAssertNoDifference(decodedProgress, progress)
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment