mirror of
https://github.com/nicklockwood/SwiftFormat.git
synced 2026-05-17 10:30:35 +00:00
144 lines
4.2 KiB
Swift
144 lines
4.2 KiB
Swift
//
|
|
// InitCoderUnavailableTests.swift
|
|
// SwiftFormatTests
|
|
//
|
|
// Created by Facundo Menzella on 8/20/20.
|
|
// Copyright © 2024 Nick Lockwood. All rights reserved.
|
|
//
|
|
|
|
import XCTest
|
|
@testable import SwiftFormat
|
|
|
|
final class InitCoderUnavailableTests: XCTestCase {
|
|
func testInitCoderUnavailableEmptyFunction() {
|
|
let input = """
|
|
struct A: UIView {
|
|
required init?(coder aDecoder: NSCoder) {}
|
|
}
|
|
"""
|
|
let output = """
|
|
struct A: UIView {
|
|
@available(*, unavailable)
|
|
required init?(coder aDecoder: NSCoder) {}
|
|
}
|
|
"""
|
|
testFormatting(for: input, output, rule: .initCoderUnavailable,
|
|
exclude: [.unusedArguments])
|
|
}
|
|
|
|
func testInitCoderUnavailableFatalErrorNilDisabled() {
|
|
let input = """
|
|
extension Module {
|
|
final class A: UIView {
|
|
required init?(coder _: NSCoder) {
|
|
fatalError("init(coder:) has not been implemented")
|
|
}
|
|
}
|
|
}
|
|
"""
|
|
let output = """
|
|
extension Module {
|
|
final class A: UIView {
|
|
@available(*, unavailable)
|
|
required init?(coder _: NSCoder) {
|
|
fatalError("init(coder:) has not been implemented")
|
|
}
|
|
}
|
|
}
|
|
"""
|
|
let options = FormatOptions(initCoderNil: false)
|
|
testFormatting(for: input, output, rule: .initCoderUnavailable, options: options)
|
|
}
|
|
|
|
func testInitCoderUnavailableFatalErrorNilEnabled() {
|
|
let input = """
|
|
extension Module {
|
|
final class A: UIView {
|
|
required init?(coder _: NSCoder) {
|
|
fatalError("init(coder:) has not been implemented")
|
|
}
|
|
}
|
|
}
|
|
"""
|
|
let output = """
|
|
extension Module {
|
|
final class A: UIView {
|
|
@available(*, unavailable)
|
|
required init?(coder _: NSCoder) {
|
|
nil
|
|
}
|
|
}
|
|
}
|
|
"""
|
|
let options = FormatOptions(initCoderNil: true)
|
|
testFormatting(for: input, output, rule: .initCoderUnavailable, options: options)
|
|
}
|
|
|
|
func testInitCoderUnavailableAlreadyPresent() {
|
|
let input = """
|
|
extension Module {
|
|
final class A: UIView {
|
|
@available(*, unavailable)
|
|
required init?(coder _: NSCoder) {
|
|
fatalError()
|
|
}
|
|
}
|
|
}
|
|
"""
|
|
testFormatting(for: input, rule: .initCoderUnavailable)
|
|
}
|
|
|
|
func testInitCoderUnavailableImplemented() {
|
|
let input = """
|
|
extension Module {
|
|
final class A: UIView {
|
|
required init?(coder aCoder: NSCoder) {
|
|
aCoder.doSomething()
|
|
}
|
|
}
|
|
}
|
|
"""
|
|
testFormatting(for: input, rule: .initCoderUnavailable)
|
|
}
|
|
|
|
func testPublicInitCoderUnavailable() {
|
|
let input = """
|
|
public class Foo: UIView {
|
|
public required init?(coder _: NSCoder) {
|
|
fatalError("init(coder:) has not been implemented")
|
|
}
|
|
}
|
|
"""
|
|
let output = """
|
|
public class Foo: UIView {
|
|
@available(*, unavailable)
|
|
public required init?(coder _: NSCoder) {
|
|
fatalError("init(coder:) has not been implemented")
|
|
}
|
|
}
|
|
"""
|
|
testFormatting(for: input, output, rule: .initCoderUnavailable)
|
|
}
|
|
|
|
func testPublicInitCoderUnavailable2() {
|
|
let input = """
|
|
public class Foo: UIView {
|
|
required public init?(coder _: NSCoder) {
|
|
fatalError("init(coder:) has not been implemented")
|
|
}
|
|
}
|
|
"""
|
|
let output = """
|
|
public class Foo: UIView {
|
|
@available(*, unavailable)
|
|
required public init?(coder _: NSCoder) {
|
|
nil
|
|
}
|
|
}
|
|
"""
|
|
let options = FormatOptions(initCoderNil: true)
|
|
testFormatting(for: input, output, rule: .initCoderUnavailable,
|
|
options: options, exclude: [.modifierOrder])
|
|
}
|
|
}
|