51 lines
1.6 KiB
Swift
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)
|
|
]
|
|
}
|