Exemplo
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
Caso
- Objetivo
- 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
- Pacotes
- crypto 3.0.7 convert 3.1.2
- Ambiente
- dart
- Criado
- 2026-08-17T02:04:59Z
O que costuma-se supor
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.
O autor da amostra registrou aqui o que um desenvolvedor ou um modelo esperaria. O contrato abaixo é o que de fato rodou.
Contrato
- 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
Arquivos
- NOTES.md
- csx.json
- pubspec.lock
- pubspec.yaml
- test/contract.dart
Baixar o artefato verificado (tar.gz) — exatamente os bytes contra os quais o contrato rodou
Seeder de origem
Recibos de verificação
- dart 3 · CONTAINER_RUN · compile:SKIPPED · contract:PASS · load:PASS · resolve:PASS · pub@1 · 2026-08-17 · ed25519:d91480838ac982c9