Files
Euler/Tests/EulerTests/GeneratorsTests.swift
2020-01-14 19:33:03 -05:00

51 lines
1.6 KiB
Swift

//
// GeneratorsTests.swift
//
//
// Created by Arthur Guiot on 2020-01-08.
//
import Foundation
import XCTest
import Euler
class GeneratorsTests: XCTestCase {
func testCollatz() {
var tmp = [BigInt]()
let co = Collatz(27)
for i in co {
tmp.append(i)
}
XCTAssertEqual(tmp, [82, 41, 124, 62, 31, 94, 47, 142, 71, 214, 107, 322, 161, 484, 242, 121, 364, 182, 91, 274, 137, 412, 206, 103, 310, 155, 466, 233, 700, 350, 175, 526, 263, 790, 395, 1186, 593, 1780, 890, 445, 1336, 668, 334, 167, 502, 251, 754, 377, 1132, 566, 283, 850, 425, 1276, 638, 319, 958, 479, 1438, 719, 2158, 1079, 3238, 1619, 4858, 2429, 7288, 3644, 1822, 911, 2734, 1367, 4102, 2051, 6154, 3077, 9232, 4616, 2308, 1154, 577, 1732, 866, 433, 1300, 650, 325, 976, 488, 244, 122, 61, 184, 92, 46, 23, 70, 35, 106, 53, 160, 80, 40, 20, 10, 5, 16, 8, 4, 2, 1])
}
func testFibonacci() {
var tmp = [BigInt]()
var fi = Fibonacci()
var i = 0
while i <= 10 {
tmp.append(fi.next()!)
i += 1
}
XCTAssertEqual(tmp, [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89])
}
func testSieve() {
var tmp = [BigInt]()
var si = Sieve()
var i = 0
while i <= 10 {
tmp.append(si.next()!)
i += 1
}
XCTAssertEqual(tmp, [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31])
XCTAssertEqual(Sieve.nthPrime(n: BigInt(10)), 29)
XCTAssertEqual(BigInt(100).primePi, 25)
}
static var allTests = [
("Collatz", testCollatz),
("Fibonacci", testFibonacci),
("Prime Sieve", testSieve)
]
}