Skip to content

Commit 914a8ae

Browse files
authored
Merge pull request #2561 from ole/unitvolume-coefficients
SR-11766: Fix coefficients for UnitVolume
2 parents f395efa + 0941304 commit 914a8ae

File tree

5 files changed

+84
-2
lines changed

5 files changed

+84
-2
lines changed

Foundation.xcodeproj/project.pbxproj

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -388,6 +388,7 @@
388388
5BF9B8001FABD5DA00EE1A7C /* CFBundle_Main.c in Sources */ = {isa = PBXBuildFile; fileRef = 5BF9B7F41FABD5D300EE1A7C /* CFBundle_Main.c */; };
389389
5BF9B8011FABD5DA00EE1A7C /* CFBundle_ResourceFork.c in Sources */ = {isa = PBXBuildFile; fileRef = 5BF9B7F61FABD5D400EE1A7C /* CFBundle_ResourceFork.c */; };
390390
5BF9B8021FABD5DA00EE1A7C /* CFBundle_Tables.c in Sources */ = {isa = PBXBuildFile; fileRef = 5BF9B7F71FABD5D400EE1A7C /* CFBundle_Tables.c */; };
391+
5D0E1BDB237A1FE800C35C5A /* TestUnitVolume.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5D0E1BDA237A1FE800C35C5A /* TestUnitVolume.swift */; };
391392
5FE52C951D147D1C00F7D270 /* TestNSTextCheckingResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5FE52C941D147D1C00F7D270 /* TestNSTextCheckingResult.swift */; };
392393
616068F3225DE5C2004FCC54 /* FTPServer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 616068F2225DE5C2004FCC54 /* FTPServer.swift */; };
393394
616068F5225DE606004FCC54 /* TestURLSessionFTP.swift in Sources */ = {isa = PBXBuildFile; fileRef = 616068F4225DE606004FCC54 /* TestURLSessionFTP.swift */; };
@@ -1018,6 +1019,7 @@
10181019
5BF9B7F61FABD5D400EE1A7C /* CFBundle_ResourceFork.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = CFBundle_ResourceFork.c; sourceTree = "<group>"; };
10191020
5BF9B7F71FABD5D400EE1A7C /* CFBundle_Tables.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = CFBundle_Tables.c; sourceTree = "<group>"; };
10201021
5BF9B7F81FABD5D500EE1A7C /* CFBundle_Executable.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = CFBundle_Executable.c; sourceTree = "<group>"; };
1022+
5D0E1BDA237A1FE800C35C5A /* TestUnitVolume.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TestUnitVolume.swift; sourceTree = "<group>"; };
10211023
5E5835F31C20C9B500C81317 /* TestThread.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TestThread.swift; sourceTree = "<group>"; };
10221024
5EB6A15C1C188FC40037DCB8 /* TestJSONSerialization.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TestJSONSerialization.swift; sourceTree = "<group>"; };
10231025
5EF673AB1C28B527006212A3 /* TestNotificationQueue.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TestNotificationQueue.swift; sourceTree = "<group>"; };
@@ -1899,6 +1901,7 @@
18991901
5B6F17961C48631C00935030 /* TestUtils.swift */,
19001902
03B6F5831F15F339004F25AF /* TestURLProtocol.swift */,
19011903
3E55A2321F52463B00082000 /* TestUnit.swift */,
1904+
5D0E1BDA237A1FE800C35C5A /* TestUnitVolume.swift */,
19021905
7D8BD738225ED1480057CF37 /* TestMeasurement.swift */,
19031906
);
19041907
name = Tests;
@@ -3096,6 +3099,7 @@
30963099
D4FE895B1D703D1100DA7986 /* TestURLRequest.swift in Sources */,
30973100
684C79011F62B611005BD73E /* TestNSNumberBridging.swift in Sources */,
30983101
DAA79BD920D42C07004AF044 /* TestURLProtectionSpace.swift in Sources */,
3102+
5D0E1BDB237A1FE800C35C5A /* TestUnitVolume.swift in Sources */,
30993103
616068F5225DE606004FCC54 /* TestURLSessionFTP.swift in Sources */,
31003104
155B77AC22E63D2D00D901DE /* TestURLCredentialStorage.swift in Sources */,
31013105
B951B5EC1F4E2A2000D8B332 /* TestNSLock.swift in Sources */,

Foundation/Unit.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2030,8 +2030,8 @@ public final class UnitVolume : Dimension {
20302030
static let cubicKilometers = 1e12
20312031
static let cubicMeters = 1000.0
20322032
static let cubicDecimeters = 1.0
2033-
static let cubicCentimeters = 0.01
2034-
static let cubicMillimeters = 0.001
2033+
static let cubicCentimeters = 1e-3
2034+
static let cubicMillimeters = 1e-6
20352035
static let cubicInches = 0.0163871
20362036
static let cubicFeet = 28.3168
20372037
static let cubicYards = 764.555

TestFoundation/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,7 @@ target_sources(TestFoundation PRIVATE
8888
TestTimer.swift
8989
TestTimeZone.swift
9090
TestUnitConverter.swift
91+
TestUnitVolume.swift
9192
TestUnit.swift
9293
TestURLCache.swift
9394
TestURLCredential.swift

TestFoundation/TestUnitVolume.swift

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

TestFoundation/main.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,7 @@ var allTestCases = [
115115
testCase(TestUnit.allTests),
116116
testCase(TestDimension.allTests),
117117
testCase(TestMeasurement.allTests),
118+
testCase(TestUnitVolume.allTests),
118119
testCase(TestNSLock.allTests),
119120
testCase(TestNSSortDescriptor.allTests),
120121
]

0 commit comments

Comments
 (0)