Allow Distrans between completed auction bids
Verify and publish checkpoint container / container (push) Successful in 10m44s

This commit is contained in:
Quintine committed 2026-10-29 10:34:00 +11:00
1 parent ab7a947833
commit ccc4c7bb40
16 files changed
+250 -80

No files matched your search

+8 -6
View File
@@ -15,18 +15,18 @@ void test('Distrans quotes a virgin physical ordinary lot without rewriting its
assert.equal(block({ phase: 3, auction: null }), null);
});
void test('Distrans first bid or pass and committed aid retain the ordinary-lot timing boundary', () => {
void test('Distrans permits completed ordinary bids and passes while rejecting invalid lots', () => {
const g = fresh();
for (const auction of [{ ...g.auction, bid: 1, bidder: 'a' }, { ...g.auction, passed: ['a'] },
{ ...g.auction, bid: 2, bidder: 'a', allyPayment: 1 }]) assert.equal(block({ ...g, auction }), null);
for (const auction of [
{ ...g.auction, bid: 1, bidder: 'a' },
{ ...g.auction, passed: ['a'] },
{ ...g.auction, bidder: 'a' },
{ ...g.auction, allyPayment: 1 },
{ ...g.auction, index: -1 },
{ ...g.auction, index: 1 },
{ ...g.auction, index: 0.5 },
{ ...g.auction, cards: [] },
]) assert.match(block({ ...g, auction })!, /after bidding starts/);
]) assert.match(block({ ...g, auction })!, /unresolved auction state/);
assert.ok(block({ ...g, phase: 4 }));
});
@@ -50,14 +50,16 @@ void test('Distrans can be used provisionally before the first decision in a gen
assert.deepEqual(normal, before);
});
void test('a first pass, bid, zero sealed submission, funding or invalid special lot closes the pre-bid opportunity', () => {
void test('completed special bids remain available while malformed lots and funding are rejected', () => {
const once = special('onceAround'), silent = special('silent'), normal = special('normal', 'blackMarket');
const pass = submitRicheseBid(once, { event: once.event, actor: once.active!, amount: null }, 0);
const bid = submitRicheseBid(once, { event: once.event, actor: once.active!, amount: 1 }, 1);
const sealed = submitRicheseBid(silent, { event: silent.event, actor: 'a', amount: 0 }, 0);
const normalPass = submitRicheseBid(normal, { event: normal.event, actor: normal.active!, amount: null }, 0);
const normalBid = submitRicheseBid(normal, { event: normal.event, actor: normal.active!, amount: 1 }, 1);
for (const lot of [pass, bid, sealed, normalPass, normalBid,
for (const lot of [pass, bid, sealed, normalPass, normalBid])
assert.equal(block({ phase: 3, auction: null, richeseAuction: lot }), null);
for (const lot of [
{ ...once, event: '' },
{ ...once, active: 'b' },
{ ...once, cardId: '' },