�
��}i� � �d � d Z ddlZddlmc mZ ddlZddlZd� Z d� Z
d� Zd� Zd� Z
d� Zd � Zd
� ZdS )z*
Tests for Subject combination strategies
� Nc �
� t j ddhdt j � d� � i�� � } t j ddhdt j � d � � i�� � }t j � | � � }t j � |� � }|� |� � }|j }|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}|j } |� � }||v }
|
s�t j
d|
fd||f� � t j |� � dt j � � v st j
|� � rt j |� � ndt j |� � t j |� � d�z }
dd|
iz }t t j |� � � � �dx}x}
x}}d}|j } |� � }||v }
|
s�t j
d|
fd||f� � t j |� � dt j � � v st j
|� � rt j |� � ndt j |� � t j |� � d�z }
dd|
iz }t t j |� � � � �dx}x}
x}}d}|j } |� � }||v }
|
s�t j
d|
fd||f� � t j |� � dt j � � v st j
|� � rt j |� � ndt j |� � t j |� � d�z }
dd|
iz }t t j |� � � � �dx}x}
x}}d}|j } |� � }||v }
|
s�t j
d|
fd||f� � t j |� � dt j � � v st j
|� � rt j |� � ndt j |� � t j |� � d�z }
dd|
iz }t t j |� � � � �dx}x}
x}}dS )z<Test merge strategy (default) combines labels and properties�alice�Person�name�Alice��identity�labels�
properties�bob�Employee�role�Engineer��==�z0%(py2)s
{%(py2)s = %(py0)s.identity
} == %(py5)s�result_subject��py0�py2�py5�assert %(py7)s�py7N��in�zI%(py1)s in %(py7)s
{%(py7)s = %(py5)s
{%(py5)s = %(py3)s.get_labels
}()
}��py1�py3r r �assert %(py9)s�py9�zM%(py1)s in %(py7)s
{%(py7)s = %(py5)s
{%(py5)s = %(py3)s.get_properties
}()
}��pattern_core�Subject�Value�string�Pattern�point�combine�valuer �
@pytest_ar�_call_reprcompare�@py_builtins�locals�_should_repr_global_name� _saferepr�AssertionError�_format_explanation�
get_labels�get_properties)�subject1�subject2�p1�p2�mergedr �@py_assert1�@py_assert4�@py_assert3�@py_format6�@py_format8�@py_assert0�@py_assert6�@py_assert2�@py_format10s �j/Users/akollegger/Developer/gram-data/gram-rs/crates/pattern-core/tests/python/test_subject_combination.py�'test_subject_combination_merge_strategyrE s� � ��#���z��L�.�5�5�g�>�>�?�� � �H�
�#���|��L�.�5�5�j�A�A�B�� � �H�
� � #� #�H� -� -�B� � � #� #�H� -� -�B� �Z�Z��^�^�F��\�N��"�-�g�-�"�g�-�-�-�-�-�-�-�-�-�-�"�g�-�-�-�-�-�-�-�-�-�-�-�-�>�-�-�-�-�-�>�-�-�-�-�-�-�"�-�-�-�-�g�-�-�-�-�-�-�-�-�-�-�-�-�-�-�-�-�-�-�-�-�-�-�-�-�-�-�-��2�~�0�2�0�0�2�2�2�8�2�2�2�2�2�2�2�2�2�2�2�8�2�2�2�2�2�2�8�2�2�2�2�2�2�2�2�2�2�2�~�2�2�2�2�2�~�2�2�2�2�2�2�0�2�2�2�2�2�2�2�2�2�2�2�2�2�2�2�2�2�2�2�2�2�2�2�2�2�2�2�2�2�2�2�2�2�2��4��2�4�2�2�4�4�4�:�4�4�4�4�4�4�4�4�4�4�4�:�4�4�4�4�4�4�:�4�4�4�4�4�4�4�4�4�4�4��4�4�4�4�4��4�4�4�4�4�4�2�4�4�4�4�4�4�4�4�4�4�4�4�4�4�4�4�4�4�4�4�4�4�4�4�4�4�4�4�4�4�4�4�4�4��4�^�2�4�2�2�4�4�4�6�4�4�4�4�4�4�4�4�4�4�4�6�4�4�4�4�4�4�6�4�4�4�4�4�4�4�4�4�4�4�^�4�4�4�4�4�^�4�4�4�4�4�4�2�4�4�4�4�4�4�4�4�4�4�4�4�4�4�4�4�4�4�4�4�4�4�4�4�4�4�4�4�4�4�4�4�4�4��4�^�2�4�2�2�4�4�4�6�4�4�4�4�4�4�4�4�4�4�4�6�4�4�4�4�4�4�6�4�4�4�4�4�4�4�4�4�4�4�^�4�4�4�4�4�^�4�4�4�4�4�4�2�4�4�4�4�4�4�4�4�4�4�4�4�4�4�4�4�4�4�4�4�4�4�4�4�4�4�4�4�4�4�4�4�4�4�4�4� c �
� t j ddhdt j � d� � i�� � } t j ddhdt j � d � � i�� � }t j � | � � }t j � |� � }|� |d
�� � }|j }|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}|j } |� � }||v }
|
s�t j
d|
fd||f� � t j |� � dt j � � v st j
|� � rt j |� � ndt j |� � t j |� � d�z }
dd|
iz }t t j |� � � � �dx}x}
x}}d}|j } |� � }||v}
|
s�t j
d|
fd||f� � t j |� � dt j � � v st j
|� � rt j |� � ndt j |� � t j |� � d�z }
dd|
iz }t t j |� � � � �dx}x}
x}}d}|j } |� � }||v }
|
s�t j
d|
fd||f� � t j |� � dt j � � v st j
|� � rt j |� � ndt j |� � t j |� � d�z }
dd|
iz }t t j |� � � � �dx}x}
x}}d}|j } |� � }||v}
|
s�t j
d|
fd||f� � t j |� � dt j � � v st j
|� � rt j |� � ndt j |� � t j |� � d�z }
dd|
iz }t t j |� � � � �dx}x}
x}}dS )zTest first wins strategyr r r r r r r
r r �first��strategyr r r r r r Nr r r r r! ��not in�zM%(py1)s not in %(py7)s
{%(py7)s = %(py5)s
{%(py5)s = %(py3)s.get_labels
}()
}r"