* Bug #12679 fixed - Polynomials: argument check for gcd and lcm
[scilab.git] / scilab / modules / polynomials / tests / nonreg_tests / bug_12679.tst
1 // =============================================================================
2 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3 // Copyright (C) 2010 - DIGITEO - Allan CORNET
4 //
5 //  This file is distributed under the same license as the Scilab package.
6 // =============================================================================
7 //
8 // <-- Non-regression test for bug 12679 -->
9 //
10 // <-- CLI SHELL MODE -->
11 // <-- ENGLISH IMPOSED -->
12 //
13 // <-- Bugzilla URL -->
14 // http://bugzilla.scilab.org/show_bug.cgi?id=12679
15 //
16 // <-- Short Description -->
17 // Checks on gcd() and lcm() arguments
18
19 // Run with test_run('polynomials', 'bug_12679', ['no_check_error_output'])
20
21 ////////////////// gcd
22 // Normal behavior, with polynomials
23 s = poly(0, 's');
24 p = [s, s*(s+1)^2, 2*s^2+s^3];
25 [pgcd, u] = gcd(p);
26 assert_checkequal(p*u, [0 0 s]);
27 // Complex polynomials should yield an error
28 s = poly(%i, 's');
29 p = [s, s*(s+1)^2,2*s^2+s^3];
30 refMsg = msprintf(_("%s: Wrong type for argument #%d: Real Polynomial expected.\n"), "gcd", 1);
31 assert_checkerror("[pgcd, u] = gcd(p);", refMsg);
32
33 // Normal behavior, with integers
34 V = int32([2^2*3^5, 2^3*3^2, 2^2*3^4*5]);
35 [thegcd, U] = gcd(V);
36 assert_checkequal(V*U, int32([0 0 36]));
37 assert_checkequal(gcd(uint8([15 20])), uint8(5));
38 assert_checkequal(gcd([iconvert(15, 4) iconvert(20, 4)]), int32(5));
39 assert_checkequal(gcd(iconvert([15 20], 4)), int32(5));
40 // Trying to use doubles should yield an error
41 refMsg2 = msprintf(_("%s: Wrong type for argument #%d: Integer array or Polynomial expected.\n"), "gcd", 1);
42 assert_checkerror("gcd([15 20]);", refMsg2);
43
44
45 ////////////////// lcm
46 // Normal behavior, with polynomials
47 s = poly(0, 's');
48 p = [s, s*(s+1)^2, s^2*(s+2)];
49 [pp, fact] = lcm(p);
50 assert_checkequal(pp, [2*s^2 + 5*s^3 + 4*s^4 + s^5]);
51 // Complex polynomials should yield an error
52 s = poly(%i, 's');
53 p = [s, s*(s+1)^2, s^2*(s+2)];
54 refMsg3 = msprintf(_("%s: Wrong type for argument #%d: Real Polynomial expected.\n"), "lcm", 1);
55 assert_checkerror("[pp, fact] = lcm(p);", refMsg3);
56
57 // Normal behavior, with integers
58 V = int32([2^2*3^5, 2^3*3^2, 2^2*3^4*5]);
59 assert_checkequal(lcm(V), int32(9720));
60 // Trying to use doubles should yield an error
61 refMsg4 = msprintf(_("%s: Wrong type for argument #%d: Integer array or Polynomial expected.\n"), "lcm", 1);
62 assert_checkerror("lcm([15 20]);", refMsg4);