github.com/NeowayLabs/nash@v0.2.2-0.20200127205349-a227041ffd50/stdlib/map_test.sh (about)

     1  import map
     2  
     3  fn expect(map, key, want) {
     4          var got <= map_get($map, $key)
     5          if $got != $want {
     6                  echo "error: got["+$got+"] want["+$want+"]"
     7                  exit("1")
     8          }
     9  }
    10  
    11  fn test_adding_keys() {
    12          var map <= map_new()
    13  
    14          map <= map_add($map, "key", "value")
    15          expect($map, "key", "value")
    16  
    17          map <= map_add($map, "key2", "value2")
    18          expect($map, "key2", "value2")
    19  
    20          map <= map_add($map, "key", "override")
    21          expect($map, "key", "override")
    22  }
    23  
    24  fn test_absent_key_will_have_empty_string_value() {
    25          var map <= map_new()
    26          expect($map, "absent", "")
    27  }
    28  
    29  fn test_absent_key_with_custom_default_value() {
    30          var map <= map_new()
    31          var want = "hi"
    32          var got <= map_get_default($map, "absent", $want)
    33          if $got != $want {
    34                  echo "error: got["+$got+"] want["+$want+"]"
    35                  exit("1")
    36          }
    37  }
    38  
    39  fn test_iterates_map() {
    40          var map <= map_new()
    41          map <= map_add($map, "key", "value")
    42          map <= map_add($map, "key2", "value2")
    43  
    44          var got <= map_new()
    45  
    46  	fn iter(key, val) {
    47  		got <= map_add($got, $key, $val)
    48  	}
    49  
    50          map_iter($map, $iter)
    51  
    52          expect($map, "key", "value")
    53          expect($map, "key2", "value2")
    54  }
    55  
    56  fn test_removing_key() {
    57          var map <= map_new()
    58  
    59          map <= map_add($map, "key", "value")
    60          map <= map_add($map, "key2", "value2")
    61  
    62          expect($map, "key", "value")
    63          expect($map, "key2", "value2")
    64  
    65          map <= map_del($map, "key")
    66          expect($map, "key", "")
    67          expect($map, "key2", "value2")
    68  }
    69  
    70  fn test_removing_absent_key() {
    71          var map <= map_new()
    72  
    73          expect($map, "key", "")
    74          map <= map_del($map, "key")
    75          expect($map, "key", "")
    76  }
    77  
    78  test_adding_keys()
    79  test_absent_key_will_have_empty_string_value()
    80  test_absent_key_with_custom_default_value()
    81  test_iterates_map()
    82  test_removing_key()
    83  test_removing_absent_key()