Skip to content

Commit

Permalink
Allergies - use object instead of an instance - refs exercism#242. Ad…
Browse files Browse the repository at this point in the history
…d Allergies.scala to src dir - refs exercism#137. Add topics to config.json - refs exercism#125
  • Loading branch information
ricemery committed Dec 15, 2016
1 parent 29079be commit 147a25c
Show file tree
Hide file tree
Showing 4 changed files with 29 additions and 19 deletions.
3 changes: 3 additions & 0 deletions config.json
Original file line number Diff line number Diff line change
Expand Up @@ -173,6 +173,9 @@
"slug": "allergies",
"difficulty": 1,
"topics": [
"Lists",
"Enumerations",
"Filtering"
]
},
{
Expand Down
6 changes: 1 addition & 5 deletions exercises/allergies/example.scala
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import Allergen.Allergen

class Allergies {
object Allergies {
private lazy val allergenList = Allergen.values

def isAllergicTo(allergen: Allergen, score: Int): Boolean =
Expand All @@ -10,10 +10,6 @@ class Allergies {
allergenList.filter(a => isAllergicTo(a, score)).toList
}

object Allergies {
def apply() = new Allergies
}

object Allergen extends Enumeration {
type Allergen = Value

Expand Down
11 changes: 11 additions & 0 deletions exercises/allergies/src/main/scala/Allergies.scala
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
import Allergen.Allergen

object Allergies {
def isAllergicTo(allergen: Allergen, score: Int): Boolean = ???

def allergies(score: Int): List[Allergen] = ???
}

object Allergen extends Enumeration {
type Allergen = ???
}
28 changes: 14 additions & 14 deletions exercises/allergies/src/test/scala/AllergiesTest.scala
Original file line number Diff line number Diff line change
Expand Up @@ -2,67 +2,67 @@ import org.scalatest.{Matchers, FlatSpec}

class AllergiesTest extends FlatSpec with Matchers {
it should "handle no allergies means not allergic" in {
Allergies().isAllergicTo(Allergen.Peanuts, 0) should equal (false)
Allergies().isAllergicTo(Allergen.Cats, 0) should equal (false)
Allergies().isAllergicTo(Allergen.Strawberries, 0) should equal (false)
Allergies.isAllergicTo(Allergen.Peanuts, 0) should equal (false)
Allergies.isAllergicTo(Allergen.Cats, 0) should equal (false)
Allergies.isAllergicTo(Allergen.Strawberries, 0) should equal (false)
}

it should "handle is allergic to eggs" in {
pending
Allergies().isAllergicTo(Allergen.Eggs, 1) should equal (true)
Allergies.isAllergicTo(Allergen.Eggs, 1) should equal (true)
}

it should "handle is allergic to eggs in addition to other stuff" in {
pending
Allergies().isAllergicTo(Allergen.Eggs, 5) should equal (true)
Allergies.isAllergicTo(Allergen.Eggs, 5) should equal (true)
}

it should "handle no allergies" in {
pending
Allergies().allergies(0) should equal (List())
Allergies.allergies(0) should equal (List())
}

it should "handle allergic to just eggs" in {
pending
Allergies().allergies(1) should equal (List(Allergen.Eggs))
Allergies.allergies(1) should equal (List(Allergen.Eggs))
}

it should "handle allergic to just peanuts" in {
pending
Allergies().allergies(2) should equal (List(Allergen.Peanuts))
Allergies.allergies(2) should equal (List(Allergen.Peanuts))
}

it should "handle allergic to just strawberries" in {
pending
Allergies().allergies(8) should equal (List(Allergen.Strawberries))
Allergies.allergies(8) should equal (List(Allergen.Strawberries))
}

it should "handle allergic to eggs and peanuts" in {
pending
Allergies().allergies(3) should equal (List(Allergen.Eggs, Allergen.Peanuts))
Allergies.allergies(3) should equal (List(Allergen.Eggs, Allergen.Peanuts))
}

it should "handle allergic to more than eggs but not peanuts" in {
pending
Allergies().allergies(5) should equal (List(Allergen.Eggs, Allergen.Shellfish))
Allergies.allergies(5) should equal (List(Allergen.Eggs, Allergen.Shellfish))
}

it should "handle allergic to lots of stuff" in {
pending
Allergies().allergies(248) should equal (List(Allergen.Strawberries, Allergen.Tomatoes,
Allergies.allergies(248) should equal (List(Allergen.Strawberries, Allergen.Tomatoes,
Allergen.Chocolate, Allergen.Pollen, Allergen.Cats))
}

it should "handle allergic to everything" in {
pending
Allergies().allergies(255) should equal (List(Allergen.Eggs, Allergen.Peanuts,
Allergies.allergies(255) should equal (List(Allergen.Eggs, Allergen.Peanuts,
Allergen.Shellfish, Allergen.Strawberries, Allergen.Tomatoes,
Allergen.Chocolate, Allergen.Pollen, Allergen.Cats))
}

it should "ignore non allergen score parts" in {
pending
Allergies().allergies(509) should equal (List(Allergen.Eggs,
Allergies.allergies(509) should equal (List(Allergen.Eggs,
Allergen.Shellfish, Allergen.Strawberries, Allergen.Tomatoes,
Allergen.Chocolate, Allergen.Pollen, Allergen.Cats))
}
Expand Down

0 comments on commit 147a25c

Please sign in to comment.