|
| 1 | +// This source file is part of the Swift.org open source project |
| 2 | +// |
| 3 | +// Copyright (c) 2014 - 2019 Apple Inc. and the Swift project authors |
| 4 | +// Licensed under Apache License v2.0 with Runtime Library Exception |
| 5 | +// |
| 6 | +// See http://swift.org/LICENSE.txt for license information |
| 7 | +// See http://swift.org/CONTRIBUTORS.txt for the list of Swift project authors |
| 8 | +// |
| 9 | + |
| 10 | +class TestUnitVolume: XCTestCase { |
| 11 | + func testMetricVolumeConversions() { |
| 12 | + let cubicKilometers = Measurement(value: 4, unit: UnitVolume.cubicKilometers) |
| 13 | + XCTAssertEqual(cubicKilometers, Measurement(value: 4e9, unit: UnitVolume.cubicMeters), "Conversion from cubicKilometers to cubicMeters") |
| 14 | + |
| 15 | + let megaliters = Measurement(value: 3, unit: UnitVolume.megaliters) |
| 16 | + XCTAssertEqual(megaliters, Measurement(value: 3_000_000, unit: UnitVolume.liters), "Conversion from megaliters to liters") |
| 17 | + |
| 18 | + let kiloliters = Measurement(value: 2, unit: UnitVolume.kiloliters) |
| 19 | + XCTAssertEqual(kiloliters, Measurement(value: 2000, unit: UnitVolume.liters), "Conversion from kiloliters to liters") |
| 20 | + |
| 21 | + let cubicMeters = Measurement(value: 2, unit: UnitVolume.cubicMeters) |
| 22 | + XCTAssertEqual(cubicMeters, Measurement(value: 2000, unit: UnitVolume.liters), "Conversion from cubicMeters to liters") |
| 23 | + XCTAssertEqual(kiloliters, cubicMeters, "Conversion from kiloliters to cubicMeters") |
| 24 | + |
| 25 | + let liters = Measurement(value: 5, unit: UnitVolume.liters) |
| 26 | + XCTAssertEqual(liters, Measurement(value: 5, unit: UnitVolume.cubicDecimeters), "Conversion from liters to cubicDecimeters") |
| 27 | + XCTAssertEqual(liters, Measurement(value: 50, unit: UnitVolume.deciliters), "Conversion from liters to deciliters") |
| 28 | + XCTAssertEqual(liters, Measurement(value: 500, unit: UnitVolume.centiliters), "Conversion from liters to centiliters") |
| 29 | + XCTAssertEqual(liters, Measurement(value: 5000, unit: UnitVolume.milliliters), "Conversion from liters to milliliters") |
| 30 | + XCTAssertEqual(liters, Measurement(value: 5000, unit: UnitVolume.cubicCentimeters), "Conversion from liters to cubicCentimeters") |
| 31 | + XCTAssertEqual(liters, Measurement(value: 5e6, unit: UnitVolume.cubicMillimeters), "Conversion from liters to cubicMillimeters") |
| 32 | + } |
| 33 | + |
| 34 | + func testMetricToImperialVolumeConversion() { |
| 35 | + let liters = Measurement(value: 10, unit: UnitVolume.liters) |
| 36 | + XCTAssertEqual(liters.converted(to: .cubicInches).value, 610.236, accuracy: 0.001, "Conversion from liters to cubicInches") |
| 37 | + } |
| 38 | + |
| 39 | + func testImperialVolumeConversions() { |
| 40 | + let cubicMiles = Measurement(value: 1, unit: UnitVolume.cubicMiles) |
| 41 | + XCTAssertEqual(cubicMiles.converted(to: .cubicYards).value, 1760 * 1760 * 1760, accuracy: 1_000_000, "Conversion from cubicMiles to cubicYards") |
| 42 | + |
| 43 | + let cubicYards = Measurement(value: 1, unit: UnitVolume.cubicYards) |
| 44 | + XCTAssertEqual(cubicYards.converted(to: .cubicFeet).value, 27, accuracy: 0.001, "Conversion from cubicYards to cubicFeet") |
| 45 | + |
| 46 | + let cubicFeet = Measurement(value: 1, unit: UnitVolume.cubicFeet) |
| 47 | + XCTAssertEqual(cubicFeet.converted(to: .cubicInches).value, 1728, accuracy: 0.01, "Conversion from cubicFeet to cubicInches") |
| 48 | + |
| 49 | + let gallons = Measurement(value: 1, unit: UnitVolume.gallons) |
| 50 | + XCTAssertEqual(gallons.converted(to: .quarts).value, 4, accuracy: 0.001, "Conversion from gallons to quarts") |
| 51 | + |
| 52 | + let quarts = Measurement(value: 1, unit: UnitVolume.quarts) |
| 53 | + XCTAssertEqual(quarts.converted(to: .pints).value, 2, accuracy: 0.001, "Conversion from quarts to pints") |
| 54 | + |
| 55 | + let pints = Measurement(value: 1, unit: UnitVolume.pints) |
| 56 | + XCTAssertEqual(pints.converted(to: .cups).value, 2, accuracy: 0.05, "Conversion from pints to cups") |
| 57 | + |
| 58 | + let cups = Measurement(value: 1, unit: UnitVolume.cups) |
| 59 | + XCTAssertEqual(cups.converted(to: .fluidOunces).value, 8.12, accuracy: 0.01, "Conversion from cups to fluidOunces") |
| 60 | + |
| 61 | + let fluidOunces = Measurement(value: 1, unit: UnitVolume.fluidOunces) |
| 62 | + XCTAssertEqual(fluidOunces.converted(to: .tablespoons).value, 2, accuracy: 0.001, "Conversion from fluidOunces to tablespoons") |
| 63 | + |
| 64 | + let tablespoons = Measurement(value: 1, unit: UnitVolume.tablespoons) |
| 65 | + XCTAssertEqual(tablespoons.converted(to: .teaspoons).value, 3, accuracy: 0.001, "Conversion from tablespoons to teaspoons") |
| 66 | + |
| 67 | + let teaspoons = Measurement(value: 1, unit: UnitVolume.teaspoons) |
| 68 | + XCTAssertEqual(teaspoons.converted(to: .cubicInches).value, 0.3, accuracy: 0.001, "Conversion from teaspoons to cubicInches") |
| 69 | + } |
| 70 | + |
| 71 | + static let allTests = [ |
| 72 | + ("testMetricVolumeConversions", testMetricVolumeConversions), |
| 73 | + ("testMetricToImperialVolumeConversion", testMetricToImperialVolumeConversion), |
| 74 | + ("testImperialVolumeConversions", testImperialVolumeConversions), |
| 75 | + ] |
| 76 | +} |
0 commit comments