fix xlfont to correctly manage 3rd parameter when it is called with 4 inputs 98/21698/2
Antoine ELIAS [Thu, 4 Feb 2021 23:03:12 +0000 (00:03 +0100)]
Change-Id: Ieb0f522dd354001dd434984cbe157cac2810ad54

scilab/CHANGES.md
scilab/modules/graphics/sci_gateway/c/sci_xlfont.c
scilab/modules/graphics/tests/unit_tests/xlfont.tst

index 5fdac88..11da378 100644 (file)
@@ -203,6 +203,7 @@ Feature changes and additions
 * `interp1` is upgraded:
   - complex numbers `y` now supported: the real and imaginary parts are interpolated separately.
   - extrapolation option extended: `edgevalue` mode added for all interpolations; `periodic` mode added for linear and spline interpolations. `linear` mode added for the spline interpolations.
+* `xlfont` did not support the documented 4th argument.
 
 Help pages:
 -----------
index 16f970e..95809cd 100644 (file)
@@ -203,7 +203,7 @@ static int xlfont_n_rhs(char * fname, void* pvApiCtx)
     BOOL isBold = FALSE;
     BOOL isItalic = FALSE;
 
-    if (nbInputArgument(pvApiCtx) == 3)
+    if (nbInputArgument(pvApiCtx) >= 3)
     {
         int m3 = 0, n3 = 0;
         int* piAddrl3 = NULL;
@@ -240,7 +240,7 @@ static int xlfont_n_rhs(char * fname, void* pvApiCtx)
         int* l4 = NULL;
         if ((!checkInputArgumentType(pvApiCtx, 4, sci_boolean)))
         {
-            Scierror(999, _("%s: Wrong type for input argument #%d: A boolean expected.\n"), fname, 3);
+            Scierror(999, _("%s: Wrong type for input argument #%d: A boolean expected.\n"), fname, 4);
             return 0;
         }
         sciErr = getVarAddressFromPosition(pvApiCtx, 4, &piAddrl4);
index 5121ee8..ac94304 100644 (file)
@@ -5,15 +5,17 @@
 //  This file is distributed under the same license as the Scilab package.
 // =============================================================================
 
-
 // <-- TEST WITH GRAPHIC -->
+// <-- NO CHECK REF -->
+
 
 xlfont('reset')
 initialfonts = xlfont();
-if size(initialfonts,'*') <> 11 then pause,end
+assert_checkequal(size(initialfonts,'*'), 11);
 
 availablefonts = xlfont('AVAILABLE_FONTS');
-if size(availablefonts,'*') < 11 then pause,end
+assert_checktrue(size(availablefonts,'*') >= 11);
+
 
 for i=1:11:1
   xlfont(availablefonts(i),i);
@@ -30,7 +32,7 @@ end
 xlfont('reset');
 
 afterresetfonts = xlfont();
-if ~and(initialfonts == afterresetfonts) then pause,end
+assert_checkequal(initialfonts, afterresetfonts);
 
 cd(TMPDIR);
 
@@ -52,9 +54,23 @@ for i = 1 : size(tab_ref,'*')
   fonttemp = pathtemp + filesep() + fontname;
   copyfile(fontfull, fonttemp);
   ierr = execstr('r = xlfont(fonttemp);','errcatch');
-  if ierr <> 0 then pause, end
-  if ~isdef('r') then pause, end
+  assert_checkequal(ierr, 0);
+  assert_checktrue(isdef('r'));
   clear r;
 end
 
 xlfont('reset')
+
+xlfont("Verdana", size(xlfont(), "*"), %f, %f);
+assert_checkequal(xlfont()($), "Verdana");
+
+xlfont("Verdana", size(xlfont(), "*"), %f, %t);
+assert_checkequal(xlfont()($), "Verdana Italic");
+
+xlfont("Verdana", size(xlfont(), "*"), %t, %f);
+assert_checkequal(xlfont()($), "Verdana Bold");
+
+xlfont("Verdana", size(xlfont(), "*"), %t, %t);
+assert_checkequal(xlfont()($), "Verdana Bold Italic");
+
+xlfont('reset')