Add addVariations(_:) convenience method to UIVariationEnvironment

This commit is contained in:
Wojciech Nagrodzki 2021-06-09 16:38:26 +02:00
parent fa7a280f0e
commit 837f263513
Signed by: wnagrodzki
GPG key ID: E9D0EB0302264569
2 changed files with 23 additions and 0 deletions

View file

@ -20,6 +20,12 @@ extension UIVariationEnvironment where Self: UITraitEnvironment {
variation.applyIfMatchesTraitEnvironment() variation.applyIfMatchesTraitEnvironment()
} }
public func addVariations<Object, Value>(_ variations: [UIVariation<Object, Value>]) {
for variation in variations {
addVariation(variation)
}
}
public func removeVariation<Object, Value>(_ variation: UIVariation<Object, Value>) { public func removeVariation<Object, Value>(_ variation: UIVariation<Object, Value>) {
variations.remove(variation) variations.remove(variation)
variation.traitEnvironment = nil variation.traitEnvironment = nil

View file

@ -80,6 +80,23 @@ final class UIVariationEnvironmentTests: XCTestCase {
variationEnvironment.traitCollection = UITraitCollection(verticalSizeClass: .compact) variationEnvironment.traitCollection = UITraitCollection(verticalSizeClass: .compact)
XCTAssertEqual(label.text, valueWhenCompact) 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 { class UIVariationEnvironmentFake: NSObject, UITraitEnvironment {