Improve the modulo unitary tests wrt Samuel modifications
[scilab.git] / scilab / modules / elementary_functions / tests / unit_tests / modulo.dia.ref
index 1957054..521c077 100644 (file)
@@ -8,10 +8,10 @@
 // unit tests for modulo() function
 // =============================================================================
 assert_checkerror("modulo()", msprintf(_("%s: Wrong number of input argument(s): %d expected.\n"),"modulo", 2));
-assert_checkerror("modulo(''a'',1)", msprintf(_("%s: Wrong type for input argument #%d: A real expected.\n"), "modulo", 1));
-assert_checkerror("modulo(1,''a'')", msprintf(_("%s: Wrong type for input argument #%d: A real expected.\n"), "modulo", 2));
-assert_checkerror("modulo(%pi+%i,1)", msprintf(_("%s: Wrong type for input argument #%d: A real expected.\n"), "modulo", 1));
-assert_checkerror("modulo(1,1+%i)", msprintf(_("%s: Wrong type for input argument #%d: A real expected.\n"), "modulo", 2));
+assert_checkerror("modulo(''a'',1)", msprintf(_("%s: Wrong type for input argument #%d: Reals, encoded integers or polynomials expected.\n"), "modulo", 1));
+assert_checkerror("modulo(1,''a'')", msprintf(_("%s: Wrong type for input argument #%d: Reals, encoded integers or polynomials expected.\n"), "modulo", 2));
+assert_checkerror("modulo(%pi+%i,1)", msprintf(_("%s: Wrong type for input argument #%d: Reals, encoded integers or polynomials expected.\n"), "modulo", 1));
+assert_checkerror("modulo(1,1+%i)", msprintf(_("%s: Wrong type for input argument #%d: Reals, encoded integers or polynomials expected.\n"), "modulo", 2));
 n=[1,2,10,15];
 m=[2,2,3,5];
 r = modulo(n,m);
@@ -22,3 +22,45 @@ r = modulo(n,m);
 computed_r = n - m .* int (n ./ m);
 assert_checkequal(r, computed_r);
 assert_checkequal(modulo(%z^2,%z),0);
+// Encoded integers
+assert_checkequal(modulo( int8(-123), int16(-7)), int8(-4));
+assert_checkequal(pmodulo(int8(-123), int16(-7)), int8(3));
+assert_checkequal(modulo( int8(-123), int16([-7 5])),int8([-4,-3]));
+assert_checkequal(pmodulo(int8(-123), int16([-7 5])),int8([3,2]));
+assert_checkequal(modulo( int8([-123 51]), int16(-7)),  int8([-4,2]));
+assert_checkequal(pmodulo(int8([-123 51]), int16(-7)),int8([3,2]));
+assert_checkequal(modulo( int8([-123 51]), int16([-7 5])),int8([-4,1]) );
+assert_checkequal(pmodulo(int8([-123 51]), int16([-7 5])),  int8([3,1]));
+// Hypermatrices
+m = hypermat([2 2 2],1:8);
+n = hypermat([2 2 2],-9:-2)
+ n  =
+(:,:,1)
+  - 9.  - 7.  
+  - 8.  - 6.  
+(:,:,2)
+  - 5.  - 3.  
+  - 4.  - 2.  
+a=[1 3;2 4];a(:,:,2)=[0 2; 1 3];
+assert_checkequal(modulo(m, 5), a );
+assert_checkequal(pmodulo(m,5), a);
+a=[6 2;3 3];a(:,:,2)=[1 0; 3 1];
+assert_checkequal(modulo(51, n), a);
+assert_checkequal(pmodulo(51,n), a);
+a=[1 3;2 4];a(:,:,2)=[0 1; 2 0];
+assert_checkequal(modulo(m, n), a);
+assert_checkequal(pmodulo(m,n), a);
+// Polynomials
+assert_checkequal(modulo( %z^2+1, %z), 1);
+assert_checkequal(pmodulo(%z^2+1, %z), 1);
+assert_checkequal(modulo(     -9 ,     [-7 5]) ,[-2 -4]);
+assert_checkequal(modulo(int8(-9),int8([-7 5])),int8([-2 -4]));
+assert_checkequal(modulo(      9 ,     [-7 5]) ,[2 4]);
+assert_checkequal(modulo( int8(9),int8([-7 5])),int8([2 4]));
+assert_checkequal(pmodulo(     -9,      [-7 5]) ,[5 1]);
+assert_checkequal(pmodulo(int8(-9),int8([-7 5])),int8([5 1]));
+assert_checkequal(pmodulo(      9,      [-7 5]) ,[2 4]);
+assert_checkequal(pmodulo( int8(9),int8([-7 5])),int8([2 4]));