Files
SwiftFormat/Tests/Rules/WrapMultilineConditionalAssignmentTests.swift
2025-10-04 08:46:46 +01:00

149 lines
3.5 KiB
Swift

//
// WrapMultilineConditionalAssignmentTests.swift
// SwiftFormatTests
//
// Created by Cal Stephens on 11/18/23.
// Copyright © 2024 Nick Lockwood. All rights reserved.
//
import XCTest
@testable import SwiftFormat
final class WrapMultilineConditionalAssignmentTests: XCTestCase {
func testWrapIfExpressionAssignment() {
let input = """
let foo = if let bar {
bar
} else {
baaz
}
"""
let output = """
let foo =
if let bar {
bar
} else {
baaz
}
"""
testFormatting(for: input, [output], rules: [.wrapMultilineConditionalAssignment, .indent])
}
func testUnwrapsAssignmentOperatorInIfExpressionAssignment() {
let input = """
let foo
= if let bar {
bar
} else {
baaz
}
"""
let output = """
let foo =
if let bar {
bar
} else {
baaz
}
"""
testFormatting(for: input, [output], rules: [.wrapMultilineConditionalAssignment, .indent])
}
func testUnwrapsAssignmentOperatorInIfExpressionFollowingComment() {
let input = """
let foo
// In order to unwrap the `=` here it has to move it to
// before the comment, rather than simply unwrapping it.
= if let bar {
bar
} else {
baaz
}
"""
let output = """
let foo =
// In order to unwrap the `=` here it has to move it to
// before the comment, rather than simply unwrapping it.
if let bar {
bar
} else {
baaz
}
"""
testFormatting(for: input, [output], rules: [.wrapMultilineConditionalAssignment, .indent])
}
func testWrapIfAssignmentWithoutIntroducer() {
let input = """
property = if condition {
Foo("foo")
} else {
Foo("bar")
}
"""
let output = """
property =
if condition {
Foo("foo")
} else {
Foo("bar")
}
"""
testFormatting(for: input, [output], rules: [.wrapMultilineConditionalAssignment, .indent])
}
func testWrapSwitchAssignmentWithoutIntroducer() {
let input = """
property = switch condition {
case true:
Foo("foo")
case false:
Foo("bar")
}
"""
let output = """
property =
switch condition {
case true:
Foo("foo")
case false:
Foo("bar")
}
"""
testFormatting(for: input, [output], rules: [.wrapMultilineConditionalAssignment, .indent])
}
func testWrapSwitchAssignmentWithComplexLValue() {
let input = """
property?.foo!.bar["baaz"] = switch condition {
case true:
Foo("foo")
case false:
Foo("bar")
}
"""
let output = """
property?.foo!.bar["baaz"] =
switch condition {
case true:
Foo("foo")
case false:
Foo("bar")
}
"""
testFormatting(for: input, [output], rules: [.wrapMultilineConditionalAssignment, .indent])
}
}