import CustomDump
import XCTest
@testable import XXClient

final class NodeRegistrationReportTests: XCTestCase {
  func testCoding() throws {
    let registered: Int = 128
    let total: Int = 2048
    let jsonString = """
    {
      "NumberOfNodesRegistered": \(registered),
      "NumberOfNodes": \(total)
    }
    """
    let jsonData = jsonString.data(using: .utf8)!
    let model = try NodeRegistrationReport.decode(jsonData)

    XCTAssertNoDifference(model, NodeRegistrationReport(
      registered: registered,
      total: total
    ))

    let encodedModel = try model.encode()
    let decodedModel = try NodeRegistrationReport.decode(encodedModel)

    XCTAssertNoDifference(decodedModel, model)
  }

  func testRatio() {
    let model = NodeRegistrationReport(
      registered: 128,
      total: 2048
    )

    XCTAssertEqual(model.ratio, 0.0625)
  }

  func testRatioWhenNoNodes() {
    let model = NodeRegistrationReport(
      registered: 128,
      total: 0
    )

    XCTAssertEqual(model.ratio, 0)
  }
}