Skip to content

Commit b9b491d

Browse files
pbodskvincentngo
authored andcommitted
fixing failing test (kodecocodes#355)
the problem was that the testdata generator could generate keys that was not unique...which caused the `find` method to return the wrong values for keys when the keys were the same.
1 parent 53b8771 commit b9b491d

File tree

2 files changed

+20
-7
lines changed

2 files changed

+20
-7
lines changed

Ternary Search Tree/TernarySearchTree.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ public class TernarySearchTree<Element> {
7575
if charIndex + 1 < key.characters.count {
7676
return insert(node: &node!.middle, withData: data, andKey: key, atIndex: charIndex + 1)
7777
}
78-
//otherwise, all done.
78+
//otherwise, all done.
7979
else {
8080
node!.data = data
8181
node?.hasData = true

Ternary Search Tree/Tests/TernarySearchTreeTests.swift

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,23 @@ import XCTest
1010

1111
class TernarySearchTreeTests: XCTestCase {
1212

13-
let treeOfStrings = TernarySearchTree<String>()
13+
1414
let testCount = 30
1515

1616
func testCanFindStringInTree() {
1717
var testStrings: [(key: String, data: String)] = []
18+
let treeOfStrings = TernarySearchTree<String>()
19+
1820
for _ in (1...testCount) {
19-
let randomLength = Int(arc4random_uniform(10))
20-
let key = Utils.shared.randomAlphaNumericString(withLength: randomLength)
21+
var randomLength = Int(arc4random_uniform(10))
22+
23+
var key = Utils.shared.randomAlphaNumericString(withLength: randomLength)
24+
25+
while testStrings.contains(where: { $0.key == key}) {
26+
//That key is taken, so we generate a new one with another length
27+
randomLength = Int(arc4random_uniform(10))
28+
key = Utils.shared.randomAlphaNumericString(withLength: randomLength)
29+
}
2130
let data = Utils.shared.randomAlphaNumericString(withLength: randomLength)
2231
// print("Key: \(key) Data: \(data)")
2332

@@ -29,7 +38,6 @@ class TernarySearchTreeTests: XCTestCase {
2938

3039
for aTest in testStrings {
3140
let data = treeOfStrings.find(key: aTest.key)
32-
3341
XCTAssertNotNil(data)
3442
XCTAssertEqual(data, aTest.data)
3543
}
@@ -40,8 +48,13 @@ class TernarySearchTreeTests: XCTestCase {
4048
let treeOfInts = TernarySearchTree<Int>()
4149
for _ in (1...testCount) {
4250
let randomNum = Int(arc4random_uniform(UInt32.max))
43-
let randomLength = Int(arc4random_uniform(10))
44-
let key = Utils.shared.randomAlphaNumericString(withLength: randomLength)
51+
var randomLength = Int(arc4random_uniform(10))
52+
var key = Utils.shared.randomAlphaNumericString(withLength: randomLength)
53+
while testNums.contains(where: { $0.key == key}) {
54+
//That key is taken, so we generate a new one with another length
55+
randomLength = Int(arc4random_uniform(10))
56+
key = Utils.shared.randomAlphaNumericString(withLength: randomLength)
57+
}
4558

4659
if key != "" {
4760
testNums.append((key, randomNum))

0 commit comments

Comments
 (0)