
    %i                     x   S r SSKrSSKJs  Jr  S rS rS r	S r
S rS r\S	:X  a  \" S
5        \" 5         \" S5        \" S5        \" 5         \" S5        \" S5        \	" 5         \" S5        \" S5        \
" 5         \" S5        \" S5        \" 5         \" S5        \" S5        \" 5         \" S5        \" S5        gg)z9Test for DNF/scratched logic fix and distance conversion.    Nc                  r   SSSSS0SSS.SSS	.S
.n U R                  S0 5      nUR                  S5      nSnSnU(       aG  [        U5      R                  5       nUR                  5       (       a  [	        U5      nSnOU(       a  SnSnU R                  SS5      nU(       a  SnSnSocUL ow(       d  [
        R                  " SU4SX645      S[        R                  " 5       ;   d  [
        R                  " U5      (       a  [
        R                  " U5      OS[
        R                  " U5      S.-  n[
        R                  " S5      S-   SU0-  n	[        [
        R                  " U	5      5      eS=pvSodUL ow(       d  [
        R                  " SU4SXF45      S[        R                  " 5       ;   d  [
        R                  " U5      (       a  [
        R                  " U5      OS[
        R                  " U5      S.-  n[
        R                  " S5      S-   SU0-  n	[        [
        R                  " U	5      5      eS=pvg)z9Test that non-numeric placing values are detected as DNF.   z
Test HorseFplacingDNFzTest Driver)driverId
driverNamezTest Trainer)	trainerIdtrainerName)horseId	horseName	scratchedresultdrivertrainerr   NTr   isz%(py0)s is %(py3)spy0py3zDNF should have NULL placing
>assert %(py5)spy5did_not_finishz#DNF should have did_not_finish=Truegetstrstripisdigitint
@pytest_ar_call_reprcompare@py_builtinslocals_should_repr_global_name	_saferepr_format_assertmsgAssertionError_format_explanation)
runner_data_dnfr   placing_strr   r   r   @py_assert2@py_assert1@py_format4@py_format6s
             7/root/tipsharks/tipsharks-elo-api/tests/test_dnf_fix.pytest_dnf_detection_from_placingr0      s    !e$ >!">BO   2.F**Y'KGN+&,,.  +&G"NG!N##K7I:d?::::7::::::7::::7:::d:::::::::::!HT!HHHH>HHHHHH>HHHH>HHHTHHHH#HHHHHHH    c                  ^   SSS0 S.n U R                  S0 5      nUR                  S5      nSnSnU(       aG  [        U5      R                  5       nUR                  5       (       a  [	        U5      nSnOU(       a  SnSnU R                  S	S5      nU(       a  SnSnSocUL ow(       d  [
        R                  " S
U4SX645      S[        R                  " 5       ;   d  [
        R                  " U5      (       a  [
        R                  " U5      OS[
        R                  " U5      S.-  n[
        R                  " S5      S-   SU0-  n	[        [
        R                  " U	5      5      eS=pvSnXFL ow(       d  [
        R                  " S
U4SXF45      S[        R                  " 5       ;   d  [
        R                  " U5      (       a  [
        R                  " U5      OS[
        R                  " U5      S.-  n[
        R                  " S5      S-   SU0-  n	[        [
        R                  " U	5      5      eS=pvg)z1Test that scratched horses are NOT marked as DNF.   zScratched HorseTr   r   r   r   r   r   NFr   r   r   r   z(Scratched horse should have NULL placingr   r   r   z@Scratched horse should have did_not_finish=False (never started)r   )
runner_data_scratchedr   r*   r   r   r   r+   r,   r-   r.   s
             r/   test_scratched_not_dnfr6   *   s    &	 #&&x4F**Y'KGN+&,,.  +&G"NG!N%))+u=IFd?FFFF7FFFFFF7FFFF7FFFdFFFFFFFFFFFJJ J8I8IJJ JCI6J J1I1IJJ J@I	JJ J@I	JJ J8I8IJIJ J J6I6IJ Jr1   c                  d   SSSSS0S.n U R                  S0 5      nUR                  S5      nSnSnU(       aG  [        U5      R                  5       nUR                  5       (       a  [	        U5      nSnOU(       a  SnS	nU R                  S
S5      nU(       a  SnSnSocU:H  ow(       d  [
        R                  " SU4SX645      S[        R                  " 5       ;   d  [
        R                  " U5      (       a  [
        R                  " U5      OS[
        R                  " U5      S.-  n[
        R                  " S5      S-   SU0-  n	[        [
        R                  " U	5      5      eS=pvSodUL ow(       d  [
        R                  " SU4SXF45      S[        R                  " 5       ;   d  [
        R                  " U5      (       a  [
        R                  " U5      OS[
        R                  " U5      S.-  n[
        R                  " S5      S-   SU0-  n	[        [
        R                  " U	5      5      eS=pvg)z6Test that numeric placing values are parsed correctly.   WinnerFr   1r4   r   NTr   r   ==z%(py0)s == %(py3)sr   zWinner should have placing=1r   r   r   r   r   z)Finisher should have did_not_finish=Falser   )
runner_data_winnerr   r*   r   r   r   r+   r,   r-   r.   s
             r/   test_numeric_placingr?   N   sv    c"	  ##Hb1F**Y'KGN+&,,.  +&G"NG!N"&&{E:I7a<77777777777777777777a77777777777"OU"OOOO>OOOOOO>OOOO>OOOUOOOO$OOOOOOOr1   c                     SSSS.SSS.n U R                  S0 5      n[        U[        5      (       aB  UR                  S5      nUR                  S	S
5      nU(       a  US:X  a  [        US-  5      nOUnOUnSnXE:H  of(       d  [        R
                  " SU4SXE45      S[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      S.-  n[        R                  " SU 35      S-   SU0-  n[        [        R                  " U5      5      eS=peg)z1Test that yard distances are converted to metres.r   Yardsi  unitsdistancePaceMobile
raceNumberrD   raceGait	startTyperD   rC   MetresB?iI  r;   r=   
distance_mr   z.1760 yards should convert to 1609 metres, got r   r   Nr   
isinstancedictr   r    r!   r"   r#   r$   r%   r&   r'   r(   )	race_data_yardsdistance_objdistance_valuerC   rM   r+   r,   r-   r.   s	            r/   test_distance_yards_conversionrT   o   sY    
 O #&&z26L,%%%))*5  (3ew.^f45J'J!
 EE E3D3DEE E>DfE E,D,DEE E;D9EE E;D9EE E3D3DE	7
|DE E E1D1DE Er1   c                     SSSS.SSS.n U R                  S0 5      n[        U[        5      (       aB  UR                  S5      nUR                  S	S5      nU(       a  US
:X  a  [        US-  5      nOUnOUnSoTU:H  of(       d  [        R
                  " SU4SXE45      S[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      S.-  n[        R                  " SU 35      S-   SU0-  n[        [        R                  " U5      5      eS=peg)z,Test that metre distances are not converted.r3   rK   i  rB   TrotStandrG   rD   rC   rA   rL   r;   r=   rM   r   z)2000 metres should stay 2000 metres, got r   r   NrN   )	race_data_metresrR   rS   rC   rM   r+   r,   r-   r.   s	            r/   "test_distance_metres_no_conversionrY      s     
  $''
B7L,%%%))*5  (3ew.^f45J'J!
WWWWW:WWWWWW:WWWW:WWWWWWW!J:,WWWWWWWr1   c                  (   SSSSS0S.n U R                  S0 5      nUR                  S5      nSnSnU(       aG  [        U5      R                  5       nUR                  5       (       a  [	        U5      nSnOU(       a  SnS	nSoSUL of(       d  [
        R                  " S
U4SX545      S[        R                  " 5       ;   d  [
        R                  " U5      (       a  [
        R                  " U5      OS[
        R                  " U5      S.-  n[
        R                  " S5      S-   SU0-  n[        [
        R                  " U5      5      eS=peS	oTUL of(       d  [
        R                  " S
U4SXE45      S[        R                  " 5       ;   d  [
        R                  " U5      (       a  [
        R                  " U5      OS[
        R                  " U5      S.-  n[
        R                  " S5      S-   SU0-  n[        [
        R                  " U5      5      eS=peg)z/Test that DQ (disqualified) is detected as DNF.   zDisqualified HorseFr   DQr4   r   NTr   r   r   zDQ should have NULL placingr   r   r   z"DQ should have did_not_finish=Truer   )	runner_data_dqr   r*   r   r   r+   r,   r-   r.   s	            r/   test_dq_detectionr^      sV    )d#	N "-F**Y'KGN+&,,.  +&G"NG!N9d?99997999999799997999d99999999999!GT!GGGG>GGGGGG>GGGG>GGGTGGGG#GGGGGGGr1   __main__zTesting DNF detection...u   ✓ DNF detection workszTesting scratched logic...u   ✓ Scratched logic workszTesting numeric placing...u   ✓ Numeric placing workszTesting yards conversion...u$   ✓ Yards to metres conversion worksz!Testing metres (no conversion)...u   ✓ Metres stay unchangedzTesting DQ detection...u   ✓ DQ detection worksu   
All tests passed! ✓)__doc__builtinsr"   _pytest.assertion.rewrite	assertionrewriter    r0   r6   r?   rT   rY   r^   __name__print r1   r/   <module>rh      s    ?   #IL!JHPBE<X6H8 z	
$%#%	
#$	
&'	
%&	
&'	
%&	
'("$	
01	
-.&(	
%&	
#$	
"#	
#$5 r1   