File tree Expand file tree Collapse file tree 4 files changed +12475
-10
lines changed
Expand file tree Collapse file tree 4 files changed +12475
-10
lines changed Original file line number Diff line number Diff line change 1+ /**
2+ * isLeapYear :: Number -> Boolean
3+ *
4+ * Check if a year is a leap year or not. A leap year is a year which has 366 days.
5+ * For the extra +1 day the February month contains 29 days instead of 28 days.
6+ *
7+ * The logic behind the leap year is-
8+ * 1. If the year is divisible by 400 then it is a leap year.
9+ * 2. If it is not divisible by 400 but divisible by 100 then it is not a leap year.
10+ * 3. If the year is not divisible by 400 but not divisible by 100 and divisible by 4 then a leap year.
11+ * 4. Other cases except the describing ones are not a leap year.
12+ *
13+ * @param {number } year
14+ * @returns {boolean } true if this is a leap year, false otherwise.
15+ */
16+ export const isLeapYear = ( year ) => {
17+ if ( year % 400 === 0 ) return true
18+ if ( year % 100 === 0 ) return false
19+ if ( year % 4 === 0 ) return true
20+
21+ return false
22+ }
Original file line number Diff line number Diff line change 1+ import { isLeapYear } from '../LeapYear'
2+
3+ describe ( 'Leap Year' , ( ) => {
4+ it ( 'Should return true on the year 2000' , ( ) => {
5+ expect ( isLeapYear ( 2000 ) ) . toBe ( true )
6+ } )
7+ it ( 'Should return false on the year 2001' , ( ) => {
8+ expect ( isLeapYear ( 2001 ) ) . toBe ( false )
9+ } )
10+ it ( 'Should return false on the year 2002' , ( ) => {
11+ expect ( isLeapYear ( 2002 ) ) . toBe ( false )
12+ } )
13+ it ( 'Should return false on the year 2003' , ( ) => {
14+ expect ( isLeapYear ( 2003 ) ) . toBe ( false )
15+ } )
16+ it ( 'Should return false on the year 2004' , ( ) => {
17+ expect ( isLeapYear ( 2004 ) ) . toBe ( true )
18+ } )
19+ it ( 'Should return false on the year 1900' , ( ) => {
20+ expect ( isLeapYear ( 1900 ) ) . toBe ( false )
21+ } )
22+ } )
You can’t perform that action at this time.
0 commit comments