�
tzi � �6 � d Z ddlZddlmc mZ d� Zd� Zd� Z dS )z/
Tests for Subject construction and operations
� Nc � � ddl } ddh}| j � d� � | j � d� � d�}| � d||� � � }|j }d}||k }|s�t
j d
|fd||f� � dt j � � v st
j
|� � rt
j |� � ndt
j |� � t
j |� � d
�z }dd|iz }t t
j
|� � � � �dx}x}}|� � � } d}
|
| v }|s�t
j d|fd|
| f� � t
j |
� � dt j � � v st
j
| � � rt
j | � � ndd�z }dd|iz }t t
j
|� � � � �dx}
}d}
|
| v }|s�t
j d|fd|
| f� � t
j |
� � dt j � � v st
j
| � � rt
j | � � ndd�z }dd|iz }t t
j
|� � � � �dx}
}|� � � }
|
d }
d}|
|k }|slt
j d
|fd|
|f� � t
j |
� � t
j |� � d�z }dd|iz }t t
j
|� � � � �dx}
x}}|
d }
d}|
|k }|slt
j d
|fd|
|f� � t
j |
� � t
j |� � d�z }dd|iz }t t
j
|� � � � �dx}
x}}dS )z;Test creating Subject with identity, labels, and propertiesr N�Person�Employee�Alice� )�name�age�alice)�identity�labels�
properties��==)z0%(py2)s
{%(py2)s = %(py0)s.identity
} == %(py5)s�subject)�py0�py2�py5zassert %(py7)s�py7)�in)z%(py1)s in %(py3)sr )�py1�py3�assert %(py5)sr r )z%(py1)s == %(py4)s)r �py4zassert %(py6)s�py6r )�pattern_core�Value�string�int�Subjectr �
@pytest_ar�_call_reprcompare�@py_builtins�locals�_should_repr_global_name� _saferepr�AssertionError�_format_explanation�
get_labels�get_properties)r �
labels_set�properties_dictr �@py_assert1�@py_assert4�@py_assert3�@py_format6�@py_format8r �@py_assert0�@py_assert2�@py_format4�props�@py_format5�@py_format7s �^/Users/akollegger/Developer/gram-data/gram-rs/crates/pattern-core/tests/python/test_subject.py�test_subject_constructionr8 sN � ����� �J�'�J� �"�)�)�'�2�2��!�%�%�b�)�)�� �O�
�"�"���"� #� � �G� ��&�w�&��w�&�&�&�&�&�&�&�&�&�&��w�&�&�&�&�&�&�&�&�&�&�&�&�7�&�&�&�&�&�7�&�&�&�&�&�&��&�&�&�&�w�&�&�&�&�&�&�&�&�&�&�&�&�&�&�&�&�&�&�&�&�&�&�&�&�&�&�&�
�
�
�
!�
!�F���8�v�����������8�v������8������������v������v������������������������������:������������:�������:�����������������������������������������������"�"�$�$�E���=�#�G�#�=�G�#�#�#�#�#�#�#�#�#�#�=�G�#�#�#�#�#�=�#�#�#�#�G�#�#�#�#�#�#�#�#�#�#�#�#�#�#�#�#�#�#�#�#�#�#�#�#�#�#�#���<��2��<�2�����������<�2������<�����2������������������������������ c �| � ddl } | � d�� � }|� d� � |j }d} ||� � }d}||u }|s�t j d|fd||f� � d t
j � � v st j |� � rt j |� � nd t j |� � t j |� � t j |� � t j |� � d
�z }dd|iz }t t j |� � � � �dx}x}x}x}}|� d
� � |j }d
} ||� � }d}||u }|s�t j d|fd||f� � d t
j � � v st j |� � rt j |� � nd t j |� � t j |� � t j |� � t j |� � d
�z }dd|iz }t t j |� � � � �dx}x}x}x}}|� d� � |j }d} ||� � }d}||u }|s�t j d|fd||f� � d t
j � � v st j |� � rt j |� � nd t j |� � t j |� � t j |� � t j |� � d
�z }dd|iz }t t j |� � � � �dx}x}x}x}}dS )zTest Subject label operationsr N�test�r r T��is)zO%(py6)s
{%(py6)s = %(py2)s
{%(py2)s = %(py0)s.has_label
}(%(py4)s)
} is %(py9)sr �r r r r �py9�assert %(py11)s�py11r F)
r r � add_label� has_labelr r! r"