Mercurial > hg > octave-nkf
annotate test/test_parser.m @ 12951:818299a39ae1 stable
oop.txi: Fix incorrect names for power and mpower operators
author | Jordi Gutiérrez Hermoso <jordigh@gmail.com> |
---|---|
date | Thu, 11 Aug 2011 14:05:46 -0500 |
parents | 5dedac50fef9 |
children | 53c0ed961de8 |
rev | line source |
---|---|
11523 | 1 ## Copyright (C) 2010-2011 John W. Eaton |
11218
0910020c5ab6
add omitted file from previous change
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
2 ## |
0910020c5ab6
add omitted file from previous change
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
3 ## This file is part of Octave. |
0910020c5ab6
add omitted file from previous change
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
4 ## |
0910020c5ab6
add omitted file from previous change
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
5 ## Octave is free software; you can redistribute it and/or modify it |
0910020c5ab6
add omitted file from previous change
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
6 ## under the terms of the GNU General Public License as published by |
0910020c5ab6
add omitted file from previous change
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
7 ## the Free Software Foundation; either version 3 of the License, or (at |
0910020c5ab6
add omitted file from previous change
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
8 ## your option) any later version. |
0910020c5ab6
add omitted file from previous change
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
9 ## |
0910020c5ab6
add omitted file from previous change
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
10 ## Octave is distributed in the hope that it will be useful, but |
0910020c5ab6
add omitted file from previous change
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
11 ## WITHOUT ANY WARRANTY; without even the implied warranty of |
0910020c5ab6
add omitted file from previous change
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
12 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
0910020c5ab6
add omitted file from previous change
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
13 ## General Public License for more details. |
0910020c5ab6
add omitted file from previous change
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
14 ## |
0910020c5ab6
add omitted file from previous change
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
15 ## You should have received a copy of the GNU General Public License |
0910020c5ab6
add omitted file from previous change
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
16 ## along with Octave; see the file COPYING. If not, see |
0910020c5ab6
add omitted file from previous change
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
17 ## <http://www.gnu.org/licenses/>. |
0910020c5ab6
add omitted file from previous change
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
18 |
0910020c5ab6
add omitted file from previous change
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
19 ## Tests for parser problems belong in this file. We need many more |
0910020c5ab6
add omitted file from previous change
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
20 ## tests here! |
0910020c5ab6
add omitted file from previous change
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
21 |
0910020c5ab6
add omitted file from previous change
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
22 %!assert ({1 2 {3 4}}, {1,2,{3,4}}) |
0910020c5ab6
add omitted file from previous change
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
23 %!assert ({1, 2 {3 4}}, {1,2,{3,4}}) |
0910020c5ab6
add omitted file from previous change
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
24 %!assert ({1 2, {3 4}}, {1,2,{3,4}}) |
0910020c5ab6
add omitted file from previous change
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
25 %!assert ({1 2 {3, 4}}, {1,2,{3,4}}) |
0910020c5ab6
add omitted file from previous change
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
26 %!assert ({1, 2, {3 4}}, {1,2,{3,4}}) |
0910020c5ab6
add omitted file from previous change
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
27 %!assert ({1 2,{3 4}}, {1,2,{3,4}}) |
0910020c5ab6
add omitted file from previous change
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
28 %!assert ({1 2,{3,4}}, {1,2,{3,4}}) |
0910020c5ab6
add omitted file from previous change
John W. Eaton <jwe@octave.org>
parents:
diff
changeset
|
29 %!assert ({1,2,{3 4}}, {1,2,{3,4}}) |
12518
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
30 |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
31 %# Tests for operator precedence as documented in section 8.8 of manual |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
32 %# There are 11 levels of precedence from "exponentiation" (highest) down to |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
33 %# "statement operators" (lowest). |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
34 %# |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
35 %# Level 11 (exponentiation) overrides all others |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
36 %!test |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
37 %! assert (-2^2, -4) |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
38 %! assert (!0^0, false); |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
39 # FIXME: This test is failing. Transpose mistakenly has higher priority. |
12688
5dedac50fef9
test: Comment out failing parser tests ahead of 3.4.1 release
Rik <octave@nomad.inbox5.com>
parents:
12518
diff
changeset
|
40 %!# assert ([2 3].^2', [4; 9]) |
12518
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
41 %! assert (2*3^2, 18) |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
42 %! assert (2+3^2, 11) |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
43 %! assert ([1:10](1:2^2), [1 2 3 4]) |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
44 %! assert (3 > 2^2, false) |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
45 %! assert (1 & 0^0, true) |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
46 %! assert (1 && 0^0, true) |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
47 %! a = 3; |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
48 %! a *= 0^0; |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
49 %! assert (a, 3) |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
50 %# Level 10 (unary plus, increment, not) |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
51 %!test |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
52 # FIXME: No test for increment and transpose that I can think of. |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
53 %! a = 2; |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
54 %! assert (++a*3, 9) |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
55 %! assert (a++-2, 1) |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
56 %! assert (a, 4) |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
57 %! assert ([1:10](1:++a), [1:5]) |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
58 %! assert (5 == a++, true) |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
59 %! assert (7 == ++a, true) |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
60 %! a = 0; |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
61 %! assert (1 & a++, false) |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
62 %! assert (a, 1) |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
63 %! assert (1 && --a, false) |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
64 %! a = 3; |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
65 %! a *= a++; |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
66 %! assert (a, 12) |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
67 %# Level 9 (transpose) |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
68 %!test |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
69 %! assert ([1 2]*[3 4]', 11) |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
70 %! assert ([1 2]'+[3 4]', [4; 6]) |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
71 %! assert (1:5', 1:5) |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
72 %! assert ([1; 2] == [1 2]', [true; true]) |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
73 %! assert ([1; 0] & [1 0]', [true; false]) |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
74 # FIXME: No test for transpose and short-circuit operator that I can think of. |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
75 %! a = [1 2]; |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
76 %! a *= [3 4]'; |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
77 %! assert (a, 11) |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
78 %# Level 8 (multiply, divide) |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
79 %!test |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
80 %! assert (3 + 4 * 5, 23) |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
81 %! assert (3 + 4 * 5, 23) |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
82 %! assert (5*1:6, [5 6]) |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
83 %! assert (3 > 1 * 5, false) |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
84 %! assert (1 & 1 * 0, false) |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
85 %! assert (1 && 1 * 0, false) |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
86 %! a = 3; |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
87 %! a /= a * 2; |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
88 %! assert (a, 0.5) |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
89 %# Level 7 (add, subtract) |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
90 %!test |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
91 %! assert ([2 + 1:6], 3:6) |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
92 %! assert (3 > 1 + 5, false) |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
93 %! assert (1 & 1 - 1, false) |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
94 %! assert (1 && 1 - 1, false) |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
95 %! a = 3; |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
96 %! a *= 1 + 1; |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
97 %! assert (a, 6) |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
98 %# Level 6 (colon) |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
99 %!test |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
100 %! assert (5:-1: 3 > 4, [true false false]) |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
101 %! assert (1: 3 & 1, [true true true]) |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
102 %! assert (-1: 3 && 1, false) |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
103 %! a = [1:3]; |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
104 %! a += 3 : 5; |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
105 %! assert (a, [4 6 8]) |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
106 %# Level 5 (relational) |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
107 %!test |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
108 %! assert (0 == -1 & 0, false) |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
109 %! assert (0 == -1 && 0, false) |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
110 %! a = 2; |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
111 %! a *= 3 > 1; |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
112 %! assert (a, 2) |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
113 %# Level 4 (element-wise and, or) |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
114 %!test |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
115 %! assert (0 & 1 || 1, true) |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
116 %! assert (0 == -1 && 0, false) |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
117 %! a = 2; |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
118 %! a *= 3 & 1; |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
119 %! assert (a, 2) |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
120 %# Level 3 (logical and, or) |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
121 %!test |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
122 %! a = 2; |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
123 %! a *= 3 && 1; |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
124 %! assert (a, 2) |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
125 |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
126 %# Tests for operator precedence within each level where ordering should |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
127 %# be left to right except for exponents and assignments. |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
128 %# Level 11 (exponentiation) |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
129 %!test |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
130 %# FIXME : Exponentiation seems to work left to right, despite the |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
131 %# documentation and ordinary mathematical rules of precedence. |
12688
5dedac50fef9
test: Comment out failing parser tests ahead of 3.4.1 release
Rik <octave@nomad.inbox5.com>
parents:
12518
diff
changeset
|
132 %!# assert (2^3**2, 512) |
12518
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
133 %# Level 10 (unary plus, increment, not) |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
134 %!test |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
135 %! assert (+-+1, -1) |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
136 %! a = 0; |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
137 %# FIXME : Should we test for this corner case at all? |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
138 %# (unary minus)(auto-decrement operator) |
12688
5dedac50fef9
test: Comment out failing parser tests ahead of 3.4.1 release
Rik <octave@nomad.inbox5.com>
parents:
12518
diff
changeset
|
139 %!# assert (---a, 1); |
12518
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
140 %! a = -1; |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
141 %! assert (!++a, true) |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
142 %! assert (a, 0) |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
143 %! assert (-~a, -1) |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
144 %! assert (!~a++, false) |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
145 %! assert (a, 1) |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
146 %# Level 9 (transpose) |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
147 %!test |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
148 %! assert (3*4i'.', 0 - 12i) |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
149 %! assert (3*4i.'.', 0 + 12i) |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
150 %# Level 8 (multiply, divide) |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
151 %!test |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
152 %!assert (3 * 4 / 5, 2.4) |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
153 %!assert (3 ./ 4 .* 5, 3.75) |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
154 %# Level 7 (add, subtract) |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
155 %!test |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
156 %!assert (-3 - 4 + 1 + 3 * 2, 0) |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
157 %# Level 5 (relational) |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
158 %!test |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
159 %! assert (0 < 1 <= 0.5 == 0 >= 0.5 > 0, true) |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
160 %! assert (1 < 1 == 0 != 0, true) |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
161 %! assert (1 < 1 == 0 ~= 0, true) |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
162 %# Level 4 (element-wise and, or) |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
163 %!test |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
164 %! assert ([ 1 0] & [0 1] | [1 0], [true false]) |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
165 %# Level 2 (assignment) |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
166 %!test |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
167 %! a = 2; b = 5; c = 7; |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
168 %! assert (a += b *= c += 1, 42) |
9f926b9f83cc
Add operator precedence tests to fixed list of parser tests.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
169 %! assert (b == 40 && c == 8) |