|
| 1 | +import LeanTest |
| 2 | +import Allergies |
| 3 | + |
| 4 | +open LeanTest |
| 5 | + |
| 6 | +def allergiesTests : TestSuite := |
| 7 | + (TestSuite.empty "Allergies") |
| 8 | + |>.addTest "testing for eggs allergy -> not allergic to anything" (do |
| 9 | + return assertEqual false (Allergies.allergicTo .eggs 0)) |
| 10 | + |>.addTest "testing for eggs allergy -> allergic only to eggs" (do |
| 11 | + return assertEqual true (Allergies.allergicTo .eggs 1)) |
| 12 | + |>.addTest "testing for eggs allergy -> allergic to eggs and something else" (do |
| 13 | + return assertEqual true (Allergies.allergicTo .eggs 3)) |
| 14 | + |>.addTest "testing for eggs allergy -> allergic to something, but not eggs" (do |
| 15 | + return assertEqual false (Allergies.allergicTo .eggs 2)) |
| 16 | + |>.addTest "testing for eggs allergy -> allergic to everything" (do |
| 17 | + return assertEqual true (Allergies.allergicTo .eggs 255)) |
| 18 | + |>.addTest "testing for peanuts allergy -> not allergic to anything" (do |
| 19 | + return assertEqual false (Allergies.allergicTo .peanuts 0)) |
| 20 | + |>.addTest "testing for peanuts allergy -> allergic only to peanuts" (do |
| 21 | + return assertEqual true (Allergies.allergicTo .peanuts 2)) |
| 22 | + |>.addTest "testing for peanuts allergy -> allergic to peanuts and something else" (do |
| 23 | + return assertEqual true (Allergies.allergicTo .peanuts 7)) |
| 24 | + |>.addTest "testing for peanuts allergy -> allergic to something, but not peanuts" (do |
| 25 | + return assertEqual false (Allergies.allergicTo .peanuts 5)) |
| 26 | + |>.addTest "testing for peanuts allergy -> allergic to everything" (do |
| 27 | + return assertEqual true (Allergies.allergicTo .peanuts 255)) |
| 28 | + |>.addTest "testing for shellfish allergy -> not allergic to anything" (do |
| 29 | + return assertEqual false (Allergies.allergicTo .shellfish 0)) |
| 30 | + |>.addTest "testing for shellfish allergy -> allergic only to shellfish" (do |
| 31 | + return assertEqual true (Allergies.allergicTo .shellfish 4)) |
| 32 | + |>.addTest "testing for shellfish allergy -> allergic to shellfish and something else" (do |
| 33 | + return assertEqual true (Allergies.allergicTo .shellfish 14)) |
| 34 | + |>.addTest "testing for shellfish allergy -> allergic to something, but not shellfish" (do |
| 35 | + return assertEqual false (Allergies.allergicTo .shellfish 10)) |
| 36 | + |>.addTest "testing for shellfish allergy -> allergic to everything" (do |
| 37 | + return assertEqual true (Allergies.allergicTo .shellfish 255)) |
| 38 | + |>.addTest "testing for strawberries allergy -> not allergic to anything" (do |
| 39 | + return assertEqual false (Allergies.allergicTo .strawberries 0)) |
| 40 | + |>.addTest "testing for strawberries allergy -> allergic only to strawberries" (do |
| 41 | + return assertEqual true (Allergies.allergicTo .strawberries 8)) |
| 42 | + |>.addTest "testing for strawberries allergy -> allergic to strawberries and something else" (do |
| 43 | + return assertEqual true (Allergies.allergicTo .strawberries 28)) |
| 44 | + |>.addTest "testing for strawberries allergy -> allergic to something, but not strawberries" (do |
| 45 | + return assertEqual false (Allergies.allergicTo .strawberries 20)) |
| 46 | + |>.addTest "testing for strawberries allergy -> allergic to everything" (do |
| 47 | + return assertEqual true (Allergies.allergicTo .strawberries 255)) |
| 48 | + |>.addTest "testing for tomatoes allergy -> not allergic to anything" (do |
| 49 | + return assertEqual false (Allergies.allergicTo .tomatoes 0)) |
| 50 | + |>.addTest "testing for tomatoes allergy -> allergic only to tomatoes" (do |
| 51 | + return assertEqual true (Allergies.allergicTo .tomatoes 16)) |
| 52 | + |>.addTest "testing for tomatoes allergy -> allergic to tomatoes and something else" (do |
| 53 | + return assertEqual true (Allergies.allergicTo .tomatoes 56)) |
| 54 | + |>.addTest "testing for tomatoes allergy -> allergic to something, but not tomatoes" (do |
| 55 | + return assertEqual false (Allergies.allergicTo .tomatoes 40)) |
| 56 | + |>.addTest "testing for tomatoes allergy -> allergic to everything" (do |
| 57 | + return assertEqual true (Allergies.allergicTo .tomatoes 255)) |
| 58 | + |>.addTest "testing for chocolate allergy -> not allergic to anything" (do |
| 59 | + return assertEqual false (Allergies.allergicTo .chocolate 0)) |
| 60 | + |>.addTest "testing for chocolate allergy -> allergic only to chocolate" (do |
| 61 | + return assertEqual true (Allergies.allergicTo .chocolate 32)) |
| 62 | + |>.addTest "testing for chocolate allergy -> allergic to chocolate and something else" (do |
| 63 | + return assertEqual true (Allergies.allergicTo .chocolate 112)) |
| 64 | + |>.addTest "testing for chocolate allergy -> allergic to something, but not chocolate" (do |
| 65 | + return assertEqual false (Allergies.allergicTo .chocolate 80)) |
| 66 | + |>.addTest "testing for chocolate allergy -> allergic to everything" (do |
| 67 | + return assertEqual true (Allergies.allergicTo .chocolate 255)) |
| 68 | + |>.addTest "testing for pollen allergy -> not allergic to anything" (do |
| 69 | + return assertEqual false (Allergies.allergicTo .pollen 0)) |
| 70 | + |>.addTest "testing for pollen allergy -> allergic only to pollen" (do |
| 71 | + return assertEqual true (Allergies.allergicTo .pollen 64)) |
| 72 | + |>.addTest "testing for pollen allergy -> allergic to pollen and something else" (do |
| 73 | + return assertEqual true (Allergies.allergicTo .pollen 224)) |
| 74 | + |>.addTest "testing for pollen allergy -> allergic to something, but not pollen" (do |
| 75 | + return assertEqual false (Allergies.allergicTo .pollen 160)) |
| 76 | + |>.addTest "testing for pollen allergy -> allergic to everything" (do |
| 77 | + return assertEqual true (Allergies.allergicTo .pollen 255)) |
| 78 | + |>.addTest "testing for cats allergy -> not allergic to anything" (do |
| 79 | + return assertEqual false (Allergies.allergicTo .cats 0)) |
| 80 | + |>.addTest "testing for cats allergy -> allergic only to cats" (do |
| 81 | + return assertEqual true (Allergies.allergicTo .cats 128)) |
| 82 | + |>.addTest "testing for cats allergy -> allergic to cats and something else" (do |
| 83 | + return assertEqual true (Allergies.allergicTo .cats 192)) |
| 84 | + |>.addTest "testing for cats allergy -> allergic to something, but not cats" (do |
| 85 | + return assertEqual false (Allergies.allergicTo .cats 64)) |
| 86 | + |>.addTest "testing for cats allergy -> allergic to everything" (do |
| 87 | + return assertEqual true (Allergies.allergicTo .cats 255)) |
| 88 | + |>.addTest "list when: -> no allergies" (do |
| 89 | + return assertEqual [] (Allergies.list 0)) |
| 90 | + |>.addTest "list when: -> just eggs" (do |
| 91 | + return assertEqual [.eggs] (Allergies.list 1)) |
| 92 | + |>.addTest "list when: -> just peanuts" (do |
| 93 | + return assertEqual [.peanuts] (Allergies.list 2)) |
| 94 | + |>.addTest "list when: -> just strawberries" (do |
| 95 | + return assertEqual [.strawberries] (Allergies.list 8)) |
| 96 | + |>.addTest "list when: -> eggs and peanuts" (do |
| 97 | + return assertEqual [.eggs, .peanuts] (Allergies.list 3)) |
| 98 | + |>.addTest "list when: -> more than eggs but not peanuts" (do |
| 99 | + return assertEqual [.eggs, .shellfish] (Allergies.list 5)) |
| 100 | + |>.addTest "list when: -> lots of stuff" (do |
| 101 | + return assertEqual [.strawberries, .tomatoes, .chocolate, .pollen, .cats] (Allergies.list 248)) |
| 102 | + |>.addTest "list when: -> everything" (do |
| 103 | + return assertEqual [.eggs, .peanuts, .shellfish, .strawberries, .tomatoes, .chocolate, .pollen, .cats] (Allergies.list 255)) |
| 104 | + |>.addTest "list when: -> no allergen score parts" (do |
| 105 | + return assertEqual [.eggs, .shellfish, .strawberries, .tomatoes, .chocolate, .pollen, .cats] (Allergies.list 509)) |
| 106 | + |>.addTest "list when: -> no allergen score parts without highest valid score" (do |
| 107 | + return assertEqual [.eggs] (Allergies.list 257)) |
| 108 | + |
| 109 | +def main : IO UInt32 := do |
| 110 | + runTestSuitesWithExitCode [allergiesTests] |
0 commit comments