diff --git a/server/pruef-tagesgrenze.mjs b/server/pruef-tagesgrenze.mjs index 70e7407b..144cb606 100644 --- a/server/pruef-tagesgrenze.mjs +++ b/server/pruef-tagesgrenze.mjs @@ -65,7 +65,7 @@ import { mkdtempSync, rmSync } from "node:fs"; import { tmpdir } from "node:os"; import { join } from "node:path"; import { eigenerPort } from "./helfer-port.mjs"; -import { heuteLokal } from "./helfer-tag.mjs"; +import { heuteLokal, tagLokal } from "./helfer-tag.mjs"; let fehler = 0, geprueft = 0; const ok = (b, t) => { geprueft++; console.log((b ? " ok " : " FEHL ") + t); if (!b) fehler++; }; @@ -180,7 +180,63 @@ console.log("\n=== 2. Und die Kette, an der es aufgefallen ist ==="); `und er liegt auf dem Ortstag ${ORTSTAG}, nicht auf ${UTC_TAG} (steht: ${t?.datum})`); } -console.log("\n=== 3. Gegenprobe: wuerde der alte Weg auffallen? ==="); +console.log("\n=== 3. Und die VERGLEICHE: was ist ueberfaellig? ==="); +/* Von den sechzehn Stellen vom 01.10. SCHREIBEN zehn einen Tag; die + zwei Abschnitte oben decken sie ab. Sechs VERGLEICHEN gegen + „heute" — und davon findet ein Schreibtest keinen einzigen. Die + Spalte sieht richtig aus; falsch ist die Zahl, die jemand auf dem + Bildschirm liest. + + Die Regel im Haus ist `frist < heute`. Zwei Aufgaben genuegen, und + sie unterscheiden in BEIDEN Zweigen der verschobenen Uhr: + + Etc/GMT-14 (Ortstag = UTC+1): heute_alt waere gestern + -> „gestern" nicht mehr kleiner als heute_alt -> 0 statt 1 + Etc/GMT+11 (Ortstag = UTC-1): heute_alt waere morgen + -> „heute" kleiner als heute_alt -> 2 statt 1 */ +{ + const GESTERN = tagLokal(-1); + const neueAufgabe = (titel, frist) => fetch(`${BASIS}/workspace/api/aufgaben`, { + method: "POST", headers: kopf(dogi), + body: JSON.stringify({ titel, frist, prioritaet: "mittel" }), + }); + + const a1 = await neueAufgabe("Frist war gestern", GESTERN); + const a2 = await neueAufgabe("Frist ist heute", ORTSTAG); + ok(a1.status === 201 && a2.status === 201, + `zwei Aufgaben angelegt, Fristen ${GESTERN} und ${ORTSTAG}` + + ` (${a1.status}/${a2.status})`); + + const u = await (await fetch(`${BASIS}/workspace/api/uebersicht`, + { headers: { cookie: dogi } })).json().catch(() => ({})); + + ok(u.ueberfaellig === 1, + `genau eine ist ueberfaellig — die von gestern (${u.ueberfaellig})`); + /* DIESE ZAHL UNTERSCHEIDET NICHT, und das gehoert dazugeschrieben. + Gemessen beim Rueckbau: Mit dem UTC-Tag blieb sie 1 — nur zaehlte + sie die FALSCHE Aufgabe (die von gestern galt dann als heute + faellig). Mit zwei Zahlen allein ist das nicht zu trennen; in + beiden Zweigen der verschobenen Uhr bleibt sie 1. + + Sie steht hier als Begleitprobe: Sie zeigt, dass ueberhaupt + gezaehlt wird. Der Unterschied kommt aus der Zeile darueber. Eine + Zahl, die aus dem falschen Grund stimmt, soll nicht aussehen wie + ein Beweis. */ + ok(u.heute === 1, + `und eine ist fuer heute faellig (${u.heute}) — Begleitprobe,` + + " sie unterscheidet nicht"); + + /* WAS DER ALTE WEG GESAGT HAETTE. Nicht nachgebaut, sondern + ausgerechnet: Damit steht im Lauf, warum diese zwei Zahlen etwas + beweisen und nicht nur zufaellig stimmen. */ + const alt = UTC_TAG; + const waere = [GESTERN, ORTSTAG].filter((f) => f < alt).length; + ok(waere !== 1, + `mit dem UTC-Tag (${alt}) waeren es ${waere} statt 1 — die Zeile` + + " ueber dieser unterscheidet also wirklich"); +} + +console.log("\n=== 4. Gegenprobe: wuerde der alte Weg auffallen? ==="); /* Eine Pruefung, die immer bestaetigt, bestaetigt nichts. Hier wird nachgebaut, was bis zum 01.10. im Code stand — und gezeigt, dass die Behauptungen oben daran scheitern wuerden. */