X-Git-Url: http://gitweb.scilab.org/?p=scilab.git;a=blobdiff_plain;f=scilab%2Fmodules%2Fstring%2Ftests%2Funit_tests%2Fevstr.tst;h=e360049994c2b904e2324879615eb87bee4bb798;hp=f78dece751dbd42081506c14adf30b3095f1a740;hb=efdcc0cb5839d733b04d5dfaa303b59428c22c4c;hpb=feaeeee07543a3b2f295a876ac9f03321cdf3cbc diff --git a/scilab/modules/string/tests/unit_tests/evstr.tst b/scilab/modules/string/tests/unit_tests/evstr.tst index f78dece..e360049 100644 --- a/scilab/modules/string/tests/unit_tests/evstr.tst +++ b/scilab/modules/string/tests/unit_tests/evstr.tst @@ -1,11 +1,13 @@ // ============================================================================= // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab // Copyright (C) 2010 - DIGITEO - Allan CORNET +// Copyright (C) 2017 - Samuel GOUGEON // // This file is distributed under the same license as the Scilab package. // ============================================================================= // // <-- CLI SHELL MODE --> +// <-- NO CHECK REF --> // // ============================================================================= // unit tests evstr @@ -49,3 +51,72 @@ assert_checkequal(execstr("evstr(''foo'')", "errcatch"), 0); // ============================================================================= assert_checkequal(evstr(""), []); // ============================================================================= +// With some concatenations: +assert_checkequal(evstr("1 2 3"), 1:3); +assert_checkequal(evstr(["1 2" "3" "4 5"]), 1:5); +assert_checkequal(evstr("1 ; 2 ; 3"), [1;2;3]); +assert_checkequal(evstr(["1;2" ; "3" ; "4;5"]), (1:5)'); + +assert_checkequal(evstr(["1 2" ; "3 4"]), [1 2 ; 3 4]); +assert_checkequal(evstr(["1;2" "3;4"]), [1 3 ; 2 4]); + +// ============================================================================= +// With some comments or "//" substrings +// Scalar expression +assert_checkequal(evstr("// test"), []); +assert_checkequal(evstr("1 // test"), 1); +assert_checkequal(evstr("1 2 // test"), [1 2]); +assert_checkequal(evstr("[1 2] // test"), [1 2]); +assert_checkequal(evstr("1 ; 2 // test"), [1 ; 2]); +assert_checkequal(evstr("[1;2] // test"), [1 ; 2]); +assert_checkequal(evstr("""//"" // A''b"), "//"); +assert_checkequal(evstr(" ""//"" // A''b"), "//"); +assert_checkequal(evstr(" "" //"" // A''b // c""d "), " //"); + +// Column of expressions: +assert_checkequal(evstr(["// test" ; "// test line 2"]), []); +assert_checkequal(evstr(["1 2"; "// test" ; "3 4"]), [1 2; 3 4]); +assert_checkequal(evstr(["1 // abc"; "// no result" ; "3 // def"]), [1 ; 3]); +assert_checkequal(evstr(["1 // abc"; " // no result" ; "3 // def"]), [1 ; 3]); +assert_checkequal(evstr(["1 // abc"; "[] // no result" ; "3 // def"]), [1 ; 3]); +res = ["abc"; "http://a.b" ; "def"]; +assert_checkequal(evstr(["""abc"""; """http://a.b""" ; """def"""]), res); +assert_checkequal(evstr(["""abc"""; """http://a.b"" // test" ; """def"""]), res); +assert_checkequal(evstr(["""abc"""; """http://a.b""// test" ; """def"""]), res); +assert_checkequal(evstr(["""abc"""; "''http://a.b'' // test" ; """def"""]), res); + +res = ["abc"; "//a.b" ; "def"]; +assert_checkequal(evstr(["""abc"""; """//a.b""" ; """def"""]), res); +assert_checkequal(evstr(["""abc"" // test"; """//a.b""" ; """def"""]), res); +assert_checkequal(evstr(["""abc // test"""]), "abc // test"); +assert_checkequal(evstr(["""abc // test"" // comment"]), "abc // test"); + +// Row of expressions: +assert_checkequal(evstr(["// test", "// test line 2"]), []); +assert_checkequal(evstr(["1 2", "// test", "3 4"]), [1 2 3 4]); +assert_checkequal(evstr(["1 // abc", "// no result", "3 // def"]), [1 3]); +assert_checkequal(evstr(["1 // abc", " // no result", "3 // def"]), [1 3]); +assert_checkequal(evstr(["1 // abc", "[] // no result", "3 // def"]), [1 3]); + +ab = """ab"""; +ht = """http://a.b"""; +res = ["ab", "http://a.b", "ab // cd"]; +assert_checkequal(evstr([ab, ht, """ab // cd"""]), res); +assert_checkequal(evstr([ab, ht+" // test", "''ab // cd''"]), res); +assert_checkequal(evstr([ab, ht+"// test", """ab // cd"""]), res); +assert_checkequal(evstr([ab, "''http://a.b'' // test", "''ab // cd''"]), res); +assert_checkequal(evstr(["// ab", """3"" // http://a.b", """ab // cd"""]), ["3" "ab // cd"]); +assert_checkequal(evstr(["// ab", """3"" ""//"" ""http://a.b""", """ab // cd"""]), .. + ["3" "//" "http://a.b" "ab // cd"]); +assert_checkequal(evstr([ab, ht, """ab // cd"""]), res); + +// Matrix of expressions: +assert_checkequal(evstr(["1;2 // A", "3;4 // B //"]), [1 3 ; 2 4]); +assert_checkequal(evstr(["1 2 // A"; "3 4 // B //"]), [1 2 ; 3 4]); +assert_checkequal(evstr(["1;2 // A", "3;4 // B //"; "5// C" "6// D"]), [1 3 ; 2 4 ; 5 6]); +assert_checkequal(evstr(["1 // un", "2 // deux"; "3 // trois", "4 // quatre"]), [1 2 ; 3 4]); + +// Can't be easily fixed (but very permissive): +in = [" ""a""; ""b"" // A''b", " ""c""; ""d"" // E''F"]; +assert_checkfalse(evstr(in)==["a" "c";"b" "d"]); +assert_checkequal(evstr(in), ["a" ; "b"]);