
    1yi25                         d Z ddlZddlZddlmZ ddlmZ ddlmZm	Z	  G d dej                        Zedk(  r ej                          yy)	zmergedeep test module    N)Counter)deepcopy)mergeStrategyc                   d    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zy)test_mergedeepzmergedeep function tests.c                    dddddidddd	did
g ddt        dddd      dt        ddi      t        ddi      d	}dddiidddig ddt        ddd      dd}t        |      }dddiiddg ddt        ddd      t        ddi      t        ddi      d}t        |      }dddiiddd	did
dt        ddi      t        ddi      d}t        |      }t        i |||t        j                        }| j                  ||       | j                  ||       | j                  ||       | j                  ||       y )N      c_cC
   bB      f   a   r
      d      r   r   r   r   zr   )	r   der   ghijr!   r   r   r   r   r   r   r   r   r   r   r   r"   r#   r   r$   r%   r'   r   r   r   )r   r"   r#   r   r$   r%   r&   r!   r   r   r"   r#   r&   r'   r!   strategy)r   r   r   r   REPLACEassertEqual	selfexpectedr   a_copyr   b_copyr   c_copyactuals	            Z/var/www/html/content_weaver/venv/lib/python3.12/site-packages/mergedeep/test_mergedeep.pyUtest_should_merge_3_dicts_into_new_dict_using_replace_strategy_and_only_mutate_targetzdtest_mergedeep.test_should_merge_3_dicts_into_new_dict_using_replace_strategy_and_only_mutate_target   s   b)b	:c1X&qqq12#q"#q"

 QxQqq)*
 ! Ry!qq)*#q"#q"	
 ! bz"c1X&#q"#q"
 !r1aX-=-=>*F#F#F#    c                 Z   dddddidddd	did
g ddt        dddd      dt        ddi      d}dddiidddig ddt        ddd      dd}t        |      }dddiiddg ddt        ddd      t        ddi      d}t        |      }dddiiddd	did
dt        ddi      d}t        |      }t        |||t        j                        }| j                  ||       | j                  ||       | j                  ||       | j                  ||       | j                  ||       y )Nr
   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   )r   r"   r#   r   r$   r%   r&   r'   r   r   r(   r)   r*   r+   r   r,   r   )r   r"   r#   r   r$   r%   r&   r   )r   r"   r#   r&   r'   r.   )r   r   r   r   r0   r1   assertNotEqualr2   s	            r9   Ztest_should_merge_2_dicts_into_existing_dict_using_replace_strategy_and_only_mutate_targetzitest_mergedeep.test_should_merge_2_dicts_into_existing_dict_using_replace_strategy_and_only_mutate_targetF   so   b)b	:c1X&qqq12#q"	
 QxQqq)*
 ! Ry!qq)*#q"
 !r
#!asAh2GaV]_bde^fVgh!q!Q)9)9:*#Av&F#F#r;   c                     t        j                  t              }t        j                  }| j                  |j                  j                  d      |       y )Nr/   )inspectgetfullargspecr   r   r0   r1   kwonlydefaultsget)r3   	func_specdefault_strategys      r9   ,test_should_have_default_strategy_of_replacez;test_mergedeep.test_should_have_default_strategy_of_replaces   s@    **51	#++1155jACSTr;   c                    dddddidddd	did
g dd}dddiidddig dd}t        |      }dddiiddg dd}t        |      }dddiiddd	did
d}t        |      }t        i |||t        j                        }| j	                  ||       | j	                  ||       | j	                  ||       | j	                  ||       y Nr
   r   r   r   r   r   r   r   r   r   r   r   r   r   r
   r   r   r"   r#   r   r   r   r   r(   r   r   r   r   r"   r#   r.   r   r   r   ADDITIVEr1   r2   s	            r9   _test_should_merge_3_dicts_into_new_dict_using_additive_strategy_on_lists_and_only_mutate_targetzntest_mergedeep.test_should_merge_3_dicts_into_new_dict_using_additive_strategy_on_lists_and_only_mutate_target       b)b	:c1X&#	
 a/AYG!b	"C!r
