mirror of
https://github.com/realm/SwiftLint.git
synced 2026-05-07 20:12:49 +00:00
92 lines
3.2 KiB
Swift
92 lines
3.2 KiB
Swift
@testable import SwiftLintBuiltInRules
|
|
import TestHelpers
|
|
import XCTest
|
|
|
|
final class TypeBodyLengthConfigurationTests: SwiftLintTestCase {
|
|
func testDefaultConfiguration() {
|
|
let config = TypeBodyLengthConfiguration()
|
|
XCTAssertEqual(config.severityConfiguration.warning, 250)
|
|
XCTAssertEqual(config.severityConfiguration.error, 350)
|
|
XCTAssertEqual(config.excludedTypes, [.extension, .protocol])
|
|
}
|
|
|
|
func testApplyingCustomConfiguration() throws {
|
|
var config = TypeBodyLengthConfiguration()
|
|
try config.apply(
|
|
configuration: [
|
|
"warning": 150,
|
|
"error": 200,
|
|
"excluded_types": ["struct", "class"],
|
|
] as [String: any Sendable]
|
|
)
|
|
XCTAssertEqual(config.severityConfiguration.warning, 150)
|
|
XCTAssertEqual(config.severityConfiguration.error, 200)
|
|
XCTAssertEqual(config.excludedTypes, Set([.struct, .class]))
|
|
}
|
|
|
|
func testApplyingOnlyExcludedTypesConfiguration() throws {
|
|
var config = TypeBodyLengthConfiguration()
|
|
try config.apply(
|
|
configuration: [
|
|
"excluded_types": ["actor", "enum"]
|
|
] as [String: any Sendable]
|
|
)
|
|
|
|
// Severity should remain default
|
|
XCTAssertEqual(config.severityConfiguration.warning, 250)
|
|
XCTAssertEqual(config.severityConfiguration.error, 350)
|
|
|
|
// Excluded types should be updated
|
|
XCTAssertEqual(config.excludedTypes, Set([.actor, .enum]))
|
|
}
|
|
|
|
func testApplyingAllTypesAsExcludedConfiguration() throws {
|
|
var config = TypeBodyLengthConfiguration()
|
|
try config.apply(
|
|
configuration: [
|
|
"excluded_types": ["struct", "class", "actor", "enum", "extension", "protocol"]
|
|
] as [String: any Sendable]
|
|
)
|
|
XCTAssertEqual(config.excludedTypes, Set(TypeBodyLengthCheckType.allCases))
|
|
}
|
|
|
|
func testApplyingEmptyExcludedTypesConfiguration() throws {
|
|
var config = TypeBodyLengthConfiguration()
|
|
try config.apply(
|
|
configuration: [
|
|
"excluded_types": [] as [String]
|
|
] as [String: any Sendable]
|
|
)
|
|
XCTAssertTrue(config.excludedTypes.isEmpty)
|
|
}
|
|
|
|
func testApplyingSingleExcludedTypeConfiguration() throws {
|
|
var config = TypeBodyLengthConfiguration()
|
|
try config.apply(
|
|
configuration: [
|
|
"excluded_types": ["extension"]
|
|
] as [String: any Sendable]
|
|
)
|
|
XCTAssertEqual(config.excludedTypes, Set([.extension]))
|
|
}
|
|
|
|
func testInvalidExcludedTypeConfiguration() throws {
|
|
var config = TypeBodyLengthConfiguration()
|
|
checkError(Issue.invalidConfiguration(ruleID: TypeBodyLengthRule.identifier)) {
|
|
try config.apply(
|
|
configuration: [
|
|
"excluded_types": ["invalid_type"]
|
|
] as [String: any Sendable]
|
|
)
|
|
}
|
|
XCTAssertEqual(config.excludedTypes, Set([.extension, .protocol]))
|
|
}
|
|
|
|
func testTypeEnumComparability() {
|
|
XCTAssertEqual(
|
|
TypeBodyLengthCheckType.allCases.sorted(),
|
|
[.actor, .class, .enum, .extension, .protocol, .struct]
|
|
)
|
|
}
|
|
}
|