Files
SwiftFormat/SwiftFormatTests/PerformanceTests.swift
T
Nick Lockwood d2bd40740e Added parallel processing of multiple source files
* Formatting and inferrring now done in parallel (~2x speed bump)
* Processing is no longer abandonded after the first error
* Fixed incorrect error message for parsing errors
2017-01-05 23:28:32 +00:00

64 lines
1.6 KiB
Swift

//
// PerformanceTests.swift
// SwiftFormat
//
// Created by Nick Lockwood on 30/10/2016.
// Copyright © 2016 Nick Lockwood. All rights reserved.
//
import XCTest
import SwiftFormat
class PerformanceTests: XCTestCase {
static let files: [String] = {
var files = [String]()
let inputURL = URL(fileURLWithPath: #file).deletingLastPathComponent().deletingLastPathComponent()
try! enumerateSwiftFiles(withInputURL: inputURL) { url, _ in
return {
if let source = try? String(contentsOf: url) {
files.append(source)
}
}
}
return files
}()
func testTokenizing() {
let files = PerformanceTests.files
var tokens = [[Token]]()
measure {
tokens = files.map { tokenize($0) }
}
for tokens in tokens {
if let token = tokens.last, case .error(let msg) = token {
XCTFail("error: \(msg)")
}
}
}
func testFormatting() {
let files = PerformanceTests.files
let tokens = files.map { tokenize($0) }
measure {
_ = tokens.map { try! format($0) }
}
}
func testInferring() {
let files = PerformanceTests.files
let tokens = files.flatMap { tokenize($0) }
measure {
_ = inferOptions(from: tokens)
}
}
func testIndent() {
let files = PerformanceTests.files
let tokens = files.map { tokenize($0) }
measure {
_ = tokens.map { try! format($0, rules: [FormatRules.indent]) }
}
}
}