�
��}iu � �" � d Z ddlZddlmc mZ ddlZd� Zd� Z d� Z
d� Zd� Zd� Z
d � Zd
� Zedk r] e� � e � � e
� � e� � e� � e
� � e� � e� � ed� � dS dS )
zu
Tests for Pattern.para() - paramorphism operation
Validates structure-aware fold with access to pattern structure.
� Nc �� � t j � d� � } | � d� � � }d}||k }|s�t j d|fd||f� � dt
j � � v st j |� � rt j |� � ndt j |� � d�z }t j
d|� �� � dz d |iz }t t j |� � � � �d
x}}d
S )zATest para on atomic pattern - receives empty element_results list� c �0 � | j t |� � z S �N��value�sum��p�rss �c/Users/akollegger/Developer/gram-data/gram-rs/crates/pattern-core/tests/python/test_paramorphism.py�<lambda>z*test_para_atomic_pattern.<locals>.<lambda> s � �q�w��R���'8� � ��==�z%(py0)s == %(py3)s�result��py0�py3zExpected 5, got �
>assert %(py5)s�py5N)
�pattern_core�Pattern�point�para�
@pytest_ar�_call_reprcompare�@py_builtins�locals�_should_repr_global_name� _saferepr�_format_assertmsg�AssertionError�_format_explanation)�atomicr �@py_assert2�@py_assert1�@py_format4�@py_format6s r
�test_para_atomic_patternr+
s � �
�
!�
'�
'��
*�
*�F� �[�[�8�8�
9�
9�F��3�6�Q�;�3�3�3�3�3�3�3�3�3�6�Q�3�3�3�3�3�3�3�3�3�3�3�3�6�3�3�3�3�3�6�3�3�3�3�3�3�Q�3�3�3�3�3�3�3�3�3�6�3�3�3�3�3�3�3�3�3�3�3�3�3�3�3�3�3�3�3�3�3�3�3�3�3�3r c �d � t j � dt j � d� � t j � d� � g� � } | � d� � � }d}||k }|s�t j d|fd||f� � dt j � � v st j |� � rt j
|� � ndt j
|� � d �z }t j d
|� �� � dz d|iz }t t j
|� � � � �d
x}}d
S )z0Test para on simple pattern with atomic elements� � � c �0 � | j t |� � z S r r r
s r
r z*test_para_simple_pattern.<locals>.<lambda> � � ���#�b�'�'�(9� r � r r r r zExpected 6, got r r N�r r �patternr r r r r r r! r"