Created
November 4, 2015 03:06
-
-
Save masters3d/5e91105d2ef994c4211e to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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