code wiki / (root) / nx_gatherer_test.nx

nx_gatherer_test.nx source

↩ module page · 63 lines · 2762 B

1// nx_gatherer_test.nx -- smoke for nx_gatherer. 2 3import "nx_syscalls.nx" 4import "nx_gatherer.nx" 5 6func main() -> i64 { 7 // 1: enums sealed 8 if NX_GFK_N_KINDS != 5 { return 1 } 9 if NX_GYK_N_KINDS != 4 { return 2 } 10 if nx_gfk_is_valid(NX_GFK_PRIMITIVE) != 1 { return 3 } 11 if nx_gfk_is_valid(5) != 0 { return 4 } 12 if nx_gyk_is_valid(NX_GYK_MS_SAVED) != 1 { return 5 } 13 if nx_gyk_is_valid(4) != 0 { return 6 } 14 15 // 2: construction 16 let g: *NxGatherer = nx_gatherer_new(8) 17 if g.capacity != 8 { return 7 } 18 if g.count != 0 { return 8 } 19 if nx_gatherer_session_emitted(g) != 0 { return 9 } 20 21 // 3: sow 3 fields 22 if nx_gatherer_sow(g, 10, NX_GFK_PRIMITIVE, 0xa1, 1000) != 0 { return 10 } 23 if nx_gatherer_sow(g, 20, NX_GFK_SMOKE, 0xb2, 1100) != 1 { return 11 } 24 if nx_gatherer_sow(g, 30, NX_GFK_METRIC, 0xc3, 1200) != 2 { return 12 } 25 if g.count != 3 { return 13 } 26 if nx_gatherer_session_emitted(g) != 1 { return 14 } 27 28 // 4: duplicate / bad-kind refused 29 if nx_gatherer_sow(g, 10, NX_GFK_PRIMITIVE, 0, 1300) != -1 { return 15 } 30 if nx_gatherer_sow(g, 40, 99, 0, 1300) != -1 { return 16 } 31 32 // 5: harvest yields -- 200ms saved on field 10 33 if nx_gatherer_harvest(g, 10, NX_GYK_MS_SAVED, 200, 2000) != NX_GATHERER_OK { return 17 } 34 // additional 100ms saved on same field (compounds) 35 if nx_gatherer_harvest(g, 10, NX_GYK_MS_SAVED, 100, 2100) != NX_GATHERER_OK { return 18 } 36 if nx_gatherer_total_ms_saved(g) != 300 { return 19 } 37 38 // 6: bytes_shaved on field 20 39 if nx_gatherer_harvest(g, 20, NX_GYK_BYTES_SHAVED, 4096, 2200) != NX_GATHERER_OK { return 20 } 40 if nx_gatherer_total_bytes_shaved(g) != 4096 { return 21 } 41 42 // 7: false_positive_eliminated on field 30 43 if nx_gatherer_harvest(g, 30, NX_GYK_FALSE_POSITIVE_ELIMINATED, 5, 2300) != NX_GATHERER_OK { return 22 } 44 if nx_gatherer_total_fp_eliminated(g) != 5 { return 23 } 45 46 // 8: coverage_axis_+1 on field 10 47 if nx_gatherer_harvest(g, 10, NX_GYK_COVERAGE_AXIS_PLUS_ONE, 1, 2400) != NX_GATHERER_OK { return 24 } 48 if nx_gatherer_harvest(g, 20, NX_GYK_COVERAGE_AXIS_PLUS_ONE, 2, 2500) != NX_GATHERER_OK { return 25 } 49 if nx_gatherer_total_coverage_delta(g) != 3 { return 26 } 50 51 // 9: bad yield kind rejected 52 if nx_gatherer_harvest(g, 10, 99, 100, 2600) != NX_GATHERER_ERR_BAD_KIND { return 27 } 53 54 // 10: harvest unknown field rejected 55 if nx_gatherer_harvest(g, 9999, NX_GYK_MS_SAVED, 50, 2700) != NX_GATHERER_ERR_NOT_FOUND { return 28 } 56 57 // 11: count_by_kind 58 if nx_gatherer_count_by_kind(g, NX_GFK_PRIMITIVE) != 1 { return 29 } 59 if nx_gatherer_count_by_kind(g, NX_GFK_SMOKE) != 1 { return 30 } 60 if nx_gatherer_count_by_kind(g, NX_GFK_COMPOST) != 0 { return 31 } 61 62 return 0 63}