Skip to content

Commit 1d280ab

Browse files
author
zombiefungus
committed
Change leap to stateless (issue #353)
1 parent 695ed70 commit 1d280ab

File tree

3 files changed

+13
-9
lines changed

3 files changed

+13
-9
lines changed

exercises/leap/example.scala

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1-
case class Year(year: Int) {
2-
lazy val isLeap: Boolean = divisibleBy(4) && (divisibleBy(400) || !divisibleBy(100))
1+
object Year {
2+
def isLeap(year: Int): Boolean =
3+
divisibleBy(year, 4) && (divisibleBy(year, 400) || !divisibleBy(year, 100))
34

4-
private def divisibleBy(i: Int) = year % i == 0
5+
private def divisibleBy(year: Int, i: Int) = year % i == 0
56
}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
object Year {
2+
def isLeap(year: Int): Boolean = ???
3+
}

exercises/leap/src/test/scala/LeapTest.scala

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,31 +2,31 @@ import org.scalatest._
22

33
class LeapTest extends FunSuite {
44
test ("vanilla leap year") {
5-
assert(Year(1996).isLeap)
5+
assert(Year.isLeap(1996))
66
}
77

88
test ("any old year") {
99
pending
10-
assert(!Year(1997).isLeap)
10+
assert(!Year.isLeap(1997))
1111
}
1212

1313
test("an even year") {
1414
pending
15-
assert(!Year(1986).isLeap)
15+
assert(!Year.isLeap(1986))
1616
}
1717

1818
test ("century") {
1919
pending
20-
assert(!Year(1900).isLeap)
20+
assert(!Year.isLeap(1900))
2121
}
2222

2323
test ("exceptional century") {
2424
pending
25-
assert(Year(2000).isLeap)
25+
assert(Year.isLeap(2000))
2626
}
2727

2828
test("exceptional century that is no millenium") {
2929
pending
30-
assert(Year(1600).isLeap)
30+
assert(Year.isLeap(1600))
3131
}
3232
}

0 commit comments

Comments
 (0)