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()