FizzBuzzKitTests.swift 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. import XCTest
  2. @testable import FizzBuzzKit
  3. final class FizzBuzzKitTests: XCTestCase {
  4. func testZero() throws {
  5. let fbkit = FizzBuzzKit()
  6. let result = fbkit.handle(number: 0)
  7. XCTAssertEqual(result, "0")
  8. }
  9. func testFizz() throws {
  10. let fbkit = FizzBuzzKit()
  11. let result = fbkit.handle(number: 3)
  12. XCTAssertEqual(result, "Fizz")
  13. }
  14. func testBuzz() throws {
  15. let fbkit = FizzBuzzKit()
  16. let result = fbkit.handle(number: 5)
  17. XCTAssertEqual(result, "Buzz")
  18. }
  19. func testFizzBuzz() throws {
  20. let fbkit = FizzBuzzKit()
  21. let result = fbkit.handle(number: 15)
  22. XCTAssertEqual(result, "FizzBuzz")
  23. }
  24. func testNumber() throws {
  25. let fbkit = FizzBuzzKit()
  26. let result = fbkit.handle(number: 7)
  27. XCTAssertEqual(result, "7")
  28. }
  29. func testMulitple() throws {
  30. let fbkit = FizzBuzzKit()
  31. let result = fbkit.handle(numbers: [1, 7, 30, 3])
  32. XCTAssertEqual(result, ["1", "7", "FizzBuzz", "Fizz"])
  33. }
  34. func testDifferentRules() throws {
  35. let fbkit = FizzBuzzKit(rules: [(7, "Potato"), (11, "Tomato")])
  36. var result = fbkit.handle(number: 7)
  37. XCTAssertEqual(result, "Potato")
  38. result = fbkit.handle(number: 11)
  39. XCTAssertEqual(result, "Tomato")
  40. }
  41. func testComplexRules() throws {
  42. let fbkit = FizzBuzzKit(rules: [({$0 % 2 == 0}, "Even"), ({$0 % 2 == 1}, "Odd")])
  43. var result = fbkit.handle(number: 3)
  44. XCTAssertEqual(result, "Odd")
  45. result = fbkit.handle(number: 8)
  46. XCTAssertEqual(result, "Even")
  47. }
  48. }