2

I have a simple extension for UITraitCollection:

extension UITraitCollection {

    var isIpad: Bool {
        return horizontalSizeClass == .Regular && verticalSizeClass == .Regular
    }
}

Before, I have needed to write tests for this (using TDD):

let traitCollection = UITraitCollection(verticalSizeClass: .Regular) //the init is either for vertical or horizontal at time
traitCollection.horizontalSizeClass = .Regular //error

XCTAssertTrue(traitCollection.isIpad)

But the error is:

Cannot assign to property: horizontalSizeClass is a get only property.

What should I do then?

Bartłomiej Semańczyk
  • 59,234
  • 49
  • 233
  • 358

1 Answers1

3

Ok, I have found solution:

let compactTraitCollection = UITraitCollection(traitsFromCollections: [UITraitCollection(verticalSizeClass: .Compact), UITraitCollection(horizontalSizeClass: .Compact)])
XCTAssertFalse(compactTraitCollection.isIpad)

let regularTraitCollection = UITraitCollection(traitsFromCollections: [UITraitCollection(verticalSizeClass: .Regular), UITraitCollection(horizontalSizeClass: .Regular)])
XCTAssertTrue(regularTraitCollection.isIpad)
Bartłomiej Semańczyk
  • 59,234
  • 49
  • 233
  • 358