#!asAh2GH!r1aX->->?*F#F#F#r;   c                    dddddidddd	did
h dd}dddiidddih dd}t        |      }dddiiddh dd}t        |      }dddiiddd	did
d}t        |      }t        i |||t        j                        }| j	                  ||       | j	                  ||       | j	                  ||       | j	                  ||       y )Nr
   r   r   r   r   r   r   r   r   r   >   r   r   r   r   r
   r   rJ   r   r   r      r   r   r   r   >   r   r
   r   r   rK   r.   rL   r2   s	            r9   ^test_should_merge_3_dicts_into_new_dict_using_additive_strategy_on_sets_and_only_mutate_targetzmtest_mergedeep.test_should_merge_3_dicts_into_new_dict_using_additive_strategy_on_sets_and_only_mutate_target   rO   r;   c                    dddddidddd	did
dd}dddiidddidd}t        |      }dddiidddd}t        |      }dddiiddd	did
d}t        |      }t        i |||t        j                        }| j	                  ||       | j	                  ||       | j	                  ||       | j	                  ||       y rH   rL   r2   s	            r9   `test_should_merge_3_dicts_into_new_dict_using_additive_strategy_on_tuples_and_only_mutate_targetzotest_mergedeep.test_should_merge_3_dicts_into_new_dict_using_additive_strategy_on_tuples_and_only_mutate_target   s    b)b	:c1X&#	
 a/AYG!b	"C!r
#!asAh2GH!r1aX->->?*F#F#F#r;   c           
         dddddidddd	did
t        dddd      dt        ddi      t        ddi      d}dddiidddit        ddd      t        d	di      t        ddd      d}t        |      }dddiiddt        ddd      g dt        ddi      d}t        |      }dddiiddd	did
dt        ddi      t        ddi      d}t        |      }t        i |||t        j                        }| j                  ||       | j                  ||       | j                  ||       | j                  ||       y )Nr
   r   r   r   r   r   r   r   r   r   r   )r   r   r   r!   r   r   )r   r"   r#   r   r&   r'   r!   r   r   r,   	   )r   r!   )r   r"   r#   r   r&   r'   r   r*   r(   )r   r"   r#   r   r'   r!   r   r-   r.   )r   r   r   r   rM   r1   r2   s	            r9   btest_should_merge_3_dicts_into_new_dict_using_additive_strategy_on_counters_and_only_mutate_targetzqtest_mergedeep.test_should_merge_3_dicts_into_new_dict_using_additive_strategy_on_counters_and_only_mutate_target   s   b)b	:c1X&qqq12#q"#q"
 QxQqq)*#q"qq)*
 ! Ry!qq)*#q"
 ! bz"c1X&#q"#q"
 !r1aX->->?*F#F#F#r;   c                    d}d}d|i}d|i}t        ||g      t        ||f      d}|g|fd}|g|fd}t        i ||t        j                        }||d<   ||d<   | j	                  ||       | j	                  |d   d   d   |       | j	                  |d   d   d   |       | j	                  |d	   d   d   |       | j	                  |d	   d   d   |       | j	                  |d   d   d   |       | j	                  |d   d   d   |       | j	                  |d	   d   d   |       | j	                  |d	   d   d   |       y )
Nr   c   key1key2)listtupler.   r\   r   r]   rL   )	r3   beforeaftero1o2r4   r   r   r8   s	            r9   test_should_not_copy_referencesz.test_mergedeep.test_should_not_copy_references   s   ff$b"X.2r(9KLTRE*TRE*r1a(*;*;<6
6
* 	*62F;*62F;+F3V<+F3V< 	61f-u561f-u57Av.67Av.6r;   c                     dddiidddig dd}d	d
diiddg dd}dddiiddddidd}| j                  t              5  t        i |||t        j                         d d d        y # 1 sw Y   y xY wNr   r   r
   r   r   r   r(   rJ   r   r   r   r   r   r   r   r   rK   r.   )assertRaises	TypeErrorr   r   TYPESAFEr3   r   r   r   s       r9   Ctest_should_raise_TypeError_using_typesafe_strategy_if_types_differzRtest_mergedeep.test_should_raise_TypeError_using_typesafe_strategy_if_types_differ  s    a/AYGb	"Cr
#!asAh2GHy) 	;"aA(9(9:	; 	; 	;   A))A2c                     dddiidddig dd}d	d
diiddg dd}dddiiddddidd}| j                  t              5  t        i |||t        j                         d d d        y # 1 sw Y   y xY wrd   )re   rf   r   r   TYPESAFE_REPLACErh   s       r9   Ktest_should_raise_TypeError_using_typesafe_replace_strategy_if_types_differzZtest_mergedeep.test_should_raise_TypeError_using_typesafe_replace_strategy_if_types_differ#  s    a/AYGb	"Cr
#!asAh2GHy) 	C"aA(A(AB	C 	C 	Crj   c                    dddddiddg dh d	d
t        dddd      d}dddiidg dh dt        ddd      d}t        |      }dddiidg dh d	dd}t        |      }dddiidd
t        ddd      d}t        |      }t        i |||t        j                        }| j                  ||       | j                  ||       | j                  ||       | j                  ||       y Nr
   r   r   r   r   r   r   r      r   r   r   r   r   r   r    r   r"   r   r$   r%   r!   r   r   r(   rQ   r*   r   r"   r   r$   r!   r   r   r   r   r"   r   r$   r%   r   r,   r   r"   r%   r!   r.   )r   r   r   r   rg   r1   r2   s	            r9   ntest_should_merge_3_dicts_into_new_dict_using_typesafe_strategy_and_only_mutate_target_if_types_are_compatiblez}test_mergedeep.test_should_merge_3_dicts_into_new_dict_using_typesafe_strategy_and_only_mutate_target_if_types_are_compatible+  s    b)b	:qqq12
 a/		PW^_fgXhPij!b	"QUV!r
#!&wQUVGW?XY!r1aX->->?*F#F#F#r;   c                    dddddiddg dh d	d
t        dddd      d}dddiidg dh dt        ddd      d}t        |      }dddiidg dh d	dd}t        |      }dddiidd
t        ddd      d}t        |      }t        i |||t        j                        }| j                  ||       | j                  ||       | j                  ||       | j                  ||       y ro   )r   r   r   r   rl   r1   r2   s	            r9   vtest_should_merge_3_dicts_into_new_dict_using_typesafe_replace_strategy_and_only_mutate_target_if_types_are_compatibleztest_mergedeep.test_should_merge_3_dicts_into_new_dict_using_typesafe_replace_strategy_and_only_mutate_target_if_types_are_compatibleG  s    b)b	:qqq12
 a/		PW^_fgXhPij!b	"QUV!r
#!&wQUVGW?XY!r1aX-F-FG*F#F#F#r;   c                     dddiidddig dd}d	d
diiddg dd}dddiiddddidd}| j                  t              5  t        i |||t        j                         d d d        y # 1 sw Y   y xY wrd   )re   rf   r   r   TYPESAFE_ADDITIVErh   s       r9   Ltest_should_raise_TypeError_using_typesafe_additive_strategy_if_types_differz[test_mergedeep.test_should_raise_TypeError_using_typesafe_additive_strategy_if_types_differg  s    a/AYGb	"Cr
#!asAh2GHy) 	D"aA(B(BC	D 	D 	Drj   c                    dddddiddg dh d	d
t        dddd      d}dddiidg dh dt        ddd      d}t        |      }dddiidg dh ddd}t        |      }dddiiddt        ddd      d}t        |      }t        i |||t        j                        }| j                  ||       | j                  ||       | j                  ||       | j                  ||       y )Nr
   r   r   r   r   r   r   rI   >   r   r   r   r   )r   r   r   r   r   r    rr   r   r   r(   rQ   r*   rs   r   r   rp   rt   ru   r   rq   r,   rv   r.   )r   r   r   r   r{   r1   r2   s	            r9   wtest_should_merge_3_dicts_into_new_dict_using_typesafe_additive_strategy_and_only_mutate_target_if_types_are_compatibleztest_mergedeep.test_should_merge_3_dicts_into_new_dict_using_typesafe_additive_strategy_and_only_mutate_target_if_types_are_compatibleo  s    b)b	:#qqq12
 a/		PW^_fgXhPij!b	"QUV!r
#!&wQUVGW?XY!r1aX-G-GH*F#F#F#r;   N)__name__
__module____qualname____doc__r:   r>   rF   rN   rR   rT   rW   rb   ri   rm   rw   ry   r|   r~    r;   r9   r   r   
   sS    #3$j+$ZU$0$0$0.$`7H;C$8$@D$r;   r   __main__)r   r@   unittestcollectionsr   copyr   	mergedeepr   r   TestCaser   r   mainr   r;   r9   <module>r      sF         %$X&& $D zHMMO r;   