dowsing is a property-based test harness that feeds a large number of random operation sequences (over 1,000 mutations) generated using Haskell’s QuickCheck into a Node.js process to verify the correctness of state propagation and computation results in @watervein/core by comparing them with a reference model.
- Exact Match of Computation Results: In complex dependency graphs, the final state resulting from any sequence of operations must match the Haskell reference model.
- High-Load Tolerance: State management must not fail even during prolonged continuous write/flush operations.
- Absence of Infinite Loops: No stack overflows caused by pointer cycles.
- Performance Verification: Detects abnormal slowdowns in
flush()processing caused by unnecessary traversals or missed deallocations.
- Node.js (v18+)
- GHC / runghc (GHC 9.x Recommend)
- Haskell Packages:
QuickCheck,aeson,process
- Setting Up JS Dependencies:
pnpm install- Installing Haskell Dependencies (One-time only):
cabal update
cabal install --lib QuickCheck aeson process- Run test
runghc <test>/Spec.hsThis project is licensed under either of:
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.