|
@@ -0,0 +1,114 @@
|
|
|
|
+import { Allergies } from './allergies'
|
|
|
|
+
|
|
|
|
+describe('allergicTo', () => {
|
|
|
|
+ it('no allergies means not allergic', () => {
|
|
|
|
+ const allergies = new Allergies(0)
|
|
|
|
+
|
|
|
|
+ expect(allergies.allergicTo('peanuts')).toBeFalsy()
|
|
|
|
+ expect(allergies.allergicTo('cats')).toBeFalsy()
|
|
|
|
+ expect(allergies.allergicTo('strawberries')).toBeFalsy()
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ xit('is allergic to eggs', () => {
|
|
|
|
+ const allergies = new Allergies(1)
|
|
|
|
+
|
|
|
|
+ expect(allergies.allergicTo('eggs')).toBeTruthy()
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ xit('allergic to eggs in addition to other stuff', () => {
|
|
|
|
+ const allergies = new Allergies(5)
|
|
|
|
+
|
|
|
|
+ expect(allergies.allergicTo('eggs')).toBeTruthy()
|
|
|
|
+ expect(allergies.allergicTo('shellfish')).toBeTruthy()
|
|
|
|
+ expect(allergies.allergicTo('strawberries')).toBeFalsy()
|
|
|
|
+ })
|
|
|
|
+})
|
|
|
|
+
|
|
|
|
+describe('list', () => {
|
|
|
|
+ xit('no allergies at all', () => {
|
|
|
|
+ const allergies = new Allergies(0)
|
|
|
|
+ const expected: string[] = []
|
|
|
|
+
|
|
|
|
+ expect(allergies.list()).toEqual(expected)
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ xit('allergic to just eggs', () => {
|
|
|
|
+ const allergies = new Allergies(1)
|
|
|
|
+ const expected = ['eggs']
|
|
|
|
+
|
|
|
|
+ expect(allergies.list()).toEqual(expected)
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ xit('allergic to just peanuts', () => {
|
|
|
|
+ const allergies = new Allergies(2)
|
|
|
|
+ const expected = ['peanuts']
|
|
|
|
+
|
|
|
|
+ expect(allergies.list()).toEqual(expected)
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ xit('allergic to just strawberries', () => {
|
|
|
|
+ const allergies = new Allergies(8)
|
|
|
|
+ const expected = ['strawberries']
|
|
|
|
+
|
|
|
|
+ expect(allergies.list()).toEqual(expected)
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ xit('allergic to eggs and peanuts', () => {
|
|
|
|
+ const allergies = new Allergies(3)
|
|
|
|
+ const expected = ['eggs', 'peanuts']
|
|
|
|
+
|
|
|
|
+ expect(allergies.list()).toEqual(expected)
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ xit('allergic to more than eggs but not peanuts', () => {
|
|
|
|
+ const allergies = new Allergies(5)
|
|
|
|
+ const expected = ['eggs', 'shellfish']
|
|
|
|
+
|
|
|
|
+ expect(allergies.list()).toEqual(expected)
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ xit('allergic to lots of stuff', () => {
|
|
|
|
+ const allergies = new Allergies(248)
|
|
|
|
+ const expected = ['strawberries', 'tomatoes', 'chocolate', 'pollen', 'cats']
|
|
|
|
+
|
|
|
|
+ expect(allergies.list()).toEqual(expected)
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ xit('allergic to everything', () => {
|
|
|
|
+ const allergies = new Allergies(255)
|
|
|
|
+ const expected = [
|
|
|
|
+ 'eggs',
|
|
|
|
+ 'peanuts',
|
|
|
|
+ 'shellfish',
|
|
|
|
+ 'strawberries',
|
|
|
|
+ 'tomatoes',
|
|
|
|
+ 'chocolate',
|
|
|
|
+ 'pollen',
|
|
|
|
+ 'cats',
|
|
|
|
+ ]
|
|
|
|
+
|
|
|
|
+ expect(allergies.list()).toEqual(expected)
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ xit('ignore non allergen score parts', () => {
|
|
|
|
+ const allergies = new Allergies(509)
|
|
|
|
+ const expected = [
|
|
|
|
+ 'eggs',
|
|
|
|
+ 'shellfish',
|
|
|
|
+ 'strawberries',
|
|
|
|
+ 'tomatoes',
|
|
|
|
+ 'chocolate',
|
|
|
|
+ 'pollen',
|
|
|
|
+ 'cats',
|
|
|
|
+ ]
|
|
|
|
+
|
|
|
|
+ expect(allergies.list()).toEqual(expected)
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ xit('ignore non allergen score parts, without highest valid score', () => {
|
|
|
|
+ const allergies = new Allergies(257)
|
|
|
|
+ const expected = ['eggs']
|
|
|
|
+
|
|
|
|
+ expect(allergies.list()).toEqual(expected)
|
|
|
|
+ })
|
|
|
|
+})
|