Skip to content

Commit 03344c6

Browse files
committed
Merge pull request kodecocodes#27 from chris-pilcher/Select-Minimum-Maximum
Checking algorithm against Swift library algorithm
2 parents bfad888 + bbefecc commit 03344c6

File tree

5 files changed

+50
-4
lines changed

5 files changed

+50
-4
lines changed

Select Minimum Maximum/SelectMinimumMaximum Tests/SelectMinimumMaximum.xcodeproj/project.pbxproj

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
/* Begin PBXBuildFile section */
1010
7B18E0971C5BFA2E005A2B8E /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7B18E0961C5BFA2E005A2B8E /* AppDelegate.swift */; };
1111
7B18E0A71C5BFA2E005A2B8E /* SelectMinimumMaximumTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7B18E0A61C5BFA2E005A2B8E /* SelectMinimumMaximumTests.swift */; };
12+
838A4FB41C64AED00092AA8F /* TestHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 838A4FB31C64AED00092AA8F /* TestHelper.swift */; };
1213
83F3255D1C64A0E700EB0421 /* Maximum.swift in Sources */ = {isa = PBXBuildFile; fileRef = 83F3255A1C64A0E700EB0421 /* Maximum.swift */; };
1314
83F3255E1C64A0E700EB0421 /* Minimum.swift in Sources */ = {isa = PBXBuildFile; fileRef = 83F3255B1C64A0E700EB0421 /* Minimum.swift */; };
1415
83F3255F1C64A0E700EB0421 /* MinimumMaximumPairs.swift in Sources */ = {isa = PBXBuildFile; fileRef = 83F3255C1C64A0E700EB0421 /* MinimumMaximumPairs.swift */; };
@@ -33,6 +34,7 @@
3334
7B18E0A21C5BFA2E005A2B8E /* SelectMinimumMaximumTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = SelectMinimumMaximumTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
3435
7B18E0A61C5BFA2E005A2B8E /* SelectMinimumMaximumTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SelectMinimumMaximumTests.swift; sourceTree = "<group>"; };
3536
7B18E0A81C5BFA2E005A2B8E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
37+
838A4FB31C64AED00092AA8F /* TestHelper.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TestHelper.swift; sourceTree = "<group>"; };
3638
83F3255A1C64A0E700EB0421 /* Maximum.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = Maximum.swift; path = ../../Maximum.swift; sourceTree = "<group>"; };
3739
83F3255B1C64A0E700EB0421 /* Minimum.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = Minimum.swift; path = ../../Minimum.swift; sourceTree = "<group>"; };
3840
83F3255C1C64A0E700EB0421 /* MinimumMaximumPairs.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = MinimumMaximumPairs.swift; path = ../../MinimumMaximumPairs.swift; sourceTree = "<group>"; };
@@ -95,6 +97,7 @@
9597
7B18E0A61C5BFA2E005A2B8E /* SelectMinimumMaximumTests.swift */,
9698
83F325601C64A3E000EB0421 /* MinimumTests.swift */,
9799
83F325621C64A4D400EB0421 /* MaximumTests.swift */,
100+
838A4FB31C64AED00092AA8F /* TestHelper.swift */,
98101
);
99102
path = SelectMinimumMaximumTests;
100103
sourceTree = "<group>";
@@ -211,6 +214,7 @@
211214
83F325611C64A3E000EB0421 /* MinimumTests.swift in Sources */,
212215
83F325631C64A4D400EB0421 /* MaximumTests.swift in Sources */,
213216
7B18E0A71C5BFA2E005A2B8E /* SelectMinimumMaximumTests.swift in Sources */,
217+
838A4FB41C64AED00092AA8F /* TestHelper.swift in Sources */,
214218
);
215219
runOnlyForDeploymentPostprocessing = 0;
216220
};

Select Minimum Maximum/SelectMinimumMaximum Tests/SelectMinimumMaximumTests/MaximumTests.swift

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,19 +19,31 @@ class MaximumTests: XCTestCase {
1919
XCTAssertEqual(result, 16)
2020
}
2121

22-
func testMimimumGivenAListOfOrderedElements() {
22+
func testMaximumGivenAListOfOrderedElements() {
2323
let array = [ 3, 4, 6, 8, 9 ]
2424

2525
let result = maximum(array)
2626

2727
XCTAssertEqual(result, 9)
2828
}
2929

30-
func testMimimumGivenAListOfReverseOrderedElements() {
30+
func testMaximumGivenAListOfReverseOrderedElements() {
3131
let array = [ 9, 8, 6, 4, 3 ]
3232

3333
let result = maximum(array)
3434

3535
XCTAssertEqual(result, 9)
3636
}
37+
38+
func testMaximumMatchesSwiftLibraryGivenARandomList() {
39+
for _ in 0...10 {
40+
for n in 1...100 {
41+
let array = createRandomList(n)
42+
43+
let result = maximum(array)
44+
45+
XCTAssertEqual(result, array.maxElement())
46+
}
47+
}
48+
}
3749
}

Select Minimum Maximum/SelectMinimumMaximum Tests/SelectMinimumMaximumTests/MinimumTests.swift

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,19 +19,31 @@ class MinimumTests: XCTestCase {
1919
XCTAssertEqual(result, 2)
2020
}
2121

22-
func testMimimumGivenAListOfOrderedElements() {
22+
func testMinimumGivenAListOfOrderedElements() {
2323
let array = [ 3, 4, 6, 8, 9 ]
2424

2525
let result = minimum(array)
2626

2727
XCTAssertEqual(result, 3)
2828
}
2929

30-
func testMimimumGivenAListOfReverseOrderedElements() {
30+
func testMinimumGivenAListOfReverseOrderedElements() {
3131
let array = [ 9, 8, 6, 4, 3 ]
3232

3333
let result = minimum(array)
3434

3535
XCTAssertEqual(result, 3)
3636
}
37+
38+
func testMinimumMatchesSwiftLibraryGivenARandomList() {
39+
for _ in 0...10 {
40+
for n in 1...100 {
41+
let array = createRandomList(n)
42+
43+
let result = minimum(array)
44+
45+
XCTAssertEqual(result, array.minElement())
46+
}
47+
}
48+
}
3749
}

Select Minimum Maximum/SelectMinimumMaximum Tests/SelectMinimumMaximumTests/SelectMinimumMaximumTests.swift

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,4 +56,17 @@ class SelectMinimumMaximumTests: XCTestCase {
5656
XCTAssertEqual(result.minimum, 3)
5757
XCTAssertEqual(result.maximum, 9)
5858
}
59+
60+
func testMinimumAndMaximumMatchSwiftLibraryGivenARandomList() {
61+
for _ in 0...10 {
62+
for n in 1...100 {
63+
let array = createRandomList(n)
64+
65+
let result = minimumMaximum(array)
66+
67+
XCTAssertEqual(result.minimum, array.minElement())
68+
XCTAssertEqual(result.maximum, array.maxElement())
69+
}
70+
}
71+
}
5972
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
import Foundation
2+
3+
func createRandomList(numberOfElements: Int) -> [UInt32] {
4+
return (1...numberOfElements).map{_ in arc4random()}
5+
}

0 commit comments

Comments
 (0)