Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function canAppear(enemy, environment) {
- return Boolean(
- (environment.isSunny && !enemy.isVampire) ||
- (environment.isRainy && enemy.hasWaterResistantArmor) ||
- enemy.hasntAppearedInAnHour
- );
- }
- describe(canAppear, () => {
- [
- [true, false, false, true, false, true],
- [true, false, false, true, true, true],
- [false, false, true, false, false, false],
- ].forEach(([isSunny, isVampire, isRainy, hasWaterResistantArmor, hasntAppearedInAnHour, expected]) => {
- const climate =
- isSunny
- ? 'sunny'
- : isRainy
- ? 'rainy'
- : 'unknown';
- describe(`when it is a ${climate} climate`, () => {
- describe(`and the enemy is ${ isVampire ? '' : 'not ' }a vampire`, () => {
- describe(`and the enemy ${hasWaterResistantArmor ? 'has ' : 'does not have '}water resisting armor`, () => {
- describe(`and the enemy has ${hasntAppearedInAnHour ? 'not ' : ''}appeared in an hour`, () => {
- it(`is ${expected}`, () => {
- expect(
- canAppear(
- { isVampire, hasWaterResistantArmor, hasntAppearedInAnHour },
- { isSunny, isRainy }
- )
- )
- .toEqual(expected);
- });
- });
- });
- });
- });
- });
- });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement