Skip to content

Instantly share code, notes, and snippets.

@masters3d
Created November 4, 2015 03:06
Show Gist options
  • Save masters3d/5e91105d2ef994c4211e to your computer and use it in GitHub Desktop.
Save masters3d/5e91105d2ef994c4211e to your computer and use it in GitHub Desktop.
enum Allergies:UInt {
static func hasAllergy(value:UInt, testAgainst: Allergies) -> Bool {
return value & testAgainst.rawValue > 0
}
case None = 0
case eggs = 1
case peanuts = 2
case shellfish = 4
case strawberries = 8
case tomatoes = 16
case chocolate = 32
case pollen = 64
case cats = 128
}
import XCTest
// Apple Swift version 2.0
class AllergiesTest: XCTestCase {
func testBob() {
XCTAssertTrue(Allergies.hasAllergy(34,testAgainst: Allergies.peanuts), "Bob is allergic to peanuts")
XCTAssertTrue(Allergies.hasAllergy(34, testAgainst: Allergies.chocolate), "Bob is allergic to chocolate")
XCTAssertFalse(Allergies.hasAllergy(34,testAgainst: Allergies.cats), "Bob is not allergic to cats")
}
func testEggsNcats() {
XCTAssertTrue(Allergies.hasAllergy(129, testAgainst: Allergies.eggs))
XCTAssertTrue(Allergies.hasAllergy(129, testAgainst: Allergies.cats))
XCTAssertFalse(Allergies.hasAllergy(129, testAgainst: Allergies.chocolate))
}
func testNone() {
XCTAssertFalse(Allergies.hasAllergy(0,testAgainst: Allergies.pollen))
}
func testAll() {
let allInt = UInt(Array(0...7).reduce(0){ return ($0 | (1 << $1)) })
XCTAssertTrue(Allergies.hasAllergy(allInt,testAgainst:Allergies.eggs))
XCTAssertTrue(Allergies.hasAllergy(allInt,testAgainst:Allergies.peanuts))
XCTAssertTrue(Allergies.hasAllergy(allInt,testAgainst:Allergies.shellfish))
XCTAssertTrue(Allergies.hasAllergy(allInt,testAgainst:Allergies.strawberries))
XCTAssertTrue(Allergies.hasAllergy(allInt,testAgainst:Allergies.tomatoes))
XCTAssertTrue(Allergies.hasAllergy(allInt,testAgainst:Allergies.chocolate))
XCTAssertTrue(Allergies.hasAllergy(allInt,testAgainst:Allergies.pollen))
XCTAssertTrue(Allergies.hasAllergy(allInt,testAgainst:Allergies.cats))
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment