diff options
Diffstat (limited to 'v_windows/v/old/vlib/v/tests/string_interpolation_array_test.v')
-rw-r--r-- | v_windows/v/old/vlib/v/tests/string_interpolation_array_test.v | 110 |
1 files changed, 110 insertions, 0 deletions
diff --git a/v_windows/v/old/vlib/v/tests/string_interpolation_array_test.v b/v_windows/v/old/vlib/v/tests/string_interpolation_array_test.v new file mode 100644 index 0000000..e6eb9ca --- /dev/null +++ b/v_windows/v/old/vlib/v/tests/string_interpolation_array_test.v @@ -0,0 +1,110 @@ +// This file tests whether v can generate default string methods for both: +// a) an array of custom structs, +// b) also for the custom struct itself (when the .str() for it is missing). +// +// NB: this is very simillar to string_interpolation_struct_test.v +// but they should NOT be merged into 1 file. If you merge it with +// string_interpolation_struct_test.v, which tests whether the compiler +// can generate the default method for a struct, then the b) case of +// this test will be done by *that* test, and so the testing will +// be incomplete. +struct Man { + name string + age int + interests []string +} + +fn test_array_of_structs_interpolation() { + people := [ + Man{'Superman', 30, ['flying', 'fighting evil', 'being nice']}, + Man{'Bilbo Baggins', 111, ['exploring', 'hiding']}, + ] + s := '$people' // the compiler should generate code for both a) and b) + assert s.contains('Man{') + assert s.contains("name: 'Superman'") + assert s.contains('age: 30') + assert s.contains("'being nice'") + assert s.contains('}, Man{') + assert s.contains("name: 'Bilbo Baggins'") + assert s.contains('age: 111') + assert s.contains("interests: ['exploring', 'hiding']") + assert s.contains('}]') + // println(s) +} + +fn test_array_of_floats_interpolation() { + // f64 array + aa := [1.2, 3.4, 5.67] + assert '$aa' == '[1.2, 3.4, 5.67]' + // f32 array + bb := [f32(1.2), 3.4, 5.67] + assert '$bb' == '[1.2, 3.4, 5.67]' +} + +fn test_array_of_bools_interpolation() { + aa := [true, false, true] + assert '$aa' == '[true, false, true]' +} + +fn test_array_of_ints_interpolation() { + // int + a1 := [11, 22, 33] + assert '$a1' == '[11, 22, 33]' + // u32 + a2 := [u32(11), 22, 33] + assert '$a2' == '[11, 22, 33]' + // i16 + b1 := [i16(11), 22, 33] + assert '$b1' == '[11, 22, 33]' + // u16 + b2 := [u16(11), 22, 33] + assert '$b2' == '[11, 22, 33]' + // i64 + c1 := [i64(11), 22, 33] + assert '$c1' == '[11, 22, 33]' + // u64 + c2 := [u64(11), 22, 33] + assert '$c2' == '[11, 22, 33]' +} + +fn test_array_of_runes_interpolation() { + aa := [`a`, `b`, `c`] + assert '$aa' == '[`a`, `b`, `c`]' +} + +fn test_array_of_strings_interpolation() { + aa := ['aa', 'bb', 'cc'] + assert '$aa' == "['aa', 'bb', 'cc']" +} + +fn test_array_of_map_interpolation() { + mut a := []map[string]int{} + a << map{ + 'a': int(1) + 'b': 2 + } + a << map{ + 'c': int(3) + 'd': 4 + } + assert '$a' == "[{'a': 1, 'b': 2}, {'c': 3, 'd': 4}]" +} + +fn test_array_initialization_with_interpolation() { + sysroot := '/usr' + a := [ + 'abcd', + '$sysroot/xyz', + 'u$sysroot/vw', + '/rr$sysroot', + 'lmno', + ] + assert '$a' == "['abcd', '/usr/xyz', 'u/usr/vw', '/rr/usr', 'lmno']" + b := [ + 'a${sysroot:5}/r', + 'ert', + ] + assert '$b' == "['a /usr/r', 'ert']" + c := ['xy', 'r$sysroot', '$sysroot/t', '>$sysroot<'] + assert '$c' == "['xy', 'r/usr', '/usr/t', '>/usr<']" +} |