Files
SwiftLint/Tests/BuiltInRulesTests/FunctionParameterCountRuleTests.swift
Danny Mösch 15b285527a Separate built-in rule tests from framework tests (#5924)
* Short names for test modules
* Lint plugins and `Package.swift` in integration tests
* Simplify and merge file groups in Bazel
* Move common functions to `TestHelpers`
2024-12-30 12:26:46 +01:00

47 lines
1.8 KiB
Swift

@testable import SwiftLintBuiltInRules
import TestHelpers
private func funcWithParameters(_ parameters: String,
violates: Bool = false,
file: StaticString = #filePath,
line: UInt = #line) -> Example {
let marker = violates ? "" : ""
return Example("func \(marker)abc(\(parameters)) {}\n", file: file, line: line)
}
final class FunctionParameterCountRuleTests: SwiftLintTestCase {
func testFunctionParameterCount() {
let baseDescription = FunctionParameterCountRule.description
let nonTriggeringExamples = [
funcWithParameters(repeatElement("x: Int, ", count: 3).joined() + "x: Int")
]
let triggeringExamples = [
funcWithParameters(repeatElement("x: Int, ", count: 5).joined() + "x: Int")
]
let description = baseDescription.with(nonTriggeringExamples: nonTriggeringExamples)
.with(triggeringExamples: triggeringExamples)
verifyRule(description)
}
func testDefaultFunctionParameterCount() {
let baseDescription = FunctionParameterCountRule.description
let nonTriggeringExamples = [
funcWithParameters(repeatElement("x: Int, ", count: 3).joined() + "x: Int")
]
let defaultParams = repeatElement("x: Int = 0, ", count: 2).joined() + "x: Int = 0"
let triggeringExamples = [
funcWithParameters(repeatElement("x: Int, ", count: 3).joined() + defaultParams)
]
let description = baseDescription.with(nonTriggeringExamples: nonTriggeringExamples)
.with(triggeringExamples: triggeringExamples)
verifyRule(description, ruleConfiguration: ["ignores_default_parameters": false])
}
}