diff --git a/Sources/UserInterfaceVariations/UIVariationEnvironment.swift b/Sources/UserInterfaceVariations/UIVariationEnvironment.swift index e247e38..e34a58f 100644 --- a/Sources/UserInterfaceVariations/UIVariationEnvironment.swift +++ b/Sources/UserInterfaceVariations/UIVariationEnvironment.swift @@ -20,6 +20,12 @@ extension UIVariationEnvironment where Self: UITraitEnvironment { variation.applyIfMatchesTraitEnvironment() } + public func addVariations(_ variations: [UIVariation]) { + for variation in variations { + addVariation(variation) + } + } + public func removeVariation(_ variation: UIVariation) { variations.remove(variation) variation.traitEnvironment = nil diff --git a/Tests/UserInterfaceVariationsTests/UIVariationEnvironmentTests.swift b/Tests/UserInterfaceVariationsTests/UIVariationEnvironmentTests.swift index 8e46084..3ae859c 100644 --- a/Tests/UserInterfaceVariationsTests/UIVariationEnvironmentTests.swift +++ b/Tests/UserInterfaceVariationsTests/UIVariationEnvironmentTests.swift @@ -80,6 +80,23 @@ final class UIVariationEnvironmentTests: XCTestCase { variationEnvironment.traitCollection = UITraitCollection(verticalSizeClass: .compact) XCTAssertEqual(label.text, valueWhenCompact) } + + func test_adding_variations_convenience_method() { + let variationEnvironment = UIVariationEnvironmentFake(traitCollection: UITraitCollection(verticalSizeClass: .regular)) + let variation0 = UIVariation(object: label, + keyPath: \.text, + value: "", + horizontalSizeClass: nil, + verticalSizeClass: nil) + let variation1 = UIVariation(object: label, + keyPath: \.text, + value: "", + horizontalSizeClass: nil, + verticalSizeClass: nil) + variationEnvironment.addVariations([variation0, variation1]) + XCTAssert(variationEnvironment.variations[0] as AnyObject === variation0) + XCTAssert(variationEnvironment.variations[1] as AnyObject === variation1) + } } class UIVariationEnvironmentFake: NSObject, UITraitEnvironment {