code wiki / (root) / nx_microbiome_test.nx

nx_microbiome_test.nx source

↩ module page · 78 lines · 2874 B

1// nx_microbiome_test.nx -- smoke for nx_microbiome. 2 3import "nx_syscalls.nx" 4import "nx_budget.nx" 5import "nx_attention_class.nx" 6import "nx_methyl.nx" 7import "nx_cell.nx" 8import "nx_microbiome.nx" 9 10func main() -> i64 { 11 let sig: *u8 = (sys_mmap(96)) as *u8 12 sig[0] = 1 as u8 13 let mark: *NxMethylMark = nx_methyl_new(7, 0xcafe, 1000, sig, 96) 14 let b: *NxBudget = nx_budget_new(7, 1000, 0, 0, 0, 0) 15 16 if NX_MB_N_HEALTHS != 3 { return 1 } 17 if nx_mb_health_is_valid(NX_MB_HEALTHY) != 1 { return 2 } 18 if nx_mb_health_is_valid(3) != 0 { return 3 } 19 20 let mb: *NxMicrobiome = nx_microbiome_new(16) 21 if mb.count != 0 { return 4 } 22 if nx_microbiome_health(mb) != NX_MB_COLLAPSED { return 5 } 23 24 // Sterile colony stays COLLAPSED 25 let c1: *NxCell = nx_cell_new(100, NX_AC_INTERACTIVE_FOREGROUND_GAME, 26 500, mark, b, 1000) 27 nx_microbiome_add(mb, c1, 1000) 28 if mb.count != 1 { return 6 } 29 if nx_microbiome_kind_diversity(mb) != 1 { return 7 } 30 if nx_microbiome_health(mb) != NX_MB_STRESSED { return 8 } 31 32 // Duplicate cell rejected 33 if nx_microbiome_add(mb, c1, 1100) != NX_MB_ERR_DUPLICATE { return 9 } 34 35 // Add 3 more cells of DIFFERENT attention classes 36 let c2: *NxCell = nx_cell_new(101, NX_AC_BACKGROUND_INFERENCE, 37 500, mark, b, 1100) 38 let c3: *NxCell = nx_cell_new(102, NX_AC_BACKGROUND_BUILD, 39 500, mark, b, 1200) 40 let c4: *NxCell = nx_cell_new(103, NX_AC_IDLE_OPPORTUNISTIC, 41 500, mark, b, 1300) 42 nx_microbiome_add(mb, c2, 1100) 43 nx_microbiome_add(mb, c3, 1200) 44 nx_microbiome_add(mb, c4, 1300) 45 if mb.count != 4 { return 10 } 46 if nx_microbiome_kind_diversity(mb) != 4 { return 11 } 47 if nx_microbiome_health(mb) != NX_MB_HEALTHY { return 12 } 48 49 // Same kind doesn't add diversity 50 let c5: *NxCell = nx_cell_new(104, NX_AC_INTERACTIVE_FOREGROUND_GAME, 51 500, mark, b, 1400) 52 nx_microbiome_add(mb, c5, 1400) 53 if nx_microbiome_kind_diversity(mb) != 4 { return 13 } 54 if nx_microbiome_count_by_kind(mb, NX_AC_INTERACTIVE_FOREGROUND_GAME) != 2 { return 14 } 55 56 // Contains check 57 if nx_microbiome_contains(mb, 100) != 1 { return 15 } 58 if nx_microbiome_contains(mb, 9999) != 0 { return 16 } 59 60 // Remove cell -> diversity may drop 61 nx_microbiome_remove(mb, 104) 62 nx_microbiome_remove(mb, 100) 63 // After both removals: c2/c3/c4 remain = 3 distinct kinds 64 if nx_microbiome_kind_diversity(mb) != 3 { return 17 } 65 if nx_microbiome_health(mb) != NX_MB_STRESSED { return 18 } 66 67 // Drain to sterile 68 nx_microbiome_remove(mb, 101) 69 nx_microbiome_remove(mb, 102) 70 nx_microbiome_remove(mb, 103) 71 if mb.count != 0 { return 19 } 72 if nx_microbiome_health(mb) != NX_MB_COLLAPSED { return 20 } 73 74 // Remove non-existent rejected 75 if nx_microbiome_remove(mb, 9999) != NX_MB_ERR_NOT_FOUND { return 21 } 76 77 return 0 78}