
    \j                     v    d dl mZ d dlmZmZ d dl d dl d dl d dlZd dl	Z	de
dedefdZ G d	 d
      Zy)    )Context)_bucket_context_variation_index_for_context)*Nclausecontextshould_matchc                 :    t        t        t        |       ||       y )N)assert_matchbasic_evaluatormake_boolean_flag_with_clauses)r   r   r	   s      O/root/env/lib/python3.12/site-packages/testing/impl/test_evaluator_bucketing.pyassert_match_clauser      s    "@"H'S_`    c                   B    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zy
)TestEvaluatorBucketingc           
         t        j                  d      }t        d      j                  d      j	                         }t        j                  t        d |d |j                  |j                  d       dz        }|dkD  r|dk  sJ d}d}d}t        dd	||d
|dd
|d|dz   z
  d
gii      }t        |||      }||dfk(  sJ y )Nuserkeykeysalt順 r         rollout
variations	variationweightFr   createFlagBuilderr   buildmathtruncr   r   VariationOrRolloutr   )	selfuserflagbucket_valuebad_variation_amatched_variationbad_variation_bruleresult_variations	            r   +test_variation_index_is_returned_for_bucketzBTestEvaluatorBucketing.test_variation_index_is_returned_for_bucket   s    ~~i(5!&&v.446 zz/$dDHHdiiY]"^ag"ghaL6$999!#2lL#4C#2fWXHX>Y[#
  8dDI$5u#====r   c           
      @   t        j                  d      }t        d      j                  d      j	                         }t        j                  t        d |d |j                  |j                  d       dz        }t        ddd|dgii      }t        |||      }|d	k(  sJ y )
Nr   r   r   r   r   r   r   r   )r   Fr   )r&   r'   r(   r)   r-   r.   s         r   <test_last_bucket_is_used_if_bucket_value_equals_total_weightzSTestEvaluatorBucketing.test_last_bucket_is_used_if_bucket_value_equals_total_weight)   s    ~~i(5!&&v.446 zz/$dDHHdiiY]"^ag"gh!#$>#
  8dDI:---r   c                 ~   t        j                  d      }t        d |d ddd       }|t        j                  d      k(  sJ t        j                  d      }t        d |d ddd       }|t        j                  d      k(  sJ t        j                  d      }t        d |d ddd       }|t        j                  d      k(  sJ y )	NuserKeyAhashKeysaltyAg#[?userKeyBgBFw?userKeyCgw2<uz?r   r    r   pytestapproxr&   r'   buckets      r   test_bucket_by_user_keyz.TestEvaluatorBucketing.test_bucket_by_user_key:   s    ~~j) tT9hMz2222~~j) tT9hMy1111~~j) tT9hMz2222r   c                    d}t        j                  d      }t        ||d ddd       }|t        j                  d      k(  sJ t        j                  d      }t        ||d ddd       }|t        j                  d      k(  sJ t        j                  d      }t        ||d ddd       }|t        j                  d	      k(  sJ y )
N=   r3   r4   r5   g0eCQ?r6   gF?r7   gnKN?r8   )r&   seedr'   points       r   !test_bucket_by_user_key_with_seedz8TestEvaluatorBucketing.test_bucket_by_user_key_with_seedG   s    ~~j)dD)XtLj1111~~j)dD)XtLj1111~~j)dD)XtLi0000r   c           
      X   t        j                  d      j                  dd      j                  dd      j                         }t	        d |d ddt
        j                  d            }|t        j                  d      k(  sJ t	        d |d ddt
        j                  d            }||k(  sJ y )	NuserKeyintAttri5  
stringAttr33333r4   r5   g,߆?)	r   buildersetr"   r   AttributeReffrom_literalr9   r:   )r&   r'   r<   bucket2s       r   test_bucket_by_int_attrz.TestEvaluatorBucketing.test_bucket_by_int_attrU   s    y)--i?CCLRYZ``b tT9hHaHabkHlmz2222!$dIxIbIbcoIpq&   r   c           
          t        j                  d      j                  dd      j                         }t	        d |d ddt
        j                  d            }|dk(  sJ y )NrD   	floatAttrg     @@r4   r5   g        )r   rH   rI   r"   r   rJ   rK   r;   s      r   %test_bucket_by_float_attr_not_allowedz<TestEvaluatorBucketing.test_bucket_by_float_attr_not_allowed\   sR    y)--k4@FFH tT9hHaHabmHno}}r   c                     d}t        j                  d      }t        ||d ddd       }t        ||d ddd       }t        ||d ddd       }||k(  sJ ||k(  sJ y )Nr?   r3   r4   r5   saltyBhashKey2r   r    r   )r&   r@   r'   point1point2point3s         r   )test_seed_independent_of_salt_and_hashKeyz@TestEvaluatorBucketing.test_seed_independent_of_salt_and_hashKeya   sm    ~~j) tT9hM tT9hM tT:xNr   c                     d}t        j                  d      }t        ||d ddd       }d}t        ||d ddd       }||k7  sJ y )Nr?   r3   r4   r5   >   rR   rT   )r&   seed1r'   rU   seed2rV   s         r   !test_seed_changes_hash_evaluationz8TestEvaluatorBucketing.test_seed_changes_hash_evaluationk   sP    ~~j) dIxN dIxNr   c           	         d}t        j                  d      }t        j                  dd      }t        j                  ||      }d}d}t        ||d ||d       t        ||d||d       k(  sJ t        ||d ||d       t        ||d||d       k(  sJ t        ||d||d       t        ||d||d       k(  sJ t        ||d||d       t        ||d||d       k7  sJ y )Nie  key1key2kind2zflag-key
testing123r'   )r   r    create_multir   )r&   r@   context1context2multir   r   s          r   !test_context_kind_selects_contextz8TestEvaluatorBucketing.test_context_kind_selects_contextt   s   >>&)>>&'2$$Xx8tXtS$ED(FCtDE 	E EtXtS$ED%dDAB 	B BtXwT4HD%#tTBC 	C CtUFCtDD%#tTBC 	C Cr   N)__name__
__module____qualname__r/   r1   r=   rB   rM   rP   rX   r]   rg    r   r   r   r      s0    >0."31!
  Cr   r   )ldclient.clientr   ldclient.impl.evaluatorr   r   ldclient.impl.modeltesting.builderstesting.impl.evaluator_utilr#   r9   dictboolr   r   rk   r   r   <module>rs      sF    # Q !  )  a aw ad asC sCr   