ðŸŽ‰ Exercism Research is now launched. Help Exercism, help science and have some fun at research.exercism.io ðŸŽ‰

# n0mn0m's solution

## to Leap in the C# Track

Published at Sep 29 2020 · 0 comments
Instructions
Test suite
Solution

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

The tricky thing here is that a leap year in the Gregorian calendar occurs:

``````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
``````

For example, 1997 is not a leap year, but 1996 is. 1900 is not a leap year, but 2000 is.

## Notes

Though our exercise adopts some very simple rules, there is more to learn!

For a delightful, four minute explanation of the whole leap year phenomenon, go watch this youtube video.

## Notes

The DateTime class in C# provides a built-in IsLeapYear method which you should pretend doesn't exist for the purposes of implementing this exercise.

## Running the tests

To run the tests, run the command `dotnet test` from within the exercise directory.

Initially, only the first test will be enabled. This is to encourage you to solve the exercise one step at a time. Once you get the first test passing, remove the `Skip` property from the next test and work on getting that test passing. Once none of the tests are skipped and they are all passing, you can submit your solution using `exercism submit Leap.cs`

## Further information

For more detailed information about the C# track, including how to get help if you're having trouble, please visit the exercism.io C# language page.

## Source

JavaRanch Cattle Drive, exercise 3 http://www.javaranch.com/leap.jsp

### LeapTests.cs

``````// This file was auto-generated based on version 1.6.0 of the canonical data.

using Xunit;

public class LeapTests
{
[Fact]
public void Year_not_divisible_by_4_in_common_year()
{
Assert.False(Leap.IsLeapYear(2015));
}

[Fact(Skip = "Remove this Skip property to run this test")]
public void Year_divisible_by_2_not_divisible_by_4_in_common_year()
{
Assert.False(Leap.IsLeapYear(1970));
}

[Fact(Skip = "Remove this Skip property to run this test")]
public void Year_divisible_by_4_not_divisible_by_100_in_leap_year()
{
Assert.True(Leap.IsLeapYear(1996));
}

[Fact(Skip = "Remove this Skip property to run this test")]
public void Year_divisible_by_4_and_5_is_still_a_leap_year()
{
Assert.True(Leap.IsLeapYear(1960));
}

[Fact(Skip = "Remove this Skip property to run this test")]
public void Year_divisible_by_100_not_divisible_by_400_in_common_year()
{
Assert.False(Leap.IsLeapYear(2100));
}

[Fact(Skip = "Remove this Skip property to run this test")]
public void Year_divisible_by_100_but_not_by_3_is_still_not_a_leap_year()
{
Assert.False(Leap.IsLeapYear(1900));
}

[Fact(Skip = "Remove this Skip property to run this test")]
public void Year_divisible_by_400_in_leap_year()
{
Assert.True(Leap.IsLeapYear(2000));
}

[Fact(Skip = "Remove this Skip property to run this test")]
public void Year_divisible_by_400_but_not_by_125_is_still_a_leap_year()
{
Assert.True(Leap.IsLeapYear(2400));
}

[Fact(Skip = "Remove this Skip property to run this test")]
public void Year_divisible_by_200_not_divisible_by_400_in_common_year()
{
Assert.False(Leap.IsLeapYear(1800));
}
}``````
``````using System;

public static class Leap
{
public static bool IsLeapYear(int year) => (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
}``````