Test repeated pirate broadside damage
This commit is contained in:
parent
0ca8ffdd90
commit
8373bc0d2e
@ -8,6 +8,7 @@ import {
|
||||
normalizePlayerDamage,
|
||||
processQueuedPlayerHits,
|
||||
reducePlayerHitQueue,
|
||||
reducePlayerVolleyHits,
|
||||
} from '../src/game-logic.js';
|
||||
|
||||
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.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