Skip to content

Change leap to stateless (issue #353) #354

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
May 6, 2017
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions exercises/leap/example.scala
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
case class Year(year: Int) {
lazy val isLeap: Boolean = divisibleBy(4) && (divisibleBy(400) || !divisibleBy(100))

private def divisibleBy(i: Int) = year % i == 0
object Year {
def isLeap(year: Int): Boolean = {
def divisibleBy(i: Int) = year % i == 0
divisibleBy(4) && (divisibleBy(400) || !divisibleBy(100))}
}
3 changes: 3 additions & 0 deletions exercises/leap/src/main/scala/Leap.scala
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
object Year {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Now this touches an interesting subject:
Some time ago we decided in issue #137 to have such a file with the expected functions for the first 10 exercises.

leap was originally not among those, but now after the reordering according to difficulty it is.
So I think to add this file is just fine. Am I right, @ricemery @ErikSchierboom ? Maybe we should also review the other affected exercises under this aspect?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@abo64 As far as I can recall: yes, you are right. I think reviewing the other exercises makes sense.

def isLeap(year: Int): Boolean = ???
}
12 changes: 6 additions & 6 deletions exercises/leap/src/test/scala/LeapTest.scala
Original file line number Diff line number Diff line change
Expand Up @@ -2,31 +2,31 @@ import org.scalatest._

class LeapTest extends FunSuite {
test ("vanilla leap year") {
assert(Year(1996).isLeap)
assert(Year.isLeap(1996))
}

test ("any old year") {
pending
assert(!Year(1997).isLeap)
assert(!Year.isLeap(1997))
}

test("an even year") {
pending
assert(!Year(1986).isLeap)
assert(!Year.isLeap(1986))
}

test ("century") {
pending
assert(!Year(1900).isLeap)
assert(!Year.isLeap(1900))
}

test ("exceptional century") {
pending
assert(Year(2000).isLeap)
assert(Year.isLeap(2000))
}

test("exceptional century that is no millenium") {
pending
assert(Year(1600).isLeap)
assert(Year.isLeap(1600))
}
}