test(golden): language-neutral fixtures + per-binding parity runners (#255)
**Task 5 — golden-fixture parity for the C-ABI bindings.** Lifts the C#/Go/Java/R tests from *one indicator per archetype* toward reference-value parity, catching FFI wiring bugs (swapped params, wrong multi-output field) the math-only core tests cannot see. ## What's here - **`examples/rust/src/bin/gen_golden.rs`** + **`testdata/golden/*.csv`** — a Rust generator computing a deterministic OHLCV series plus the core's reference outputs for a curated archetype-spanning set: scalar (`Sma`/`Ema`/`Rsi`), candle (`Atr`), scalar multi-output (`MACD`), candle multi-output (`ADX`), pairwise (`Beta`). `nan` marks warmup. Regenerate with `cargo run -p wickra-examples --bin gen_golden`. - **Parity runners** replaying the identical fixtures through each FFI (rel-tol 1e-6), each a standard test in the binding's existing suite (no `ci.yml` change — rides `dotnet test` / `go test` / `mvn install` / `R CMD`+testthat). A walk-up search locates `testdata/golden` regardless of run dir. - **C#** (`bindings/csharp/.../GoldenTests.cs`) — ✅ validated locally, 7/7 pass. - **Go** (`bindings/go/golden_test.go`) — ✅ validated locally, pass. - **Java** (`bindings/java/.../GoldenTests.java`) — modeled on the archetype API; validated by CI (no local mvn). - **R** (`bindings/r/tests/testthat/test-golden.R`) — modeled on the archetype API; validated by CI (no local Rscript). ## Notes - The curated set spans every marshalling archetype; extending the indicator list is mechanical (add to the generator + regenerate). Bars/profile archetypes can be added next. - No new CI jobs.
This commit is contained in:
Vendored
+81
@@ -0,0 +1,81 @@
|
||||
ema
|
||||
nan
|
||||
nan
|
||||
nan
|
||||
nan
|
||||
nan
|
||||
nan
|
||||
nan
|
||||
nan
|
||||
nan
|
||||
nan
|
||||
nan
|
||||
nan
|
||||
nan
|
||||
107.082865308575
|
||||
105.90971557088022
|
||||
104.81838000454273
|
||||
103.91437652548925
|
||||
103.29137341232037
|
||||
103.02217097393634
|
||||
103.15163412061464
|
||||
103.6921955736008
|
||||
104.62232136443316
|
||||
105.88806700052659
|
||||
107.40757775297398
|
||||
109.07812453770966
|
||||
110.78504123504803
|
||||
112.4117601975411
|
||||
113.85004525232907
|
||||
115.00950442946956
|
||||
115.8255294789832
|
||||
116.26495019544112
|
||||
116.32889606739172
|
||||
116.05260755010886
|
||||
115.50221201839392
|
||||
114.76875083248335
|
||||
113.95998970819002
|
||||
113.19074277367604
|
||||
112.57257361958058
|
||||
112.2037924360836
|
||||
112.16064199938042
|
||||
112.49045917546245
|
||||
113.20742223024638
|
||||
114.29126332917505
|
||||
115.68906080413531
|
||||
117.3199507165269
|
||||
119.08233652305883
|
||||
120.86295254590979
|
||||
122.54697139145239
|
||||
124.02825224132444
|
||||
125.2188143840051
|
||||
126.05668958634725
|
||||
126.51145173900844
|
||||
126.58692971020658
|
||||
126.32086097368011
|
||||
125.78151686199148
|
||||
125.06160082390045
|
||||
124.26996466927172
|
||||
123.5218827065933
|
||||
122.92875250508669
|
||||
122.58814223802023
|
||||
122.57507361058863
|
||||
122.93531900967452
|
||||
123.68131159273575
|
||||
124.79103363078006
|
||||
126.20998238510259
|
||||
127.85603789338172
|
||||
129.62679782427364
|
||||
131.408724185901
|
||||
133.0872848279711
|
||||
134.5571838169111
|
||||
135.7317668260377
|
||||
136.550761377433
|
||||
136.98566051598186
|
||||
137.04226900211742
|
||||
136.7601845743594
|
||||
136.20926061449748
|
||||
135.48336619117217
|
||||
134.6920008752563
|
||||
133.95051334772793
|
||||
133.369797540168
|
||||
|
Reference in New Issue
Block a user