1from sympy.printing.tree import tree
2from sympy.testing.pytest import XFAIL
3
4
5# Remove this flag after making _assumptions cache deterministic.
6@XFAIL
7def test_print_tree_MatAdd():
8    from sympy.matrices.expressions import MatrixSymbol
9    A = MatrixSymbol('A', 3, 3)
10    B = MatrixSymbol('B', 3, 3)
11
12    test_str = [
13        'MatAdd: A + B\n',
14        'algebraic: False\n',
15        'commutative: False\n',
16        'complex: False\n',
17        'composite: False\n',
18        'even: False\n',
19        'extended_negative: False\n',
20        'extended_nonnegative: False\n',
21        'extended_nonpositive: False\n',
22        'extended_nonzero: False\n',
23        'extended_positive: False\n',
24        'extended_real: False\n',
25        'imaginary: False\n',
26        'integer: False\n',
27        'irrational: False\n',
28        'negative: False\n',
29        'noninteger: False\n',
30        'nonnegative: False\n',
31        'nonpositive: False\n',
32        'nonzero: False\n',
33        'odd: False\n',
34        'positive: False\n',
35        'prime: False\n',
36        'rational: False\n',
37        'real: False\n',
38        'transcendental: False\n',
39        'zero: False\n',
40        '+-MatrixSymbol: A\n',
41        '| algebraic: False\n',
42        '| commutative: False\n',
43        '| complex: False\n',
44        '| composite: False\n',
45        '| even: False\n',
46        '| extended_negative: False\n',
47        '| extended_nonnegative: False\n',
48        '| extended_nonpositive: False\n',
49        '| extended_nonzero: False\n',
50        '| extended_positive: False\n',
51        '| extended_real: False\n',
52        '| imaginary: False\n',
53        '| integer: False\n',
54        '| irrational: False\n',
55        '| negative: False\n',
56        '| noninteger: False\n',
57        '| nonnegative: False\n',
58        '| nonpositive: False\n',
59        '| nonzero: False\n',
60        '| odd: False\n',
61        '| positive: False\n',
62        '| prime: False\n',
63        '| rational: False\n',
64        '| real: False\n',
65        '| transcendental: False\n',
66        '| zero: False\n',
67        '| +-Symbol: A\n',
68        '| | commutative: True\n',
69        '| +-Integer: 3\n',
70        '| | algebraic: True\n',
71        '| | commutative: True\n',
72        '| | complex: True\n',
73        '| | extended_negative: False\n',
74        '| | extended_nonnegative: True\n',
75        '| | extended_real: True\n',
76        '| | finite: True\n',
77        '| | hermitian: True\n',
78        '| | imaginary: False\n',
79        '| | infinite: False\n',
80        '| | integer: True\n',
81        '| | irrational: False\n',
82        '| | negative: False\n',
83        '| | noninteger: False\n',
84        '| | nonnegative: True\n',
85        '| | rational: True\n',
86        '| | real: True\n',
87        '| | transcendental: False\n',
88        '| +-Integer: 3\n',
89        '|   algebraic: True\n',
90        '|   commutative: True\n',
91        '|   complex: True\n',
92        '|   extended_negative: False\n',
93        '|   extended_nonnegative: True\n',
94        '|   extended_real: True\n',
95        '|   finite: True\n',
96        '|   hermitian: True\n',
97        '|   imaginary: False\n',
98        '|   infinite: False\n',
99        '|   integer: True\n',
100        '|   irrational: False\n',
101        '|   negative: False\n',
102        '|   noninteger: False\n',
103        '|   nonnegative: True\n',
104        '|   rational: True\n',
105        '|   real: True\n',
106        '|   transcendental: False\n',
107        '+-MatrixSymbol: B\n',
108        '  algebraic: False\n',
109        '  commutative: False\n',
110        '  complex: False\n',
111        '  composite: False\n',
112        '  even: False\n',
113        '  extended_negative: False\n',
114        '  extended_nonnegative: False\n',
115        '  extended_nonpositive: False\n',
116        '  extended_nonzero: False\n',
117        '  extended_positive: False\n',
118        '  extended_real: False\n',
119        '  imaginary: False\n',
120        '  integer: False\n',
121        '  irrational: False\n',
122        '  negative: False\n',
123        '  noninteger: False\n',
124        '  nonnegative: False\n',
125        '  nonpositive: False\n',
126        '  nonzero: False\n',
127        '  odd: False\n',
128        '  positive: False\n',
129        '  prime: False\n',
130        '  rational: False\n',
131        '  real: False\n',
132        '  transcendental: False\n',
133        '  zero: False\n',
134        '  +-Symbol: B\n',
135        '  | commutative: True\n',
136        '  +-Integer: 3\n',
137        '  | algebraic: True\n',
138        '  | commutative: True\n',
139        '  | complex: True\n',
140        '  | extended_negative: False\n',
141        '  | extended_nonnegative: True\n',
142        '  | extended_real: True\n',
143        '  | finite: True\n',
144        '  | hermitian: True\n',
145        '  | imaginary: False\n',
146        '  | infinite: False\n',
147        '  | integer: True\n',
148        '  | irrational: False\n',
149        '  | negative: False\n',
150        '  | noninteger: False\n',
151        '  | nonnegative: True\n',
152        '  | rational: True\n',
153        '  | real: True\n',
154        '  | transcendental: False\n',
155        '  +-Integer: 3\n',
156        '    algebraic: True\n',
157        '    commutative: True\n',
158        '    complex: True\n',
159        '    extended_negative: False\n',
160        '    extended_nonnegative: True\n',
161        '    extended_real: True\n',
162        '    finite: True\n',
163        '    hermitian: True\n',
164        '    imaginary: False\n',
165        '    infinite: False\n',
166        '    integer: True\n',
167        '    irrational: False\n',
168        '    negative: False\n',
169        '    noninteger: False\n',
170        '    nonnegative: True\n',
171        '    rational: True\n',
172        '    real: True\n',
173        '    transcendental: False\n'
174    ]
175
176    assert tree(A + B) == "".join(test_str)
177
178
179def test_print_tree_MatAdd_noassumptions():
180    from sympy.matrices.expressions import MatrixSymbol
181    A = MatrixSymbol('A', 3, 3)
182    B = MatrixSymbol('B', 3, 3)
183
184    test_str = \
185"""MatAdd: A + B
186+-MatrixSymbol: A
187| +-Str: A
188| +-Integer: 3
189| +-Integer: 3
190+-MatrixSymbol: B
191  +-Str: B
192  +-Integer: 3
193  +-Integer: 3
194"""
195
196    assert tree(A + B, assumptions=False) == test_str
197