src.elv.sh@v0.21.0-dev.0.20240515223629-06979efb9a2a/pkg/edit/binding_map_test.elvts (about) 1 //each:binding-map-in-global 2 3 /////////////// 4 # binding-map # 5 /////////////// 6 7 ## checking key and value when constructing ## 8 ~> binding-map [&[]={ }] 9 Exception: must be key or string 10 [tty]:1:1-21: binding-map [&[]={ }] 11 ~> binding-map [&foo={ }] 12 Exception: bad key: foo 13 [tty]:1:1-22: binding-map [&foo={ }] 14 ~> binding-map [&a=string] 15 Exception: value should be function 16 [tty]:1:1-23: binding-map [&a=string] 17 18 ## repr ## 19 // prints like an ordinary map 20 ~> repr (binding-map [&]) 21 [&] 22 // keys are always sorted 23 ~> repr (binding-map [&a=$nop~ &b=$nop~ &c=$nop~]) 24 [&a=<builtin nop> &b=<builtin nop> &c=<builtin nop>] 25 26 ## indexing ## 27 ~> eq $nop~ (binding-map [&a=$nop~])[a] 28 ▶ $true 29 // checking key 30 ~> put (binding-map [&a=$nop~])[foo] 31 Exception: bad key: foo 32 [tty]:1:5-33: put (binding-map [&a=$nop~])[foo] 33 34 ## assoc ## 35 ~> count (assoc (binding-map [&a=$nop~]) b $nop~) 36 ▶ (num 2) 37 // checking key 38 ~> (assoc (binding-map [&a=$nop~]) foo $nop~) 39 Exception: bad key: foo 40 [tty]:1:2-41: (assoc (binding-map [&a=$nop~]) foo $nop~) 41 // checking value 42 ~> (assoc (binding-map [&a=$nop~]) b foo) 43 Exception: value should be function 44 [tty]:1:2-37: (assoc (binding-map [&a=$nop~]) b foo) 45 46 ## dissoc ## 47 ~> count (dissoc (binding-map [&a=$nop~]) a) 48 ▶ (num 0) 49 // allows bad key - no op 50 ~> count (dissoc (binding-map [&a=$nop~]) foo) 51 ▶ (num 1)