struct Test { a bool b int y string } fn test_interpolation_map_to_string() { mut a := map[string]string{} a['1'] = 'one' a['2'] = 'two' a['3'] = 'three' assert '${a}' == "{'1': 'one', '2': 'two', '3': 'three'}" mut b := map[string]int{} b['1'] = 1 b['2'] = 2 b['3'] = 3 assert '${b}' == "{'1': 1, '2': 2, '3': 3}" mut c := map[string]bool{} c['1'] = true c['2'] = false assert '${c}' == "{'1': true, '2': false}" d := { 'f1': 1.1 'f2': 2.2 'f3': 3.3 'f4': 4.4 } println('d: ${d}') assert '${d}' == "{'f1': 1.1, 'f2': 2.2, 'f3': 3.3, 'f4': 4.4}" mut e := map[string]Test{} e['1'] = Test{true, 0, 'abc'} e['2'] = Test{true, 1, 'def'} e['3'] = Test{false, 2, 'ghi'} s := '${e}' assert s.contains("{'1': Test{") assert s.contains('a: true') assert s.contains("y: 'abc'") assert s.contains("}, '2': Test{") assert s.contains("y: 'def'") f := { 'hello': [1, 2, 3]! } assert '${f}' == "{'hello': [1, 2, 3]}" } fn test_interpolation_map_to_string_with_delete() { mut m1 := map[string]int{} m1['one'] = 1 m1['two'] = 2 m1.delete('two') println(m1) assert '${m1}' == "{'one': 1}" mut m2 := map[string]int{} m2['one'] = 1 m2['two'] = 2 m2.delete('one') println(m2) assert '${m2}' == "{'two': 2}" }