
    Og                        d dl Z d dlZd dlZd dlZd dlZd dlmZ d dlmZ d dl	m
Z
 d dlmZ d dlmZmZmZmZ  ej$                  d      d	        Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zed        Zd Zej@                  jC                  e
dk  dd      Z"e"d        Z#ej@                  jC                  e
dk  xr e
dk  xr ejH                  dk(   d      d        Z%y)     N)wktPoint)geos_version)shapely20_todo)dumpdumpsloadloadsmodule)scopec                      t        dd      S )N333333?333333@r        b/var/www/html/public_html/myphp/venv/lib/python3.12/site-packages/shapely/tests/legacy/test_wkb.py
some_pointr      s    c?r   c                 f    t        j                  |       j                         j                  d      S )Nzutf-8)binasciib2a_hexupperdecodevalues    r   bin2hexr      s'    E"((*11'::r   c                 ,    t        j                  |       S N)r   a2b_hexr   s    r   hex2binr       s    E""r   c                    | r| d   dv rt        d      | r| d   dvrt        d      t        j                  | d   t        |dd             \  }dd	d
|   }d	ddt        j
                     }||k(  r|S t        t        j                  || z   ddd|   gt        j                  || z   t        |            dd        S )ab  Re-pack a hex WKB value to native endianness if needed

    This routine does not understand WKB format, so it must be provided a
    struct module format string, without initial indicator character ("@=<>!"),
    which will be interpreted as big- or little-endian with standard sizes
    depending on the endian flag in the first byte of the value.
    r   z@=<>!z1Initial indicator character, one of @=<>!, in fmtcbBzMissing endian flag in fmtN   ><)r      )littlebigr&   )r$   r%   )
ValueErrorstructunpackr    sys	byteorderr   pack)fmtr   	hexendianhexordersysorders        r   	hostorderr3      s     s1v LMM#a&%566==Qr);<LY3	*Hc*3==9H8sN!X&	
 ]]8c>75>:12>	
 r   c                     t        |       }t        |      t        dd      k(  sJ t        | d      }t        |      t        dd      k(  sJ y )NBIdd*0101000000333333333333F33F3333333333330B40i  sridBIIdd20101000020E6100000333333333333F33F3333333333330B40r	   r   r3   r   results     r   test_dumps_sridr>   9   s`    :F6?i<    :D)F6?iE   r   c                     t        |       }t        |      t        dd      k(  sJ t        | d      }t        |      dk(  sJ t        | d      }t        |      dk(  sJ y )Nr5   r6   F
big_endianT*00000000013FF3333333333333400B333333333333r;   r<   s     r   test_dumps_endiannessrC   D   so    :F6?i<    :%0F6?JJJJ:$/F6?JJJJr   c                 @    t        | d      }|t        dd      k(  sJ y )NThexr5   r6   )r	   r3   r<   s     r   test_dumps_hexrG   O   s$    :4(FYv'STTTTr   c                  `   t        t        d            } t        | t              sJ | j                  d d  dgk(  sJ t        |       }t        |      t        dd      k(  sJ t        | d      }t        |      t        dd      k(  sJ t        | d	      }t        |      t        dd
      k(  sJ y )Nr:   )r   r   r5   r6   T)include_sridr9   i4l  r7   20101000020346C0000333333333333F33F3333333333330B40)r   r    
isinstancer   coordsr	   r   r3   )geomr=   s     r   test_loads_sridrN   T   s    MNODdE""";;q>j\)))4[F6?i<    4d+F6?iE    4e$F6?iE   r   c                 >    t        t        | d      d      | k(  sJ y )NTrE   )r   r	   )r   s    r   test_loads_hexrP   j   s    zt,$7:EEEr   c                     |j                  d      }t        |d      5 }t        | |       d d d        t        |d      5 }t        |      }d d d        | k(  sJ y # 1 sw Y   1xY w# 1 sw Y   xY w)Ntest.wkbwbrbjoinopenr   r
   r   tmpdirfilefile_pointerrestoreds        r   test_dump_load_binaryr]   n   sv    ;;z"D	dD	 '\Z&'	dD	 &\%& !!!' '& &s   AA'A$'A0c                     |j                  d      }t        |d      5 }t        | |d       d d d        t        |d      5 }t        |d      }d d d        | k(  sJ y # 1 sw Y   3xY w# 1 sw Y   xY w)NrR   wTrE   rrU   rX   s        r   test_dump_load_hexra   x   sx    ;;z"D	dC 1LZ401	dC 0L$/0 !!!1 10 0s   AA+A(+A4c                 8   |j                  d      }t        |d      5 }t        | |d       ddd       t        j                  t
              5  t        |d      5 }t        |       ddd       ddd       y# 1 sw Y   LxY w# 1 sw Y   xY w# 1 sw Y   yxY w)z<Asserts that reading a binary file as text (hex mode) fails.rR   r_   TrE   NrT   )rV   rW   r   pytestraises	TypeErrorr
   )r   rY   rZ   r[   s       r   test_dump_hex_load_binaryrf      s     ;;z"D	dC 1LZ401 
y	! $ 		 1 1	 	 s/   A8BB'B8BB		BBc                    |j                  d      }t        |d      5 }t        | |       ddd       t        j                  dk(  r*t        |d      5 }t        |d      }ddd       | k7  sJ yt        j                  t        t        f      5  t        |d      5 }t        |d       ddd       ddd       y# 1 sw Y   xY w# 1 sw Y   hxY w# 1 sw Y   *xY w# 1 sw Y   yxY w)z<Asserts that reading a text file (hex mode) as binary fails.rR   rS   Nwin32r`   TrE   )
rV   rW   r   r,   platformr
   rc   rd   UnicodeEncodeErrorUnicodeDecodeErrorrX   s        r   test_dump_binary_load_hexrl      s    ;;z"D	dD	 '\Z&'
 ||w$_ 	4Ld3H	4X%%%	*,>?	@ )$_ 	)4(	)) )' '	4 	4	) 	)) )s;   B;CCC*C;CCC	CC()      r   zGEOS >= 3.8.0 is requiredT)reasonstrictc                      t        j                  d      } t        | d      }|d d dk(  sJ t        j                  d|dd        }t        |      dk(  sJ t        d |D              sJ y )	NzPOINT EMPTYFr@   is      z<2dr#   c              3   F   K   | ]  }t        j                  |        y wr   )mathisnan).0vals     r   	<genexpr>z#test_point_empty.<locals>.<genexpr>   s     13tzz#1s   !)r   r   r	   r*   r+   lenall)gr=   rL   s      r   test_point_emptyr{      sq    		- A1'F (F6666]]5&"23Fv;!1&1111r   )rm   	   r   darwinzGEOS >= 3.9.0 is required)ro   c                  d    t        j                  d      } | j                  t        dd      k(  sJ y )NzPOINT Z EMPTYBIddd:0101000080000000000000F87F000000000000F87F000000000000F87F)r   r   wkb_hexr3   )rz   s    r   test_point_z_emptyr      s5     			/"A99	M   r   )&r   rs   r*   r,   rc   shapelyr   shapely.geometryr   shapely.geosr   shapely.tests.legacy.conftestr   shapely.wkbr   r	   r
   r   fixturer   r   r    r3   r>   rC   rG   rN   rP   r]   ra   rf   rl   markxfailrequires_geos_380r{   ri   r   r   r   r   <module>r      s"      
   " % 8 0 0 h  ;#:KU
,F""  )& KK%%9%@ &  
 2 2 y  	H	)Fcllh.FG&  r   