Skip to content

Commit 33f9fc7

Browse files
test: Add definition unit tests
1 parent 6f7056a commit 33f9fc7

2 files changed

Lines changed: 54 additions & 1 deletion

File tree

Sources/Units/Unit/DefaultUnits.swift

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,10 @@ import Foundation
22

33
/// Static type containing this package's pre-defined units
44
enum DefaultUnits {
5-
// MARK: If adding units to this list, add corresponding entries in the `Unit+DefaultUnits.swift` & `Registry.swift` files
5+
// MARK: If adding units to this list, add corresponding entries to the following files:
6+
// - Unit+DefaultUnits.swift
7+
// - Registry.swift
8+
// - DefinitionTests.swift
69

710
// MARK: Acceleration
811

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
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

Comments
 (0)