Files
SwiftShell/Tests/StreamTests/Collection_Tests.swift
T

112 lines
4.0 KiB
Swift
Executable File

//
// Collection_Tests.swift
// SwiftShell
//
// Created by Kåre Morstøl on 08.12.2015.
//
//
import XCTest
@testable import SwiftShell
public class LazySplitGenerator_Tests: XCTestCase {
func lazySplitToArray(allowEmptySlices: Bool) -> (String) -> [String] {
return { s in
let seq: LazySplitSequence = s.lazy.split(separator: "," as Character, allowEmptySlices: allowEmptySlices)
return seq.map(String.init)
}
}
func testStringsLazySplit_AllowingEmptySlices() {
let split = lazySplitToArray(allowEmptySlices: true)
XCTAssertEqual(split("ab,c,de,f"), ["ab","c","de","f"])
XCTAssertEqual(split(",a"), ["","a"])
XCTAssertEqual(split("a,"), ["a",""])
XCTAssertEqual(split("a,,b,,,c"), ["a","","b","","","c"])
XCTAssertEqual(split(""), [""])
XCTAssertEqual(split(","), ["",""])
XCTAssertEqual(split("ab"), ["ab"])
}
func testCollectionTypeSplit_AllowingEmptySlices() {
let split = { (s: String) -> [String] in
s.split(separator: ",", omittingEmptySubsequences: false).map(String.init)
}
XCTAssertEqual(split("ab,c,de,f"), ["ab","c","de","f"])
XCTAssertEqual(split(",a"), ["","a"])
XCTAssertEqual(split("a,"), ["a",""])
XCTAssertEqual(split("a,,b,,,c"), ["a","","b","","","c"])
XCTAssertEqual(split(""), [""])
XCTAssertEqual(split(","), ["",""])
XCTAssertEqual(split("ab"), ["ab"])
}
func testStringsLazySplit_NoEmptySlices() {
let split = lazySplitToArray(allowEmptySlices: false)
XCTAssertEqual(split("ab,c,de,f"), ["ab","c","de","f"])
XCTAssertEqual(split(",a"), ["a"])
XCTAssertEqual(split("a,"), ["a"])
XCTAssertEqual(split("a,,b,,,c"), ["a","b","c"])
XCTAssertEqual(split(""), [])
XCTAssertEqual(split(","), [])
XCTAssertEqual(split("ab"), ["ab"])
}
func testCollectionTypeSplit_NoEmptySlices() {
let split = {(s: String) -> [String] in
s.split(separator: ",", omittingEmptySubsequences: true).map(String.init)
}
XCTAssertEqual(split("ab,c,de,f"), ["ab","c","de","f"])
XCTAssertEqual(split(",a"), ["a"])
XCTAssertEqual(split("a,"), ["a"])
XCTAssertEqual(split("a,,b,,,c"), ["a","b","c"])
XCTAssertEqual(split(""), [])
XCTAssertEqual(split(","), [])
XCTAssertEqual(split("ab"), ["ab"])
}
func testIntsLazySplit_NoEmptySlices() {
let split = {(s: [Int]) -> [[Int]] in
s.lazy.split(separator: 0, omittingEmptySubsequences: true).map(Array.init)
}
XCTAssertEqual(split([1,2,0,4,0,6,7,8,9]), [[1,2],[4],[6,7,8,9]])
}
func testPartialSourceLazySplit_AllowingEmptySlices() {
func split(_ s: String...) -> [String] {
var sg = s.makeIterator()
return PartialSourceLazySplitSequence({sg.next()}, separator: ",").map(String.init)
}
XCTAssertEqual(split("ab,c",",de,f"), ["ab","c","de","f"])
XCTAssertEqual(split(",a"), ["","a"])
XCTAssertEqual(split("a,"), ["a",""])
XCTAssertEqual(split("a,",",","b,",",,c"), ["a","","b","","","c"])
XCTAssertEqual(split(""), [""])
XCTAssertEqual(split(","), ["",""])
XCTAssertEqual(split("ab"), ["ab"])
XCTAssertEqual(split(), [])
XCTAssertEqual(split("abc","def","g,","h"), ["abcdefg","h"])
XCTAssertEqual(split(",abc","def","g","h,"), ["","abcdefgh",""])
XCTAssertEqual(split("","abc","","def","g,","h"), ["abcdefg","h"])
}
}
extension LazySplitGenerator_Tests {
public static var allTests = [
("testStringsLazySplit_AllowingEmptySlices", testStringsLazySplit_AllowingEmptySlices),
("testCollectionTypeSplit_AllowingEmptySlices", testCollectionTypeSplit_AllowingEmptySlices),
("testStringsLazySplit_NoEmptySlices", testStringsLazySplit_NoEmptySlices),
("testCollectionTypeSplit_NoEmptySlices", testCollectionTypeSplit_NoEmptySlices),
("testIntsLazySplit_NoEmptySlices", testIntsLazySplit_NoEmptySlices),
("testPartialSourceLazySplit_AllowingEmptySlices", testPartialSourceLazySplit_AllowingEmptySlices),
]
}