bug 13918: Unmanaged operations on hypermatrix did not call overload functions.
[scilab.git] / scilab / modules / ast / tests / nonreg_tests / bug_13918.dia.ref
1 // =============================================================================
2 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3 // Copyright (C) 2015 - Scilab Enteprises - Antoine ELIAS
4 //
5 //  This file is distributed under the same license as the Scilab package.
6 // =============================================================================
7 //
8 // <-- Non-regression test for bug 13918 -->
9 //
10 // <-- Bugzilla URL -->
11 // http://bugzilla.scilab.org/show_bug.cgi?id=13918
12 //
13 // <-- Short Description -->
14 // invalid operation on hypermatrix must call overload functions
15 // <-- CLI SHELL MODE -->
16 //error msg
17 msg1 = _("Undefined operation for the given operands.\n");
18 msg2 = _("check or define function %s for overloading.\n");
19 //define hypermatrix
20 a3 = rand(2, 2, 2);
21 a2 = rand(2, 2);
22 //addition
23 //double + double
24 assert_checkerror("a3 + a2", msprintf(msg1 + "%s", msprintf(msg2, "%s_a_s")));
25 assert_checkerror("a2 + a3", msprintf(msg1 + "%s", msprintf(msg2, "%s_a_s")));
26 //poly + double
27 assert_checkerror("a3 * %s + a2", msprintf(msg1 + "%s", msprintf(msg2, "%p_a_s")));
28 assert_checkerror("a2 + a3 * %s", msprintf(msg1 + "%s", msprintf(msg2, "%s_a_p")));
29 //sparse + double
30 assert_checkerror("sparse(a2) + a3", msprintf(msg1 + "%s", msprintf(msg2, "%sp_a_s")));
31 assert_checkerror("a3 + sparse(a2)", msprintf(msg1 + "%s", msprintf(msg2, "%s_a_sp")));
32 // and
33 //double & double
34 assert_checkerror("a3 & a2", msprintf(msg1 + "%s", msprintf(msg2, "%s_h_s")));
35 assert_checkerror("a2 & a3", msprintf(msg1 + "%s", msprintf(msg2, "%s_h_s")));
36 //int & int
37 assert_checkerror("int8(a3) & int8(a2)", msprintf(msg1 + "%s", msprintf(msg2, "%i_h_i")));
38 assert_checkerror("int8(a2) & int8(a3)", msprintf(msg1 + "%s", msprintf(msg2, "%i_h_i")));
39 // divide
40 //double / double
41 assert_checkerror("a2 / a3", msprintf(msg1 + "%s", msprintf(msg2, "%s_r_s")));
42 assert_checkerror("a3 / a2", msprintf(msg1 + "%s", msprintf(msg2, "%s_r_s")));
43 //sparse / double
44 assert_checkerror("sparse(a2) / a3", msprintf(msg1 + "%s", msprintf(msg2, "%sp_r_s")));
45 assert_checkerror("a3 / sparse(a2)", msprintf(msg1 + "%s", msprintf(msg2, "%s_r_sp")));
46 // dotdivide
47 //double ./ double
48 assert_checkerror("a3 ./ a2", msprintf(msg1 + "%s", msprintf(msg2, "%s_d_s")));
49 assert_checkerror("a2 ./ a3", msprintf(msg1 + "%s", msprintf(msg2, "%s_d_s")));
50 //double ./ sparse
51 assert_checkerror("a3 ./ sparse(a2)", msprintf(msg1 + "%s", msprintf(msg2, "%s_d_sp")));
52 //sparse ./ double
53 assert_checkerror("sparse(a2) ./ a3", msprintf(msg1 + "%s", msprintf(msg2, "%sp_d_s")));
54 //poly ./ double
55 assert_checkerror("(a2 * %s) ./ a3", msprintf(msg1 + "%s", msprintf(msg2, "%p_d_s")));
56 assert_checkerror("(a3 * %s) ./ a2", msprintf(msg1 + "%s", msprintf(msg2, "%p_d_s")));
57 //dotmult
58 //double .* double
59 assert_checkerror("a3 .* a2", msprintf(msg1 + "%s", msprintf(msg2, "%s_x_s")));
60 assert_checkerror("a2 .* a3", msprintf(msg1 + "%s", msprintf(msg2, "%s_x_s")));
61 // sparse .* double
62 assert_checkerror("sparse(a2) .* a3", msprintf(msg1 + "%s", msprintf(msg2, "%sp_x_s")));
63 //double .* sparse
64 assert_checkerror("a3 .* sparse(a2)", msprintf(msg1 + "%s", msprintf(msg2, "%s_x_sp")));
65 // poly .* double
66 assert_checkerror("(a2 * %s) .* a3", msprintf(msg1 + "%s", msprintf(msg2, "%p_x_s")));
67 assert_checkerror("(a3 * %s) .* a2", msprintf(msg1 + "%s", msprintf(msg2, "%p_x_s")));
68 //double .* poly
69 assert_checkerror("a2 .* (a3 * %s)", msprintf(msg1 + "%s", msprintf(msg2, "%s_x_p")));
70 assert_checkerror("a3 .* (a2 * %s)", msprintf(msg1 + "%s", msprintf(msg2, "%s_x_p")));
71 // ldivide
72 //double \ double
73 assert_checkerror("a3 \ a3", msprintf(msg1 + "%s", msprintf(msg2, "%s_l_s")));
74 assert_checkerror("a2 \ a3", msprintf(msg1 + "%s", msprintf(msg2, "%s_l_s")));
75 assert_checkerror("a3 \ a2", msprintf(msg1 + "%s", msprintf(msg2, "%s_l_s")));
76 //multiplication
77 //double * double
78 assert_checkerror("a3 * a3", msprintf(msg1 + "%s", msprintf(msg2, "%s_m_s")));
79 assert_checkerror("a3 * a2", msprintf(msg1 + "%s", msprintf(msg2, "%s_m_s")));
80 assert_checkerror("a2 * a3", msprintf(msg1 + "%s", msprintf(msg2, "%s_m_s")));
81 //sparse * double
82 assert_checkerror("sparse(a2) * a3", msprintf(msg1 + "%s", msprintf(msg2, "%sp_m_s")));
83 //double * sparse
84 assert_checkerror("a3 * sparse(a2)", msprintf(msg1 + "%s", msprintf(msg2, "%s_m_sp")));
85 // or
86 //double | double
87 assert_checkerror("a3 | a2", msprintf(msg1 + "%s", msprintf(msg2, "%s_g_s")));
88 assert_checkerror("a2 | a3", msprintf(msg1 + "%s", msprintf(msg2, "%s_g_s")));
89 //int | int
90 assert_checkerror("int8(a3) | int8(a2)", msprintf(msg1 + "%s", msprintf(msg2, "%i_g_i")));
91 assert_checkerror("int8(a2) | int8(a3)", msprintf(msg1 + "%s", msprintf(msg2, "%i_g_i")));
92 //subtraction
93 //double - double
94 assert_checkerror("a3 - a2", msprintf(msg1 + "%s", msprintf(msg2, "%s_s_s")));
95 assert_checkerror("a2 - a3", msprintf(msg1 + "%s", msprintf(msg2, "%s_s_s")));
96 //poly - poly
97 assert_checkerror("(a3 * %s) - (a2 * %s)", msprintf(msg1 + "%s", msprintf(msg2, "%p_s_p")));
98 assert_checkerror("(a2 * %s) - (a3 * %s)", msprintf(msg1 + "%s", msprintf(msg2, "%p_s_p")));
99 //poly - double
100 assert_checkerror("(a3 * %s) - a2", msprintf(msg1 + "%s", msprintf(msg2, "%p_s_s")));
101 assert_checkerror("(a2 * %s) - a3", msprintf(msg1 + "%s", msprintf(msg2, "%p_s_s")));
102 //double - poly
103 assert_checkerror("a3 - (a2 * %s)", msprintf(msg1 + "%s", msprintf(msg2, "%s_s_p")));
104 assert_checkerror("a2 - (a3 * %s)", msprintf(msg1 + "%s", msprintf(msg2, "%s_s_p")));
105 //double - sparse
106 assert_checkerror("a3 - sparse(a2)", msprintf(msg1 + "%s", msprintf(msg2, "%s_s_sp")));
107 //sparse - double
108 assert_checkerror("sparse(a2) - a3", msprintf(msg1 + "%s", msprintf(msg2, "%sp_s_s")));