B
    >¶†\¢  ã               @   s@   d Z ddlmZ ddlmZ ddlmZmZ G dd„ deƒZ	dS )z2
Tests for dict duplicate keys Pyflakes behavior.
é    )Úversion_info)Úmessages)ÚTestCaseÚskipIfc               @   s  e Zd Zdd„ Zeedk dƒdd„ ƒZeedk dƒdd„ ƒZeedkd	ƒd
d„ ƒZeedkd	ƒ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 d!„ Zd"d#„ Zd$d%„ Zd&d'„ Zd(d)„ Zd*d+„ Zd,d-„ Zd.d/„ Zd0d1„ Zd2d3„ Zd4d5„ Zd6d7„ Zd8d9„ Zd:S );ÚTestc             C   s   |   dtjtj¡ d S )Nz{'yes': 1, 'yes': 2})ÚflakesÚmÚMultiValueRepeatedKeyLiteral)Úself© r   ú6lib/python3.7/site-packages/pyflakes/test/test_dict.pyÚtest_duplicate_keys   s    zTest.test_duplicate_keys)é   z<bytes and strings with same 'value' are not equal in python3c             C   s   |   d¡ d S )Nz{b'a': 1, u'a': 2})r   )r
   r   r   r   Ú(test_duplicate_keys_bytes_vs_unicode_py3   s    z-Test.test_duplicate_keys_bytes_vs_unicode_py3c             C   s   |   dtjtj¡ d S )Nz{1: b'a', 1: u'a'})r   r   r	   )r
   r   r   r   Ú*test_duplicate_values_bytes_vs_unicode_py3   s    z/Test.test_duplicate_values_bytes_vs_unicode_py3z8bytes and strings with same 'value' are equal in python2c             C   s   |   dtjtj¡ d S )Nz{b'a': 1, u'a': 2})r   r   r	   )r
   r   r   r   Ú(test_duplicate_keys_bytes_vs_unicode_py2"   s    z-Test.test_duplicate_keys_bytes_vs_unicode_py2c             C   s   |   d¡ d S )Nz{1: b'a', 1: u'a'})r   )r
   r   r   r   Ú*test_duplicate_values_bytes_vs_unicode_py2+   s    z/Test.test_duplicate_values_bytes_vs_unicode_py2c             C   s   |   dtjtjtjtj¡ d S )Nz&{'yes': 1, 'yes': 2, 'no': 2, 'no': 3})r   r   r	   )r
   r   r   r   Útest_multiple_duplicate_keys0   s    z!Test.test_multiple_duplicate_keysc             C   s   |   dtjtj¡ d S )Nz`
            def f(thing):
                pass
            f({'yes': 1, 'yes': 2})
            )r   r   r	   )r
   r   r   r   Útest_duplicate_keys_in_function9   s    z$Test.test_duplicate_keys_in_functionc             C   s   |   dtjtj¡ d S )Nzlambda x: {(0,1): 1, (0,1): 2})r   r   r	   )r
   r   r   r   Útest_duplicate_keys_in_lambdaD   s    z"Test.test_duplicate_keys_in_lambdac             C   s   |   dtjtj¡ d S )Nz{(0,1): 1, (0,1): 2})r   r   r	   )r
   r   r   r   Útest_duplicate_keys_tuplesK   s    zTest.test_duplicate_keys_tuplesc             C   s   |   dtjtj¡ d S )Nz{(0,1): 1, (0,1.0): 2})r   r   r	   )r
   r   r   r   Ú(test_duplicate_keys_tuples_int_and_floatR   s    z-Test.test_duplicate_keys_tuples_int_and_floatc             C   s   |   dtjtj¡ d S )Nz{1: 1, 1: 2})r   r   r	   )r
   r   r   r   Útest_duplicate_keys_intsY   s    zTest.test_duplicate_keys_intsc             C   s   |   dtjtj¡ d S )Nz{True: 1, True: 2})r   r   r	   )r
   r   r   r   Útest_duplicate_keys_bools`   s    zTest.test_duplicate_keys_boolsc             C   s   |   dtjtj¡ d S )Nz{False: 1, False: 2})r   r   r	   )r
   r   r   r   Útest_duplicate_keys_bools_falseg   s    z$Test.test_duplicate_keys_bools_falsec             C   s   |   dtjtj¡ d S )Nz{None: 1, None: 2})r   r   r	   )r
   r   r   r   Útest_duplicate_keys_noneo   s    zTest.test_duplicate_keys_nonec             C   s   |   dtjtj¡ d S )Nz8
            a = 1
            {a: 1, a: 2}
            )r   r   ZMultiValueRepeatedKeyVariable)r
   r   r   r   Útest_duplicate_variable_keysv   s    z!Test.test_duplicate_variable_keysc             C   s   |   dtjtj¡ d S )NzJ
            a = 1
            b = 2
            {1: a, 1: b}
            )r   r   r	   )r
   r   r   r   Útest_duplicate_variable_values€   s    z#Test.test_duplicate_variable_valuesc             C   s   |   dtjtj¡ d S )NzJ
            a = 1
            b = 1
            {1: a, 1: b}
            )r   r   r	   )r
   r   r   r   Ú)test_duplicate_variable_values_same_value‹   s    z.Test.test_duplicate_variable_values_same_valuec             C   s   |   dtjtj¡ dS )zß
        These do look like different values, but when it comes to their use as
        keys, they compare as equal and so are actually duplicates.
        The literal dict {1: 1, 1.0: 1} actually becomes {1.0: 1}.
        z(
            {1: 1, 1.0: 2}
            N)r   r   r	   )r
   r   r   r   Ú test_duplicate_key_float_and_int˜   s    z%Test.test_duplicate_key_float_and_intc             C   s   |   d¡ d S )Nz&
        {'yes': 1, 'yes': 1}
        )r   )r
   r   r   r   Ú&test_no_duplicate_key_error_same_value¦   s    z+Test.test_no_duplicate_key_error_same_valuec             C   s   |   d¡ d S )Nz%
        {'yes': 1, 'no': 2}
        )r   )r
   r   r   r   Útest_no_duplicate_key_errors«   s    z!Test.test_no_duplicate_key_errorsc             C   s   |   d¡ d S )Nz{(0,1): 1, (0,2): 1})r   )r
   r   r   r   Ú0test_no_duplicate_keys_tuples_same_first_element°   s    z5Test.test_no_duplicate_keys_tuples_same_first_elementc             C   s   |   d¡ d S )Nz^
        def test(thing):
            pass
        test({True: 1, None: 2, False: 1})
        )r   )r
   r   r   r   Ú&test_no_duplicate_key_errors_func_call³   s    z+Test.test_no_duplicate_key_errors_func_callc             C   s   |   d¡ d S )Nz{True: 1, None: 2, False: 1})r   )r
   r   r   r   Ú)test_no_duplicate_key_errors_bool_or_noneº   s    z.Test.test_no_duplicate_key_errors_bool_or_nonec             C   s   |   d¡ d S )Nz
        {1: 1, 2: 1}
        )r   )r
   r   r   r   Ú!test_no_duplicate_key_errors_ints½   s    z&Test.test_no_duplicate_key_errors_intsc             C   s   |   d¡ d S )NzN
        test = 'yes'
        rest = 'yes'
        {test: 1, rest: 2}
        )r   )r
   r   r   r   Ú!test_no_duplicate_key_errors_varsÂ   s    z&Test.test_no_duplicate_key_errors_varsc             C   s   |   d¡ d S )Nz&
        {(0,1): 1, (0,2): 1}
        )r   )r
   r   r   r   Ú#test_no_duplicate_key_errors_tuplesÉ   s    z(Test.test_no_duplicate_key_errors_tuplesc             C   s   |   d¡ d S )Nzl
        class Test():
            pass
        f = Test()
        f.a = 1
        {f.a: 1, f.a: 1}
        )r   )r
   r   r   r   Ú0test_no_duplicate_key_errors_instance_attributesÎ   s    z5Test.test_no_duplicate_key_errors_instance_attributesN) Ú__name__Ú
__module__Ú__qualname__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      s>   	
r   N)
Ú__doc__Úsysr   Zpyflakesr   r   Zpyflakes.test.harnessr   r   r   r   r   r   r   Ú<module>   s   