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)