Advertisement
Guest User

Untitled

a guest
Oct 15th, 2019
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.43 KB | None | 0 0
  1. function canAppear(enemy, environment) {
  2. return Boolean(
  3. (environment.isSunny && !enemy.isVampire) ||
  4. (environment.isRainy && enemy.hasWaterResistantArmor) ||
  5. enemy.hasntAppearedInAnHour
  6. );
  7. }
  8.  
  9. describe(canAppear, () => {
  10. [
  11. [true, false, false, true, false, true],
  12. [true, false, false, true, true, true],
  13. [false, false, true, false, false, false],
  14. ].forEach(([isSunny, isVampire, isRainy, hasWaterResistantArmor, hasntAppearedInAnHour, expected]) => {
  15. const climate =
  16. isSunny
  17. ? 'sunny'
  18. : isRainy
  19. ? 'rainy'
  20. : 'unknown';
  21.  
  22. describe(`when it is a ${climate} climate`, () => {
  23. describe(`and the enemy is ${ isVampire ? '' : 'not ' }a vampire`, () => {
  24. describe(`and the enemy ${hasWaterResistantArmor ? 'has ' : 'does not have '}water resisting armor`, () => {
  25.  
  26. describe(`and the enemy has ${hasntAppearedInAnHour ? 'not ' : ''}appeared in an hour`, () => {
  27. it(`is ${expected}`, () => {
  28. expect(
  29. canAppear(
  30. { isVampire, hasWaterResistantArmor, hasntAppearedInAnHour },
  31. { isSunny, isRainy }
  32. )
  33. )
  34. .toEqual(expected);
  35. });
  36. });
  37. });
  38. });
  39. });
  40. });
  41. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement