1() = evalfile ("inc.sl"); 2 3testing_feature ("Multiline strings"); 4private define break_string (str, rep) 5{ 6 (str, ) = strreplace (str, "\n", rep, strlen (str)); 7 return str; 8} 9 10define test_string (str) 11{ 12 variable ml = break_string (str, "\\n\\\n"); 13 ml = eval(`"` + ml + `";`); 14 if (str != ml) 15 { 16 failed ("%s --> %s", str, ml); 17 } 18 19 ml = break_string (str, "\n"); 20 ml = eval(```` + ml + ```;`); 21 if (str != ml) 22 { 23 failed ("%s --> %s", str, ml); 24 } 25} 26 27test_string ("1 This is\na multiline\nstring\n"); 28 29eval(` 30define test_string2 (str, ans) 31{ 32 if (str != ans) 33 { 34 failed ("str != ans, where str=%s, ans=%s", str, ans); 35 return; 36 } 37} 38`); 39test_string2 (`2 This is\na multiline\nstring\n`, 40 "2 This is\\na multiline\\nstring\\n"); 41test_string2 (`3 This is\\\na multiline\nstring\nX`Q, 42 "3 This is\\\na multiline\nstring\nX"); 43 44eval("\ 45define test_string3 (str, ans)\n\ 46{\n\ 47 if (str != ans)\n\ 48 {\n\ 49 failed (\"str != ans, where str=%S, ans=%S\", str, ans);\n\ 50 return;\n\ 51 }\n\ 52}\n\ 53"); 54test_string3 (`2 This is\na multiline\nstring\n`, 55 "2 This is\\na multiline\\nstring\\n"); 56test_string3 (`3 This is\\\na multiline\nstring\nX`Q, 57 "3 This is\\\na multiline\nstring\nX"); 58variable FOO = "multiline"; 59test_string3 (`4 This is\\\na ${FOO}\nstring\nX`Q$, 60 "4 This is\\\na multiline\nstring\nX"); 61test_string3 (`5 This is\na ${FOO} 62string\n`$, 63 "5 This is\\na multiline\nstring\\n"); 64 65test_string3 (`6 This is 66 a \0 binary 67 string\0`BQ, 68 "6 This is\n a \0 binary\n string\0"); 69 70print ("Ok\n"); 71 72exit (0); 73 74