Test: expectReproduces heet "the strongest check" maar is blind voor een ontbrekend veld #1811

Closed
opened 2026-08-27 13:24:53 +00:00 by brenno · 0 comments
Owner

Wat er misgaat

expectReproduces in test/collab_deck_diff_test.dart staat in het bestand
omschreven als "the strongest check":

The strongest check: after applying the diff, a fresh diff must be empty —
meaning after was reproduced exactly on the whole syncable surface.

Voor de klasse fout die #1803 was, bewijst hij niets. De helper diffs het
resultaat opnieuw, en een veld dat de diff niet kent is in béíde richtingen
onzichtbaar: de hervergelijking komt leeg terug terwijl de waarde nooit is
overgekomen. De helper zou dus groen blijven op precies de bug waarvoor je hem
zou willen inzetten.

Dat is erger dan een test die ontbreekt. Een ontbrekende test ziet iedereen; een
test die "the strongest check" heet en structureel blind is, laat de volgende
lezer denken dat er iets bewaakt wordt.

Waarom het klein maar de moeite waard is

Elke bestaande aanroep van expectReproduces is nog steeds nuttig — hij vangt
wél verkeerde volgorde, gemiste invoegingen en verkeerd toegepaste waarden. Het
is de belofte in de doc-comment die te ruim is, en de reikwijdte die
onuitgesproken blijft.

Voorstel

  1. De doc-comment eerlijk maken: hij toetst de oppervlakte die de diff kent, en
    is per definitie blind voor alles daarbuiten. Eén zin, en de val is weg.
  2. De helper uitbreiden met een tweede been dat de dia's ná toepassing veld voor
    veld vergelijkt over SlideField.values — dan dekt hij wat hij belooft binnen
    de oppervlakte, en blijft de blindheid beperkt tot wat de poort uit #1803
    inmiddels apart bewaakt.
  3. Overwegen om hem óók de niet-gesynchroniseerde velden te laten noemen wanneer
    die verschillen, als waarschuwing in plaats van als fout. Dat maakt van de
    blinde vlek iets zichtbaars in plaats van iets afwezigs.

Herkomst

#1803. De regressietest daar leest bewust de wáárde na toepassing in plaats van
op deze helper te leunen, met die reden erbij in het commentaar.

**Wat er misgaat** `expectReproduces` in `test/collab_deck_diff_test.dart` staat in het bestand omschreven als "the strongest check": > The strongest check: after applying the diff, a fresh diff must be empty — > meaning `after` was reproduced exactly on the whole syncable surface. Voor de klasse fout die #1803 was, bewijst hij niets. De helper diffs het resultaat opnieuw, en een veld dat de diff niet kent is in **béíde** richtingen onzichtbaar: de hervergelijking komt leeg terug terwijl de waarde nooit is overgekomen. De helper zou dus groen blijven op precies de bug waarvoor je hem zou willen inzetten. Dat is erger dan een test die ontbreekt. Een ontbrekende test ziet iedereen; een test die "the strongest check" heet en structureel blind is, laat de volgende lezer denken dat er iets bewaakt wordt. **Waarom het klein maar de moeite waard is** Elke bestaande aanroep van `expectReproduces` is nog steeds nuttig — hij vangt wél verkeerde volgorde, gemiste invoegingen en verkeerd toegepaste waarden. Het is de *belofte in de doc-comment* die te ruim is, en de reikwijdte die onuitgesproken blijft. **Voorstel** 1. De doc-comment eerlijk maken: hij toetst de oppervlakte die de diff kent, en is per definitie blind voor alles daarbuiten. Eén zin, en de val is weg. 2. De helper uitbreiden met een tweede been dat de dia's ná toepassing veld voor veld vergelijkt over `SlideField.values` — dan dekt hij wat hij belooft binnen de oppervlakte, en blijft de blindheid beperkt tot wat de poort uit #1803 inmiddels apart bewaakt. 3. Overwegen om hem óók de niet-gesynchroniseerde velden te laten noemen wanneer die verschillen, als waarschuwing in plaats van als fout. Dat maakt van de blinde vlek iets zichtbaars in plaats van iets afwezigs. **Herkomst** #1803. De regressietest daar leest bewust de wáárde na toepassing in plaats van op deze helper te leunen, met die reden erbij in het commentaar.
brenno 2026-08-27 21:21:21 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
LibreKAT/Ocideck#1811
No description provided.