String: fix evstr base case 26/15926/2
Paul Bignier [Tue, 10 Feb 2015 07:54:51 +0000 (08:54 +0100)]
 * evstr("") failed because YaSp fails to evaluate '[;]' (parser error)

Change-Id: Ie8c02571df5e80e9a46fd06bf0bc74dfcd495d4e

scilab/modules/string/macros/evstr.sci
scilab/modules/string/tests/unit_tests/evstr.dia.ref
scilab/modules/string/tests/unit_tests/evstr.tst

index fd40704..fdf8a23 100644 (file)
@@ -17,6 +17,11 @@ function [%val, %ierr] = evstr(%str)
 
     case 10 then
         // matrix of character strings
+        if isempty(%str) then
+            %val = [];
+            %ierr =  0;
+            return;
+        end
 
         // bug 7003
         if ~isdef("Nan") then
index 47abc6d..f78dece 100644 (file)
 // =============================================================================
 a = 1;
 b = 2;
-Z = ['a','b'];
+Z = ["a","b"];
 res = evstr(Z);
-if res(1) <> a then bugmes();quit;end
-if res(2) <> b then bugmes();quit;end
+assert_checkequal(res(1), a);
+assert_checkequal(res(2), b);
 // =============================================================================
 a = 1;
 b = 2;
-Z = list(['%(1)','%(1)-%(2)'], ['a+1','b+1']);
+Z = list(["%(1)","%(1)-%(2)"], ["a+1","b+1"]);
 res = evstr(Z);
-if or(res <> [2 -1]) then bugmes();quit;end
-// =============================================================================
-if isnan(evstr(%nan)) <> %t then bugmes();quit;end
-if isinf(evstr(%inf)) <> %t then bugmes();quit;end
-if isnan(evstr('%nan')) <> %t then bugmes();quit;end
-if isinf(evstr('%inf')) <> %t then bugmes();quit;end
-if isnan(evstr('Nan')) <> %t then bugmes();quit;end
-if isinf(evstr('Inf')) <> %t then bugmes();quit;end
-if isnan(evstr('NaN')) <> %t then bugmes();quit;end
-if isinf(evstr(-%inf)) <> %t then bugmes();quit;end
-if isinf(evstr('-%inf')) <> %t then bugmes();quit;end
-if isinf(evstr('-Inf')) <> %t then bugmes();quit;end
+assert_checkequal(res, [2 -1]);
+// =============================================================================
+assert_checktrue(isnan(evstr(%nan)));
+assert_checktrue(isinf(evstr(%inf)));
+assert_checktrue(isnan(evstr("%nan")));
+assert_checktrue(isinf(evstr("%inf")));
+assert_checktrue(isnan(evstr("Nan")));
+assert_checktrue(isinf(evstr("Inf")));
+assert_checktrue(isnan(evstr("NaN")));
+assert_checktrue(isinf(evstr(-%inf)));
+assert_checktrue(isinf(evstr("-%inf")));
+assert_checktrue(isinf(evstr("-Inf")));
 // =============================================================================
 Scilab_value = 3;
-if Scilab_value <> evstr('Scilab_value') then bugmes();quit;end
+assert_checkequal(Scilab_value, evstr("Scilab_value"));
 // =============================================================================
 clear toto;
-if execstr("evstr(''toto'')", "errcatch") == 0 then bugmes();quit;end
-if execstr("evstr(toto)", "errcatch") == 0 then bugmes();quit;end
+assert_checkfalse(execstr("evstr(''toto'')", "errcatch") == 0);
+assert_checkfalse(execstr("evstr(toto)", "errcatch") == 0);
 // =============================================================================
 s = rand(3,3,3);
-if execstr("evstr(s)", "errcatch") <> 0 then bugmes();quit;end
+assert_checkequal(execstr("evstr(s)", "errcatch"), 0);
 // =============================================================================
 function foo(), endfunction
-if execstr("evstr(''foo'')", "errcatch") <> 0 then bugmes();quit;end
+assert_checkequal(execstr("evstr(''foo'')", "errcatch"), 0);
+// =============================================================================
+assert_checkequal(evstr(""), []);
 // =============================================================================
index bdb241a..f78dece 100644 (file)
 // =============================================================================
 a = 1;
 b = 2;
-Z = ['a','b'];
+Z = ["a","b"];
 res = evstr(Z);
-if res(1) <> a then pause, end
-if res(2) <> b then pause, end
+assert_checkequal(res(1), a);
+assert_checkequal(res(2), b);
 // =============================================================================
 a = 1;
 b = 2;
-Z = list(['%(1)','%(1)-%(2)'], ['a+1','b+1']);
+Z = list(["%(1)","%(1)-%(2)"], ["a+1","b+1"]);
 res = evstr(Z);
-if or(res <> [2 -1]) then pause, end
-// =============================================================================
-if isnan(evstr(%nan)) <> %t then pause, end
-if isinf(evstr(%inf)) <> %t then pause, end
-if isnan(evstr('%nan')) <> %t then pause, end
-if isinf(evstr('%inf')) <> %t then pause, end
-if isnan(evstr('Nan')) <> %t then pause, end
-if isinf(evstr('Inf')) <> %t then pause, end
-if isnan(evstr('NaN')) <> %t then pause, end
-if isinf(evstr(-%inf)) <> %t then pause, end
-if isinf(evstr('-%inf')) <> %t then pause, end
-if isinf(evstr('-Inf')) <> %t then pause, end
+assert_checkequal(res, [2 -1]);
+// =============================================================================
+assert_checktrue(isnan(evstr(%nan)));
+assert_checktrue(isinf(evstr(%inf)));
+assert_checktrue(isnan(evstr("%nan")));
+assert_checktrue(isinf(evstr("%inf")));
+assert_checktrue(isnan(evstr("Nan")));
+assert_checktrue(isinf(evstr("Inf")));
+assert_checktrue(isnan(evstr("NaN")));
+assert_checktrue(isinf(evstr(-%inf)));
+assert_checktrue(isinf(evstr("-%inf")));
+assert_checktrue(isinf(evstr("-Inf")));
 // =============================================================================
 Scilab_value = 3;
-if Scilab_value <> evstr('Scilab_value') then pause, end
+assert_checkequal(Scilab_value, evstr("Scilab_value"));
 // =============================================================================
 clear toto;
-if execstr("evstr(''toto'')", "errcatch") == 0 then pause, end
-if execstr("evstr(toto)", "errcatch") == 0 then pause, end
+assert_checkfalse(execstr("evstr(''toto'')", "errcatch") == 0);
+assert_checkfalse(execstr("evstr(toto)", "errcatch") == 0);
 // =============================================================================
 s = rand(3,3,3);
-if execstr("evstr(s)", "errcatch") <> 0 then pause, end
+assert_checkequal(execstr("evstr(s)", "errcatch"), 0);
 // =============================================================================
 function foo(), endfunction
-if execstr("evstr(''foo'')", "errcatch") <> 0 then pause, end
+assert_checkequal(execstr("evstr(''foo'')", "errcatch"), 0);
+// =============================================================================
+assert_checkequal(evstr(""), []);
 // =============================================================================