Exercism v3 launches on Sept 1st 2021. Learn more! 🚀🚀🚀
Avatar of sddeveloper

sddeveloper's solution

to Leap in the Swift Track

Published at Jun 19 2021 · 0 comments
Test suite

Given a year, report if it is a leap year.


on every year that is evenly divisible by 4
  except every year that is evenly divisible by 100
    unless the year is also evenly divisible by 400


If your language provides a method in the standard library that does this look-up, pretend it doesn't exist and implement it yourself.





Go through the project setup instructions for Xcode using Swift:


Notably from the source directory:

swift test runs tests
swift package generate-xcodeproj creates an Xcode project



Submitting Incomplete Solutions



import XCTest
@testable import Leap

class LeapTests: XCTestCase {

    func testVanillaLeapYear() {
        let year = Year(calendarYear: 1996)

    func testAnyOldYear() {
        let year = Year(calendarYear: 1997)

    func testCentury() {
        let year = Year(calendarYear: 1900)

    func testExceptionalCentury() {
        let year = Year(calendarYear: 2400)

    static var allTests: [(String, (LeapTests) -> () throws -> Void)] {
        return [
            ("testVanillaLeapYear", testVanillaLeapYear),
            ("testAnyOldYear", testAnyOldYear),
            ("testCentury", testCentury),
            ("testExceptionalCentury", testExceptionalCentury),


import XCTest
@testable import LeapTests

//Solution goes in Sources
struct Year {
    let isLeapYear: Bool
    init(calendarYear: Int) {

        isLeapYear = calendarYear.isMultiple(of: 4) && (!calendarYear.isMultiple(of: 100) || calendarYear.isMultiple(of: 400))

Community comments


What can you learn from this solution?



  • What compromises have been made?