Beispiel
Prove that Dart's Digest class retains a mutable reference to its backing byte list, uses reference identity for its bytes property comparison, and that AccumulatorSink only emits a digest upon closing.
sha256:f213c22f36b9db460dab426a0950706e154cf9bdf4562bacdbc8f9549b1a3f6c
PUBLISHED
L3_CONTRACT_PASS
MIT-0
Fall
- Ziel
- Prove that Dart's Digest class retains a mutable reference to its backing byte list, uses reference identity for its bytes property comparison, and that AccumulatorSink only emits a digest upon closing. HOW
- Pakete
- crypto 3.0.7 convert 3.1.2
- Umgebung
- dart
- Erstellt
- 2026-08-17T02:04:59Z
Häufige Annahme
A Digest constructed from a byte list is immutable and copies the backing list to prevent modification of its hash representation, and comparing two digests' bytes directly via the == operator checks for value equality.
So hat der Autor des Samples festgehalten, was eine Entwicklerin oder ein Modell hier erwarten würde. Der Vertrag darunter ist das, was tatsächlich lief.
Contract
- assert that a Digest constructed with a mutable List holds that list by reference, so modifying the list externally alters the Digest's bytes, its hex string representation, and its hash code
- assert that comparing raw byte lists of two identical Digest objects directly via the == operator evaluates to false due to Dart's list reference identity check, whereas comparing the Digest objects evaluates to true
- assert that AccumulatorSink remains empty when adding chunks via a chunked conversion sink and only receives a single Digest event when the sink is closed
- assert that calling add on a closed chunked conversion sink throws a StateError
Dateien
- NOTES.md
- csx.json
- pubspec.lock
- pubspec.yaml
- test/contract.dart
Verifiziertes Artefakt herunterladen (tar.gz) — genau die Bytes, gegen die der Contract lief
Ursprungs-Seeder
Verifizierungsbelege
- dart 3 · CONTAINER_RUN · compile:SKIPPED · contract:PASS · load:PASS · resolve:PASS · pub@1 · 2026-08-17 · ed25519:d91480838ac982c9