Improve the modulo unitary tests wrt Samuel modifications
[scilab.git] / scilab / modules / elementary_functions / tests / unit_tests / modulo.tst
1 // =============================================================================
2 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3 // Copyright (C) 2013 - Scilab Enterprises - Bruno JOFRET
4 //
5 //  This file is distributed under the same license as the Scilab package.
6 // =============================================================================
7
8 // <-- CLI SHELL MODE -->
9
10 // unit tests for modulo() function
11 // =============================================================================
12
13 assert_checkerror("modulo()", msprintf(_("%s: Wrong number of input argument(s): %d expected.\n"),"modulo", 2));
14 assert_checkerror("modulo(''a'',1)", msprintf(_("%s: Wrong type for input argument #%d: Reals, encoded integers or polynomials expected.\n"), "modulo", 1));
15 assert_checkerror("modulo(1,''a'')", msprintf(_("%s: Wrong type for input argument #%d: Reals, encoded integers or polynomials expected.\n"), "modulo", 2));
16 assert_checkerror("modulo(%pi+%i,1)", msprintf(_("%s: Wrong type for input argument #%d: Reals, encoded integers or polynomials expected.\n"), "modulo", 1));
17 assert_checkerror("modulo(1,1+%i)", msprintf(_("%s: Wrong type for input argument #%d: Reals, encoded integers or polynomials expected.\n"), "modulo", 2));
18
19 n=[1,2,10,15];
20 m=[2,2,3,5];
21 r = modulo(n,m);
22 assert_checkequal(r, [1,0,1,0]);
23
24 n = 100 * rand(1,100);
25 m = 100 * rand(1,100);
26 r = modulo(n,m);
27 computed_r = n - m .* int (n ./ m);
28 assert_checkequal(r, computed_r);
29
30 assert_checkequal(modulo(%z^2,%z),0);
31 // Encoded integers
32 assert_checkequal(modulo( int8(-123), int16(-7)), int8(-4));
33 assert_checkequal(pmodulo(int8(-123), int16(-7)), int8(3));
34 assert_checkequal(modulo( int8(-123), int16([-7 5])),int8([-4,-3]));
35 assert_checkequal(pmodulo(int8(-123), int16([-7 5])),int8([3,2]));
36 assert_checkequal(modulo( int8([-123 51]), int16(-7)),  int8([-4,2]));
37 assert_checkequal(pmodulo(int8([-123 51]), int16(-7)),int8([3,2]));
38 assert_checkequal(modulo( int8([-123 51]), int16([-7 5])),int8([-4,1]) );
39 assert_checkequal(pmodulo(int8([-123 51]), int16([-7 5])),  int8([3,1]));
40
41 // Hypermatrices
42 m = hypermat([2 2 2],1:8);
43 n = hypermat([2 2 2],-9:-2)
44 a=[1 3;2 4];a(:,:,2)=[0 2; 1 3];
45 assert_checkequal(modulo(m, 5), a );
46 assert_checkequal(pmodulo(m,5), a);
47 a=[6 2;3 3];a(:,:,2)=[1 0; 3 1];
48 assert_checkequal(modulo(51, n), a);
49 assert_checkequal(pmodulo(51,n), a);
50 a=[1 3;2 4];a(:,:,2)=[0 1; 2 0];
51 assert_checkequal(modulo(m, n), a);
52 assert_checkequal(pmodulo(m,n), a);
53
54 // Polynomials
55 assert_checkequal(modulo( %z^2+1, %z), 1);
56 assert_checkequal(pmodulo(%z^2+1, %z), 1);
57
58
59 assert_checkequal(modulo(     -9 ,     [-7 5]) ,[-2 -4]);
60 assert_checkequal(modulo(int8(-9),int8([-7 5])),int8([-2 -4]));
61 assert_checkequal(modulo(      9 ,     [-7 5]) ,[2 4]);
62 assert_checkequal(modulo( int8(9),int8([-7 5])),int8([2 4]));
63
64 assert_checkequal(pmodulo(     -9,      [-7 5]) ,[5 1]);
65 assert_checkequal(pmodulo(int8(-9),int8([-7 5])),int8([5 1]));
66 assert_checkequal(pmodulo(      9,      [-7 5]) ,[2 4]);
67 assert_checkequal(pmodulo( int8(9),int8([-7 5])),int8([2 4]));
68