|
| 1 | +import Units |
| 2 | +import XCTest |
| 3 | + |
| 4 | +/// Test conversion coefficients, registry inclusion, and default value inclusion for all units |
| 5 | +/// To check all 3, we use tests of the form |
| 6 | +/// ```swift |
| 7 | +/// try XCTAssertEqual(Measurement("1<symbol>"), <coefficient>.measured(in: .<base_unit>).convert(to: .<name>)) |
| 8 | +/// ``` |
| 9 | +/// This really is just a double-check that the unit coefficient assigned as expected, and is included in all the appropriate code locations. |
| 10 | +class DefinitionTests: XCTestCase { |
| 11 | + func testData() throws { |
| 12 | + try XCTAssertEqual(Measurement("1bit"), 1.measured(in: .bit).convert(to: .bit)) |
| 13 | + try XCTAssertEqual(Measurement("1kbit"), 1000.measured(in: .bit).convert(to: .kilobit)) |
| 14 | + try XCTAssertEqual(Measurement("1Mbit"), 1e6.measured(in: .bit).convert(to: .megabit)) |
| 15 | + try XCTAssertEqual(Measurement("1Gbit"), 1e9.measured(in: .bit).convert(to: .gigabit)) |
| 16 | + try XCTAssertEqual(Measurement("1Tbit"), 1e12.measured(in: .bit).convert(to: .terabit)) |
| 17 | + try XCTAssertEqual(Measurement("1Pbit"), 1e15.measured(in: .bit).convert(to: .petabit)) |
| 18 | + try XCTAssertEqual(Measurement("1Ebit"), 1e18.measured(in: .bit).convert(to: .exabit)) |
| 19 | + try XCTAssertEqual(Measurement("1Zbit"), 1e21.measured(in: .bit).convert(to: .zetabit)) |
| 20 | + try XCTAssertEqual(Measurement("1Ybit"), 1e24.measured(in: .bit).convert(to: .yottabit)) |
| 21 | + |
| 22 | + try XCTAssertEqual(Measurement("1Kibit"), 1024.measured(in: .bit).convert(to: .kibibit)) |
| 23 | + try XCTAssertEqual(Measurement("1Mibit"), pow(1024, 2).measured(in: .bit).convert(to: .mebibit)) |
| 24 | + try XCTAssertEqual(Measurement("1Gibit"), pow(1024, 3).measured(in: .bit).convert(to: .gibibit)) |
| 25 | + try XCTAssertEqual(Measurement("1Tibit"), pow(1024, 4).measured(in: .bit).convert(to: .tebibit)) |
| 26 | + try XCTAssertEqual(Measurement("1Pibit"), pow(1024, 5).measured(in: .bit).convert(to: .pebibit)) |
| 27 | + try XCTAssertEqual(Measurement("1Eibit"), pow(1024, 6).measured(in: .bit).convert(to: .exbibit)) |
| 28 | + try XCTAssertEqual(Measurement("1Zibit"), pow(1024, 7).measured(in: .bit).convert(to: .zebibit)) |
| 29 | + try XCTAssertEqual(Measurement("1Yibit"), pow(1024, 8).measured(in: .bit).convert(to: .yobibit)) |
| 30 | + |
| 31 | + try XCTAssertEqual(Measurement("1byte"), 8.measured(in: .bit).convert(to: .byte)) |
| 32 | + try XCTAssertEqual(Measurement("1kB"), 8000.measured(in: .bit).convert(to: .kilobyte)) |
| 33 | + try XCTAssertEqual(Measurement("1MB"), 8e6.measured(in: .bit).convert(to: .megabyte)) |
| 34 | + try XCTAssertEqual(Measurement("1GB"), 8e9.measured(in: .bit).convert(to: .gigabyte)) |
| 35 | + try XCTAssertEqual(Measurement("1TB"), 8e12.measured(in: .bit).convert(to: .terabyte)) |
| 36 | + try XCTAssertEqual(Measurement("1PB"), 8e15.measured(in: .bit).convert(to: .petabyte)) |
| 37 | + try XCTAssertEqual(Measurement("1EB"), 8e18.measured(in: .bit).convert(to: .exabyte)) |
| 38 | + try XCTAssertEqual(Measurement("1ZB"), 8e21.measured(in: .bit).convert(to: .zetabyte)) |
| 39 | + try XCTAssertEqual(Measurement("1YB"), 8e24.measured(in: .bit).convert(to: .yottabyte)) |
| 40 | + |
| 41 | + try XCTAssertEqual(Measurement("1KiB"), 8 * 1024.measured(in: .bit).convert(to: .kibibyte)) |
| 42 | + try XCTAssertEqual(Measurement("1MiB"), 8 * pow(1024, 2).measured(in: .bit).convert(to: .mebibyte)) |
| 43 | + try XCTAssertEqual(Measurement("1GiB"), 8 * pow(1024, 3).measured(in: .bit).convert(to: .gibibyte)) |
| 44 | + try XCTAssertEqual(Measurement("1TiB"), 8 * pow(1024, 4).measured(in: .bit).convert(to: .tebibyte)) |
| 45 | + try XCTAssertEqual(Measurement("1PiB"), 8 * pow(1024, 5).measured(in: .bit).convert(to: .pebibyte)) |
| 46 | + try XCTAssertEqual(Measurement("1EiB"), 8 * pow(1024, 6).measured(in: .bit).convert(to: .exbibyte)) |
| 47 | + try XCTAssertEqual(Measurement("1ZiB"), 8 * pow(1024, 7).measured(in: .bit).convert(to: .zebibyte)) |
| 48 | + try XCTAssertEqual(Measurement("1YiB"), 8 * pow(1024, 8).measured(in: .bit).convert(to: .yobibyte)) |
| 49 | + } |
| 50 | +} |
0 commit comments