Test repeated pirate broadside damage
This commit is contained in:
parent
0ca8ffdd90
commit
8373bc0d2e
@ -8,6 +8,7 @@ import {
|
|||||||
normalizePlayerDamage,
|
normalizePlayerDamage,
|
||||||
processQueuedPlayerHits,
|
processQueuedPlayerHits,
|
||||||
reducePlayerHitQueue,
|
reducePlayerHitQueue,
|
||||||
|
reducePlayerVolleyHits,
|
||||||
} from '../src/game-logic.js';
|
} from '../src/game-logic.js';
|
||||||
|
|
||||||
test('first pirate hit removes exactly the default damage and does not end the game', () => {
|
test('first pirate hit removes exactly the default damage and does not end the game', () => {
|
||||||
@ -145,3 +146,59 @@ test('empty hit queue is a no-op', () => {
|
|||||||
assert.equal(result.ignoredHits, 0);
|
assert.equal(result.ignoredHits, 0);
|
||||||
assert.equal(result.gameOver, false);
|
assert.equal(result.gameOver, false);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('one pirate broadside damages once, and the next broadside damages again', () => {
|
||||||
|
const firstVolley = reducePlayerVolleyHits({
|
||||||
|
hull: 100,
|
||||||
|
hits: [
|
||||||
|
{ volleyId: 101, damage: 6 },
|
||||||
|
{ volleyId: 101, damage: 6 },
|
||||||
|
{ volleyId: 101, damage: 6 },
|
||||||
|
],
|
||||||
|
});
|
||||||
|
|
||||||
|
assert.equal(firstVolley.hull, 94);
|
||||||
|
assert.equal(firstVolley.totalDamage, 6);
|
||||||
|
assert.equal(firstVolley.acceptedHits.length, 1);
|
||||||
|
assert.equal(firstVolley.ignoredHits.length, 2);
|
||||||
|
|
||||||
|
const secondVolley = reducePlayerVolleyHits({
|
||||||
|
hull: firstVolley.hull,
|
||||||
|
seenVolleyIds: firstVolley.seenVolleyIds,
|
||||||
|
hits: [
|
||||||
|
{ volleyId: 102, damage: 6 },
|
||||||
|
{ volleyId: 102, damage: 6 },
|
||||||
|
],
|
||||||
|
});
|
||||||
|
|
||||||
|
assert.equal(secondVolley.hull, 88);
|
||||||
|
assert.equal(secondVolley.totalDamage, 6);
|
||||||
|
assert.equal(secondVolley.acceptedHits.length, 1);
|
||||||
|
assert.equal(secondVolley.ignoredHits.length, 1);
|
||||||
|
|
||||||
|
const repeatedSecondVolley = reducePlayerVolleyHits({
|
||||||
|
hull: secondVolley.hull,
|
||||||
|
seenVolleyIds: secondVolley.seenVolleyIds,
|
||||||
|
hits: [{ volleyId: 102, damage: 6 }],
|
||||||
|
});
|
||||||
|
|
||||||
|
assert.equal(repeatedSecondVolley.hull, 88);
|
||||||
|
assert.equal(repeatedSecondVolley.totalDamage, 0);
|
||||||
|
assert.equal(repeatedSecondVolley.acceptedHits.length, 0);
|
||||||
|
assert.equal(repeatedSecondVolley.ignoredHits.length, 1);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('different pirate volleys can both damage even when processed together', () => {
|
||||||
|
const result = reducePlayerVolleyHits({
|
||||||
|
hull: 100,
|
||||||
|
hits: [
|
||||||
|
{ volleyId: 201, damage: 6 },
|
||||||
|
{ volleyId: 202, damage: 6 },
|
||||||
|
],
|
||||||
|
});
|
||||||
|
|
||||||
|
assert.equal(result.hull, 88);
|
||||||
|
assert.equal(result.totalDamage, 12);
|
||||||
|
assert.equal(result.acceptedHits.length, 2);
|
||||||
|
assert.equal(result.ignoredHits.length, 0);
|
||||||
|
});
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user