o
    8Va                     @   s   d dl mZmZmZmZmZmZ d dlmZm	Z	m
Z
mZmZmZmZ d dlmZ dd Zdd Zdd	 Zd
d Zdd Zdd Zdd Zdd Zdd Zdd ZdS )    )purestrstyleof	attrprintdotnodedotedgesdotprint)SymbolIntegerBasicExprsreprFloatsymbols)xc                   C   s   t tddks
J t tdddksJ t tddksJ t tdddd	ks+J t tddddd
ks8J t tddddksDJ d S )Nr   Symbol('x')      Basic(1, 2)Float('2.0', precision=53)T)Z	with_args)r    )r   )12)r   r   )r   r   r
   r   r   r   r   ?/usr/lib/python3/dist-packages/sympy/printing/tests/test_dot.pytest_purestr   s   r   c                  C   sV   t dddftddifg} tt d| dddksJ ttd | dddks)J d S )Nblueellipsecolorshaper   Zblackr   )r
   r   r   r   )Zstylesr   r   r   test_styleof   s
   
 r   c                   C   s   t ddddksJ d S )Nr   r   r   z!"color"="blue", "shape"="ellipse")r   r   r   r   r   test_attrprint   s   r    c                   C   sx   t tdddks
J t td dddksJ t td ddt ttd  dddks,J t ttd  ddd	ks:J d S )
NFrepeatz@"Symbol('x')" ["color"="black", "label"="x", "shape"="ellipse"];r   zS"Add(Integer(2), Symbol('x'))" ["color"="black", "label"="Add", "shape"="ellipse"];r   ze"Add(Symbol('x'), Pow(Symbol('x'), Integer(2)))" ["color"="black", "label"="Add", "shape"="ellipse"];Tzh"Add(Symbol('x'), Pow(Symbol('x'), Integer(2)))_()" ["color"="black", "label"="Add", "shape"="ellipse"];)r   r   r   r   r   r   test_dotnode   s   
r#   c                   C   sD   t ttd ddddgksJ t ttd ddddgks J d S )	Nr   Fr!   z/"Add(Integer(2), Symbol('x'))" -> "Integer(2)";z0"Add(Integer(2), Symbol('x'))" -> "Symbol('x')";Tz7"Add(Integer(2), Symbol('x'))_()" -> "Integer(2)_(0,)";z8"Add(Integer(2), Symbol('x'))_()" -> "Symbol('x')_(1,)";)sortedr   r   r   r   r   r   test_dotedges.   s   
r%   c                      s  t td dd t fddttd ddD sJ t fdddd ttdtd fD D s4J d	 v s:J t ttd  dd t fd
dtttd  ddD sYJ t fdddd ttdtd fD D srJ d	 v sxJ t ttd  dd t fddtttd  ddD sJ t fdddd ttd  fD D sJ t tt dd t fddttt ddD sJ t fddttddttddfD sJ d	 v sJ d S )Nr   Fr!   c                 3       | ]}| v V  qd S Nr   .0etextr   r   	<genexpr>:       z test_dotprint.<locals>.<genexpr>c                 3   r&   r'   r   r)   nr+   r   r   r-   ;       
c                 S      g | ]}t |d dqS Fr!   r   r)   exprr   r   r   
<listcomp><       z!test_dotprint.<locals>.<listcomp>Zdigraphc                 3   r&   r'   r   r(   r+   r   r   r-   A   r.   c                 3   r&   r'   r   r/   r+   r   r   r-   B   r1   c                 S   r2   r3   r4   r5   r   r   r   r7   C   r8   Tc                 3   r&   r'   r   r(   r+   r   r   r-   H   r.   c                 3   r&   r'   r   r/   r+   r   r   r-   I   r1   c                 S   r2   )r   posr4   r5   r   r   r   r7   J   r8   c                 3   r&   r'   r   r(   r+   r   r   r-   N   r.   c                 3   r&   r'   r   r/   r+   r   r   r-   O   r1   )r   r9   )r   )r   r   allr   r	   r   r   r   r+   r   test_dotprint8   s:   &**&r<   c                  C   s\   t dt d dd} tdt d | v sJ tt| vsJ t dt d } d| vs,J d S )N   r   r   )depthr>   )r   r   r   r+   r   r   r   test_dotprint_depthS   s
   r?   c                  C   s0   ddl m}  td}t| d||dksJ d S )Nr   )MatrixSymbolr0   Xa  digraph{

# Graph style
"ordering"="out"
"rankdir"="TD"

#########
# Nodes #
#########

"MatrixSymbol(Str('X'), Symbol('n'), Symbol('n'))_()" ["color"="black", "label"="MatrixSymbol", "shape"="ellipse"];
"Str('X')_(0,)" ["color"="blue", "label"="X", "shape"="ellipse"];
"Symbol('n')_(1,)" ["color"="black", "label"="n", "shape"="ellipse"];
"Symbol('n')_(2,)" ["color"="black", "label"="n", "shape"="ellipse"];

#########
# Edges #
#########

"MatrixSymbol(Str('X'), Symbol('n'), Symbol('n'))_()" -> "Str('X')_(0,)";
"MatrixSymbol(Str('X'), Symbol('n'), Symbol('n'))_()" -> "Symbol('n')_(1,)";
"MatrixSymbol(Str('X'), Symbol('n'), Symbol('n'))_()" -> "Symbol('n')_(2,)";
})sympyr@   r   r   )r@   r0   r   r   r   test_Matrix_and_non_basicsZ   s
   rC   c                  C   s,   t td td} d| v sJ d| v sJ d S )Nr   )Z	labelfuncr   z
Integer(2))r   r   r   r+   r   r   r   test_labelfuncw   s   rD   c                  C   sL   t ddd\} }t| | t||  ksJ t| | t||  ks$J d S )Nzx yF)Zcommutative)r   r   )r   yr   r   r   test_commutative}   s    rF   N)Zsympy.printing.dotr   r   r   r   r   r   rB   r   r	   r
   r   r   r   r   Z	sympy.abcr   r   r   r    r#   r%   r<   r?   rC   rD   rF   r   r   r   r   <module>   s     $
