
    i                       d dl Z d dlZd dlZd dlmZmZ d dlZd dlmZm	Z	 d ej                         k(  Z G d dej                        Z G d dej                        Z G d	 d
ej                        Zedk(  r ej"                          yy)    N)
CollectionSequence)Vector2Vector3PyPyc                       e Zd ZdZd Zd Zy)MathModuleTestzMath module tests.c                    t         j                  j                  ddd      }| j                  |d       t         j                  j                  ddd      }| j                  |d       t         j                  j                  ddd      }| j                  |d       | j	                  t
        t         j                  j                  d	       | j	                  t
        t         j                  j                  d
d
d
       | j	                  t        t         j                  j                  ddd       | j	                  t        t         j                  j                  ddd       y )N
   d         ?g     K@              $@      ?g      Y@   str皙?g      )pygamemathlerpassertAlmostEqualassertRaises	TypeError
ValueErrorselfresults     `/home/obispo/Crisostomo_bridge/mision_env/lib/python3.12/site-packages/pygame/tests/math_test.py	test_lerpzMathModuleTest.test_lerp   s    !!"c3/vt,!!"c3/vt,!!"c3/vu- 	)V[[%5%5q9 	)V[[%5%5ueUK 	*fkk&6&6CE*fkk&6&6CF    c                    t         j                  j                  ddd      }| j                  |d       t         j                  j                  ddd      }| j                  |d       t         j                  j                  ddd      }| j                  |d       t         j                  j                  ddd      }| j                  |d       t         j                  j                  ddd      }| j                  |d       t         j                  j                  ddd      }| j	                  |d       t         j                  j                  d	dd      }| j	                  |d       t         j                  j                  ddd      }| j	                  |d       t         j                  j                  ddd      }| j	                  |d       t         j                  j                  d
dd      }| j	                  |d
       | j                  t        t         j                  j                  d       | j                  t        t         j                  j                  ddd       y)zTest clamp function.r   r         r   Q?      @      $      @hellopythonN)r   r   clampassertEqualr   r   r   r   s     r   
test_clampzMathModuleTest.test_clamp#   s   
 ""2q!,#""31-#""1a+#""1a+#""1a+# ""4s3vs+""5$4vt,""3c2vs+""4s3vt,""3c2vs+ 	)V[[%6%6;)V[[%6%6vNr    N)__name__
__module____qualname____doc__r   r.    r    r   r	   r	      s    G()Or    r	   c                      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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!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. Z0d/ Z1d0 Z2d1 Z3d2 Z4d3 Z5d4 Z6d5 Z7d6 Z8d7 Z9d8 Z:d9 Z;d: Z<d; Z=d< Z>d= Z?d> Z@d? ZAd@ ZBdA ZCdB ZDdC ZEdD ZFdE ZGdF ZHyG)HVector2TypeTestc                 n   t               | _        t        dd      | _        t        dd      | _        d| _        t        | j                        | _        t        | j                        | _        d| _        t        | j                        | _	        t        | j                        | _
        d| _        d| _        y )Nr   r   333333?333333@)ffffff@333333@r:   r;   )r   zeroVece1e2t1listl1v1t2l2v2s1s2r   s    r   setUpzVector2TypeTest.setUpP   s    y!Q-!Q-tww-$''"tww-$''"r    c                     t               }| j                  |j                  d       | j                  |j                  d       y Nr   r   r-   xyr   vs     r   testConstructionDefaultz'Vector2TypeTest.testConstructionDefault]   s1    Ic"c"r    c                     t        d      }| j                  |j                  d       | j                  |j                  d       y Nr   r   rL   rO   s     r   testConstructionScalarz&Vector2TypeTest.testConstructionScalarb   s3    AJc"c"r    c                     t        d      }| j                  |j                  d       | j                  |j                  d       y Nr   )rM   r   rL   rO   s     r   testConstructionScalarKeywordsz.Vector2TypeTest.testConstructionScalarKeywordsg   s3    aLc"c"r    c                     t        dd      }| j                  |j                  d       | j                  |j                  d       y )Nr      rM   rN   r          @rL   rO   s     r   testConstructionKeywordsz(Vector2TypeTest.testConstructionKeywordsl   s6    a1c"c"r    c                     t        dd      }| j                  |j                  d       | j                  |j                  d       y Nr8   r9   rL   rO   s     r   testConstructionXYz"Vector2TypeTest.testConstructionXYq   s6    Cc"c"r    c                     t        d      }| j                  |j                  d       | j                  |j                  d       y )Nr7   r8   r9   rL   rO   s     r   testConstructionTuplez%Vector2TypeTest.testConstructionTuplev   s4    Jc"c"r    c                     t        ddg      }| j                  |j                  d       | j                  |j                  d       y r^   rL   rO   s     r   testConstructionListz$Vector2TypeTest.testConstructionList{   s8    S#Jc"c"r    c                     t        t        dd            }| j                  |j                  d       | j                  |j                  d       y r^   rL   rO   s     r   testConstructionVector2z'Vector2TypeTest.testConstructionVector2   s;    GC%&c"c"r    c                 ~   | j                   j                  }| j                  || j                   j                         | j                  || j                   d          | j                   j                  }| j                  || j                   j                         | j                  || j                   d          d| j                   _        | j                  | j                   j                  d       d| j                   _        | j                  | j                   j                  d       d }| j	                  t
        |       y )Nr   r   T㥛 	@c                  &    t               } d| _        y Nspamr   rM   rP   s    r   assign_nonfloatz<Vector2TypeTest.testAttributeAccess.<locals>.assign_nonfloat       	AACr    )rB   rM   r-   rN   r   r   r   tmprm   s      r   testAttributeAccessz#Vector2TypeTest.testAttributeAccess   s    ggiidggii(dggaj)ggiidggii(dggaj)	E*	E*	 	)_5r    c           
      N   | j                  t        t        j                  dd            t        j                  dd             | j                  t	        t        t        j                  dd                  t        j                         | j                  t        t        j                  dd            t        t        j                  dd                   | j                  t        t        j                  dd            t        t        j                  dd                   | j                  t        t        j                  dd            t        j                  dd             | j                  t        t        j                  dd            t        j                  dd             | j                  t        t        j                  dd            t        j                  dd             | j                  t        t        j                  dd            t        j                  dd             | j                  t        t        j                  dd            t        j                  dd             | j                  t        t        j                  d	d	            t        j                  d	d	             | j                  t        t        j                  d
d
            t        j                  dd             | j                  t        t        j                  dd            t        j                  dd             | j                  t        t        j                  dd            t        j                  dd             | j                  t        t        j                  dd            t        j                  dd             | j                  t        t        j                  dd            t        j                  dd             | j                  t        t        j                  dd            t        j                  dd             | j                  t        t        j                  dd            t        j                  dd             | j                  t        t        j                  dd            t        j                  dd             | j                  t        t        j                  dd            t        j                  dd             | j                  t        t        j                  dd            t        j                  dd             | j                  t        t        j                  dd            t        j                  dd             | j                  t        t        j                  dd            t        j                  dd             | j                  t        t        j                  dd            t        j                  dd             | j                  t        t        j                  dd      d      t        j                  dd             | j                  t	        t        t        j                  dd      d            t        j                         | j                  t	        t        t        j                  dd      d            t        j                         | j                  t	        t        t        j                  dd      d            t        j                         | j                  t        t        j                  dd            t        j                  dd             | j                  t        t        j                  dd            t        j                  dd             | j                  t        t        j                  dd            t        j                  d d              | j                  t        t        j                  d!d!            t        j                  d"d"             | j                  t        t        j                  d#d#            t        j                  d$d$             | j                  t        t        j                  d%d%            t        j                  d"d"             | j                  t        t        t        j                  dd      d&       | j                  t        t        t        j                  dd      d'       y (Nr   r   r   g    eAg@xDg      r'   g    eg@xg?r   g333333$@g eA皙g333333$g eg?g#@g33dAgg#g33dg       r   r   g      @   g@r&   r:         @g      iggffffffg      ?a)r-   roundr   r   typer   r   rH   s    r   test___round___basicz$Vector2TypeTest.test___round___basic   s#   v~~c378&..c:RSeFNN3$<=>O&..c*+U6>>#s3K-L	
 	&..t,-uV^^D$5O/P	
 	&..|<=NN<6	
 	v~~dD9:FNN4QU<VWv~~dD9:FNN4QU<VW&.../u1M	
 	&..>?NN=-8	
 	&.../u1M	
 	v~~c378&..c:RSv~~c378&..c:RSv~~dD9:FNN4QU<VW&..|<=NN<6	

 	v~~dD9:FNN4QU<VW&.../u1M	
 	&..>?NN=-8	

 	v~~c378&..c:RSv~~c378&..t:TU&..k:;NN<6	

 	v~~dD9:FNN4QU<VW&..t,-v~~eU/K	
 	&..|<=NN=-8	

 	&..t,b16>>%3O	
 	eFNN4$>CDfnnUeFNN4$>BCV^^TeFNN4$>BCV^^T 	v~~c378&..A:NOv~~c378&..c:RSv~~c378&..c:RSv~~dD9:FNN2r<RSv~~dD9:FNN2r<RSv~~dD9:FNN2r<RS)UFNN3,DcJ)UFNN3,DcJr    c                     t        dd      }|j                         }| j                  |j                  |j                         | j                  |j                  |j                         y )N     P@g     @)r   copyr-   rM   rN   r   v_copy0v_copy1s      r   testCopyzVector2TypeTest.testCopy   sI    &&),,.GII.GII.r    c                 ,   t        dd      }t        dd      }t        dd      }t        dd      }|j                  |d      }|j                  |d       | j                  t	        |j
                  d      |j
                         | j                  t	        |j                  d      |j                         | j                  t	        |j
                  d      |j
                         | j                  t	        |j                  d      |j                         y )	Ng)\( @gGz[@zG@r~   皙(@     @r$   rY   r   move_towardsmove_towards_ipr-   rz   rM   rN   r   expectedorigintarget	change_ipchanges         r   test_move_towards_basicz'Vector2TypeTest.test_move_towards_basic   s    4)v&'D&)	$$VQ/!!&!,vxx+XZZ8vxx+XZZ8y{{A.

;y{{A.

;r    c                 ,   t        dd      }t        dd      }t        dd      }t        dd      }|j                  |d      }|j                  |d       | j                  t	        |j
                  d      |j
                         | j                  t	        |j                  d      |j                         | j                  t	        |j
                  d      |j
                         | j                  t	        |j                  d      |j                         y )Nr     r   r~   r      rY   r   r   s         r   test_move_towards_max_distancez.Vector2TypeTest.test_move_towards_max_distance   s    5$'v&'D&)	$$VR0!!&"-vxx+XZZ8vxx+XZZ8y{{A.

;y{{A.

;r    c                 ,   t        dd      }t        dd      }t        dd      }t        dd      }|j                  |d      }|j                  |d       | j                  t	        |j
                  d      |j
                         | j                  t	        |j                  d      |j                         | j                  t	        |j
                  d      |j
                         | j                  t	        |j                  d      |j                         y )Nr   r~   r   r   r   rY   r   r   s         r   test_move_nowherez!Vector2TypeTest.test_move_nowhere  s    4(v&'D&)	$$VQ/!!&!,vxx+XZZ8vxx+XZZ8y{{A.

;y{{A.

;r    c                 ,   t        dd      }t        dd      }t        dd      }t        dd      }|j                  |d      }|j                  |d       | j                  t	        |j
                  d      |j
                         | j                  t	        |j                  d      |j                         | j                  t	        |j
                  d      |j
                         | j                  t	        |j                  d      |j                         y )	Nq=
ףp@QD@r   r~   r   r   rY   r   r   s         r   test_move_awayzVector2TypeTest.test_move_away  s    4)v&'D&)	$$VR0!!&"-vxx+XZZ8vxx+XZZ8y{{A.

;y{{A.

;r    c                     t        dd      }|j                         }dD ]H  }| j                  |j                  ||      |       |j	                  ||       | j                  ||       J y )Nr   r   gRQru   r   gʡE?   )r   r   r-   r   r   r   vecvec2dists       r   test_move_towards_selfz&Vector2TypeTest.test_move_towards_self$  se    dG$xxz- 	(DS--dD93?  d+S$'	(r    c                 0   d }d }d }d }d }d }| j                  t        |       | j                  t        |       | j                  t        |       | j                  t        |       | j                  t        |       | j                  t        |       y )Nc                  Z    t        dd      } t        dd      }| j                  |dd       y Nr   r~   r   r   r$   rY   r   r   r   r   s     r   overpopulatez>Vector2TypeTest.test_move_towards_errors.<locals>.overpopulate-  s,    T6*FUF+F1-r    c                  Z    t        dd      } t        dd      }| j                  |dd       y r   r   r   r   s     r   overpopulate_ipzAVector2TypeTest.test_move_towards_errors.<locals>.overpopulate_ip2  s,    T6*FUF+F""61a0r    c                  X    t        dd      } t        dd      }| j                  |d       y )Nr   r~   r   r   novialr   r   s     r   invalid_types1z@Vector2TypeTest.test_move_towards_errors.<locals>.invalid_types17  s*    T6*FUF+F1r    c                  X    t        dd      } t        dd      }| j                  |d       y )Nr   r~   r   r   isr   r   s     r   invalid_types_ip1zCVector2TypeTest.test_move_towards_errors.<locals>.invalid_types_ip1<  s*    T6*FUF+F""640r    c                  X    t        dd      } t        dd      }| j                  dd       y )Nr   r~   r   r   kindar$   r   r   s     r   invalid_types2z@Vector2TypeTest.test_move_towards_errors.<locals>.invalid_types2A  s*    T6*FUF+F+r    c                  X    t        dd      } t        dd      }| j                  dd       y )Nr   r~   r   r   coolr$   r   r   s     r   invalid_types_ip2zCVector2TypeTest.test_move_towards_errors.<locals>.invalid_types_ip2F  s*    T6*FUF+F""61-r    )r   r   )r   r   r   r   r   r   r   s          r   test_move_towards_errorsz(Vector2TypeTest.test_move_towards_errors,  s    	.
	1
	2
	1
	,
	.
 	)\2)_5)^4)%67)^4)%67r    c                    t        dd      t               d d   | j                  t              d       | j                  d   d       | j                  d   d       | j                  t        fd       | j                  d   d       | j                  d   d       | j                  t        fd	       | j                  d d  ddg       | j                  dd  dg       | j                  d d dg       | j                  t              ddg       | j                  t              d
       dd<   dd<   | j                  j                  d       | j                  j                  d       ddgd d  | j                  j                  d       | j                  j                  d       d }| j                  t        |       d }| j                  t        |       d }| j                  t        |       y )Nr8   r9   rY   r   r   c                       d   S NrY   r3   rl   s   r   <lambda>z.Vector2TypeTest.testSequence.<locals>.<lambda>X      ad r    ru   c                       d   S )Nr   r3   rl   s   r   r   z.Vector2TypeTest.testSequence.<locals>.<lambda>[      ae r    r7   r:   r;   333333"@=
ףp=&@c                  &    t               } g d| d d  y Nr   rY   r$   r   rl   s    r   r   z2Vector2TypeTest.testSequence.<locals>.overpopulatei  s    	AAaDr    c                  $    t               } dg| d d  y Nr   r   rl   s    r   underpopulatez3Vector2TypeTest.testSequence.<locals>.underpopulateo      	A3AaDr    c                  "    t               } d| d<   y Nrj   r   r   rl   s    r   rm   z5Vector2TypeTest.testSequence.<locals>.assign_nonfloatu      	AAaDr    )r   r-   lenr   
IndexErrorr@   tuplerM   rN   r   r   r   r   r   rm   rP   s       @r   testSequencezVector2TypeTest.testSequenceR  s   C	!Q#1s#1s#*l32$2$*m41Sz*12&2A&a3*-q:.!!c"c"U|!c"e$	 	*l3	 	*m4	 	)_5r    c                    d	d}t        | j                        }| j                  t        ||d d d       | j                  t        ||dd d       | j                  t        ||ddd       t        | j                        }dg|d d d<   | j	                  |d| j                  j
                  g       t        | j                        }dg|d d d<   | j	                  || j                  j                  dg       t        | j                        }||d d d<   | j	                  || j                  j
                  | j                  j                  g       t        | j                        }t        | j                        }t        | j                        }dg|dd dg|t        dd      <   d|dd | j	                  ||       | j	                  ||       | j	                  t        |      t        | j                               | j	                  t        |      t        | j                               | j	                  t        |      t        | j                               y )
Nc                 V    ||	|| |||= y ||	|| |d |= y ||
|| d d |= y y y y Nr3   r   startstopsteps       r   delSlicez5Vector2TypeTest.testExtendedSlicing.<locals>.delSlice}  `     T%5$:Jd4("t|8Ht$4<D4D$K 5E<r    rY   r   ru   r   r   皙@r   NNN)	r   rB   r   r   r-   rN   rM   slicer{   r   r   rP   ry   bcs         r   testExtendedSlicingz#Vector2TypeTest.testExtendedSlicing{  s   	  DGG)Xq$a@)Xq!T1=)Xq!Q: DGG#A#RO,DGG$$B$TWWYYO,DGG$B$TWWYY		23DGGDGGDGG!A%1+!AAAa$tww-0a$tww-0a$tww-0r    c                 t   t        dd      | j                  j                  d             | j                  dv        | j                  dv        | j                  dv       | j                  j                  d             | j	                  t
        fd       | j	                  t
        fd       y )Nr   r   rY   c                      d v S Nstringr3   r   s   r   r   z/Vector2TypeTest.test_contains.<locals>.<lambda>      X] r    c                      d v S Ny      @      @r3   r   s   r   r   z/Vector2TypeTest.test_contains.<locals>.<lambda>      Vq[ r    )r   
assertTrue__contains__assertFalser   r   r   r   s    @r   test_containszVector2TypeTest.test_contains  s    AqM 	q)*QQ
#*+)%:;)%89r    c                    | j                   | j                  z   }| j                  t        |t	        | j                                      | j                  |j                  | j                   j                  | j                  j                  z          | j                  |j                  | j                   j                  | j                  j                  z          | j                   | j                  z   }| j                  t        |t	        | j                                      | j                  |j                  | j                   j                  | j                  d   z          | j                  |j                  | j                   j                  | j                  d   z          | j                   | j                  z   }| j                  t        |t	        | j                                      | j                  |j                  | j                   j                  | j                  d   z          | j                  |j                  | j                   j                  | j                  d   z          | j                  | j                  z   }| j                  t        |t	        | j                                      | j                  |j                  | j                  d   | j                  j                  z          | j                  |j                  | j                  d   | j                  j                  z          | j                  | j                  z   }| j                  t        |t	        | j                                      | j                  |j                  | j                  d   | j                  j                  z          | j                  |j                  | j                  d   | j                  j                  z          y Nr   r   rB   rE   r   
isinstancer{   r-   rM   rN   rC   rD   r?   rA   r   v3s     r   testAddzVector2TypeTest.testAdd  }   WWtww
2tDGG}56twwyy4779945twwyy4779945WWtww
2tDGG}56twwyy4771:56twwyy4771:56WWtww
2tDGG}56twwyy4771:56twwyy4771:56WWtww
2tDGG}56twwqzDGGII56twwqzDGGII56WWtww
2tDGG}56twwqzDGGII56twwqzDGGII56r    c                    | j                   | j                  z
  }| j                  t        |t	        | j                                      | j                  |j                  | j                   j                  | j                  j                  z
         | j                  |j                  | j                   j                  | j                  j                  z
         | j                   | j                  z
  }| j                  t        |t	        | j                                      | j                  |j                  | j                   j                  | j                  d   z
         | j                  |j                  | j                   j                  | j                  d   z
         | j                   | j                  z
  }| j                  t        |t	        | j                                      | j                  |j                  | j                   j                  | j                  d   z
         | j                  |j                  | j                   j                  | j                  d   z
         | j                  | j                  z
  }| j                  t        |t	        | j                                      | j                  |j                  | j                  d   | j                  j                  z
         | j                  |j                  | j                  d   | j                  j                  z
         | j                  | j                  z
  }| j                  t        |t	        | j                                      | j                  |j                  | j                  d   | j                  j                  z
         | j                  |j                  | j                  d   | j                  j                  z
         y r   r   r   s     r   testSubzVector2TypeTest.testSub  r   r    c                    | j                   | j                  z  }| j                  t        |t	        | j                                     | j                  |j                  | j                   | j                  j                  z         | j                  |j                  | j                   | j                  j                  z         | j                  | j                  z  }| j                  |j                  | j                  j                  | j                  z         | j                  |j                  | j                  j                  | j                  z         y r   )	rF   rB   r   r   r{   r-   rM   rN   rG   rO   s     r   testScalarMultiplicationz(Vector2TypeTest.testScalarMultiplication  s    GGdgg
1d477m45dgg		12dgg		12GGdggdggii$''12dggii$''12r    c                    | j                   | j                  z  }| j                  t        |t	        | j                                      | j                  |j                  | j                   j                  | j                  z         | j                  |j                  | j                   j                  | j                  z         | j                   | j                  z  }| j                  t        |t	        | j                                      | j                  |j                  | j                   j                  | j                  z         | j                  |j                  | j                   j                  | j                  z         y r   )
rB   rF   r   r   r{   r   rM   rN   rG   r-   rO   s     r   testScalarDivisionz"Vector2TypeTest.testScalarDivision  s    GGdgg
1d477m45qssDGGII$78qssDGGII$78GGtww
1d477m45dggii47723dggii47723r    c                    | j                  t        | j                        d       | j                  t        | j                        d       | j	                  | j                          | j	                  | j                         y NFTr-   boolr<   rB   r   rH   s    r   testBoolzVector2TypeTest.testBool  V    dll+U3dgg-DLL() r    c                 ,   | j                   }| j                  t        |t        | j                                      | j	                  |j
                  | j                   j
                         | j	                  |j                  | j                   j                         | j                  t        |      t        | j                                | j                    }| j                  t        |t        | j                                      | j	                  |j
                  | j                   j
                          | j	                  |j                  | j                   j                          | j                  t        |      t        | j                                y r   )	rB   r   r   r{   r-   rM   rN   assertNotEqualidrO   s     r   	testUnaryzVector2TypeTest.testUnary  s    WWH
1d477m45dggii(dggii(BqE2dgg;/WWH
1d477m45twwyyj)twwyyj)BqE2dgg;/r    c                 T   t        dd      }t        dd      }t        dd      }| j                  ||k(  d       | j                  ||k7  d       | j                  ||k7  d       | j                  ||k(  d       | j                  |dk(  d       | j                  |dk7  d       | j                  |ddgk7  d       | j                  |ddgk(  d       | j                  |d	k7  d       | j                  |d	k(  d       | j                  |g d
k7  d       | j                  |g d
k(  d       y )Nr$   r         @       r   TF)r$   r   r"   )r$   r   r   )r   r-   r   int_vecflt_veczero_vecs       r   testComparezVector2TypeTest.testCompare  s&   !R.#t$1a=G+T2G+U3H,d3H,e4G+T2G+U3QF*D1QF*E2At,Au-J.5J.6r    c                 R    t        dd      }| j                  t        |      d       y )Nr8   r9   z
[1.2, 3.4])r   r-   r   rO   s     r   testStrzVector2TypeTest.testStr  s"    CQ.r    c                     t        dd      }| j                  |j                         d       | j                  |t        |j                                      y )Nr8   r9   z<Vector2(1.2, 3.4)>)r   r-   __repr__rO   s     r   testReprzVector2TypeTest.testRepr  s@    C'<=GAJJL12r    c                 X   | j                   j                         }|j                  | j                          | j                   d          | j                          | j                   d          | j	                  t
        fd       | j                   j                         }| j                   j                         }| j                  t        |      t        |             | j                  t        |      t        |j                                      | j                  t        |      t        |             | j                  t        | j                   j                               | j                         d}| j                   D ]&  }| j                  || j                   |          |dz  }( y )Nr   r   c                               S r   r3   next_s   r   r   z*Vector2TypeTest.testIter.<locals>.<lambda>  	     r    
rB   __iter____next__r-   r   StopIterationr	  r
  r@   rA   r   itit1it2idxvalr  s         @r   testIterzVector2TypeTest.testIter  s4   WW$''!*-$''!*--9gg gg BsGRW-C"S\\^"45cDI.dgg..01477;77 	CS$''#,/1HC	r    c                 `   t        dd      }|j                  d      }|j                  d      }| j                  |j                  d       | j                  |j                  d       | j                  |j                  d       | j                  |j                  d       | j                  |j                  |j                         | j                  |j                  |j                         t        dd      }|j                  d      }| j                  |j                  d       | j                  |j                  d       |j                  d      }| j                  |j                  |j                         | j                  |j                  |j                         |j                  d      }| j                  |j                  |j                         | j                  |j                  |j                         | j                  t        dd      j                  d      t        dd             y )	Nr   r   Z     ru   h  gPv@)r   rotater-   rM   rN   r   rB   rE   r   s       r   test_rotatezVector2TypeTest.test_rotate)  s   Q]YYr]YYx q!q!q!q!rtt$rtt$R_YYs^r"q!YYs^rtt$rtt$YYq\rtt$rtt$A--l;WQ]Kr    c                 \   dt         j                  fdt         j                  dz  fdt         j                   dz  fdt         j                  dz  ff}|D ]W  \  }}| j                  t        |      j	                  |      t        j
                  |      t        j                  |      f       Y y Nr   r   rY      )r   pir-   r   
rotate_radcossin)r   tests
initialVecradianss       r   test_rotate_radzVector2TypeTest.test_rotate_rad@  s    TWWTWWq[!dggX\"TWWq[!	
 $) 	J
#..w7'"DHHW$56	r    c                 x   t        dd      }| j                  |j                  d      d        | j                  |j                  d       | j                  |j                  d       t        dd      }|j                  d       | j                  |j                  d       | j                  |j                  d       y Nr   r   r*  ru   r,  )r   r-   	rotate_iprM   rN   rO   s     r   test_rotate_ipzVector2TypeTest.test_rotate_ipM  s    AqMR$/a a BO	Cb!a r    c                 d   dt         j                  fdt         j                  dz  fdt         j                   dz  fdt         j                  dz  ff}|D ][  \  }}t        |      }|j                  |       | j	                  |t        j
                  |      t        j                  |      f       ] y r2  )r   r5  r   rotate_rad_ipr-   r7  r8  )r   r9  r:  r;  r   s        r   test_rotate_rad_ipz"Vector2TypeTest.test_rotate_rad_ipW  s    TWWTWWq[!dggX\"TWWq[!	
 $) 	JJ*%Cg&S488G#4dhhw6G"HI	Jr    c                 l     j                   j                         } j                  |j                  |j                  z  |j                  |j                  z  z   d        j                   j                   j                   j                  d           j                   j                   j                   j                  d           j                   j                   j                  |j                  z   j                   j                  |j                  z  z
  d        j                  t         fd       y )Nr   r   r   r   c                  8     j                   j                         S r   r<   	normalizerH   s   r   r   z0Vector2TypeTest.test_normalize.<locals>.<lambda>l      dll.D.D.F r    )	rB   rG  r   rM   rN   r-   rA   r   r   rO   s   ` r   test_normalizezVector2TypeTest.test_normalizec  s    GGqssQSSy13394c:DGGAJ/DGGAJ/twwyy133QSS@#F*&FGr    c                 L     j                   } j                  |j                  |j                  z  |j                  |j                  z  z   d        j	                  |j                         d         j                  |j                  |j                  z  |j                  |j                  z  z   d        j                   j                   j                  |j                  z   j                   j                  |j                  z  z
  d        j                  t         fd       y )Nr   r   c                  8     j                   j                         S r   r<   normalize_iprH   s   r   r   z3Vector2TypeTest.test_normalize_ip.<locals>.<lambda>x      dll.G.G.I r    )	rB   r	  rM   rN   r-   rM  r   r   r   rO   s   ` r   test_normalize_ipz!Vector2TypeTest.test_normalize_ipn  s    WWHACC!##Iacc	137)40qssQSSy13394c:twwyy133QSS@#F*&IJr    c                 t   | j                  | j                  j                         d       | j                  j                         }| j                  |j                         d       | j                  | j                  j                         d       | j                  | j
                  j                         d       y r  r-   rB   is_normalizedrG  r>   r<   rO   s     r   test_is_normalizedz"Vector2TypeTest.test_is_normalizedz      ..0%8GG*D1..0$7335u=r    c                 <   | j                  | j                  j                  | j                        | j                  j                  | j                  j
                  z  | j                  j
                  | j                  j                  z  z
         | j                  | j                  j                  | j                        | j                  j                  | j                  d   z  | j                  j
                  | j                  d   z  z
         | j                  | j                  j                  | j                        | j                  j                  | j                  d   z  | j                  j
                  | j                  d   z  z
         | j                  | j                  j                  | j                        | j                  j                  | j                                | j                  | j                  j                  | j                        d       y Nr   r   )r-   rB   crossrE   rM   rN   rD   rC   rH   s    r   
test_crosszVector2TypeTest.test_cross  sY   GGMM$''"DGGII		$9DGGII		<Q$Q	
 	GGMM$''"DGGII
$:TWWYYQR=S$S	
 	GGMM$''"DGGII
$:TWWYYQR=S$S	
 	tww/$''--2H1HItww/3r    c                 h   | j                  | j                  j                  | j                        | j                  j                  | j                  j                  z  | j                  j
                  | j                  j
                  z  z          | j                  | j                  j                  | j                        | j                  j                  | j                  d   z  | j                  j
                  | j                  d   z  z          | j                  | j                  j                  | j                        | j                  j                  | j                  d   z  | j                  j
                  | j                  d   z  z          | j                  | j                  j                  | j                        | j                  j                  | j                               | j                  | j                  j                  | j                        | j                  | j                  z         y r   )	r   rB   dotrE   rM   rN   rD   rC   r-   rH   s    r   test_dotzVector2TypeTest.test_dot  sa   GGKK $''))dggii"7$''))dggii:O"O	
 	GGKK $''))dggaj"847799twwqz;Q"Q	
 	GGKK $''))dggaj"847799twwqz;Q"Q	
 	TWW-tww{{477/CDTWW-tww/@Ar    c                 V   | j                  | j                  j                  | j                  j                  | j                              j                         | j                  j                                | j                  t        dd      j                  d      d       | j                  t        dd      j                  d      d       | j                  t        dd      j                  d      d       | j                  t        t        dd      j                  d            d	       y )
Nr   )ru   r   r*  r   )r   ru   r,     )ru   r      )r-   rB   r.  angle_torE   rG  r   absrH   s    r   test_angle_tozVector2TypeTest.test_angle_to  s    GGNN477++DGG45??A477CTCTCV	
 	A//8"=A//8#>A//8#>WQ]33G<=sCr    c                 P    t        dd      }|j                  d        j                  |t        dd      t        j                  d      z          j                  t         fd        j                  |j                  d      d         j                  | j                         y )Nr   r(   rY   c                  :     j                   j                  d      S r   r<   scale_to_lengthrH   s   r   r   z6Vector2TypeTest.test_scale_to_length.<locals>.<lambda>      dll.J.J1.M r    r   )r   re  r-   r   sqrtr   r   r<   rO   s   ` r   test_scale_to_lengthz$Vector2TypeTest.test_scale_to_length  s    AqM	#GC-		!<=*&MN**1-t4DLL)r    c                     | j                  t        dd      j                         d       | j                  t        dd      j                         d       | j                  | j                  j                         d       y )Nr$   r4  r"   r   r   )r-   r   lengthr<   rH   s    r   test_lengthzVector2TypeTest.test_length  s]    A--/3Q..0!4,,.2r    c                     | j                  t        dd      j                         d       | j                  t        dd      j                         d       | j                  | j                  j                         d       y )Nr$   r4  r   r   r   )r-   r   length_squaredr<   rH   s    r   test_length_squaredz#Vector2TypeTest.test_length_squared  s]    A557<Q668"=446:r    c                 n    t        dd      t        dd      } j                  j                  |      t        dd              j                  j                  d|z        j                  |              j                  j                                  j                  t         fd       y )Nr   ru   r   r$   c                  :    j                   j                        S r   reflectr<   rO   s   r   r   z.Vector2TypeTest.test_reflect.<locals>.<lambda>      aii.E r    )r   r-   rr  r   r   r   nrP   s   ` @r   test_reflectzVector2TypeTest.test_reflect  s    ArNAqM1wq!}51q5)199Q<8A2+*&EFr    c                    t        dd      }t        |      t        dd      }| j                  j                  |      d        | j                  t        dd             t        |      j                  d|z         | j                  |j                  |             t        |      j                  |        | j                  |        | j	                  t
        fd       y )Nr   ru   r   r$   c                  6     j                  t                     S r   )
reflect_ipr   )rE   s   r   r   z1Vector2TypeTest.test_reflect_ip.<locals>.<lambda>  s    bmmGI.F r    )r   r-   ry  rr  r   r   r   rB   ru  rE   s      @r   test_reflect_ipzVector2TypeTest.test_reflect_ip  s    Q^R[AqMq)40WQ]+R[
a!eRZZ]+R[
rcbS!*&FGr    c                    | j                   | j                  z
  }| j                  | j                  j	                  | j
                        t        j                  d             | j                  | j                  j	                  d      t        j                  d             | j                  | j                  j	                  ddg      t        j                  d             | j                  | j                   j	                  | j                        t        j                  |j                  |j                  z  |j                  |j                  z  z                | j                  | j                   j	                  | j                        t        j                  |j                  |j                  z  |j                  |j                  z  z                | j                  | j                   j	                  | j                        t        j                  |j                  |j                  z  |j                  |j                  z  z                | j                  | j                   j	                  | j                         d       | j                  | j                   j	                  | j                        d       | j                  | j                   j	                  | j                        d       | j                  | j                   j	                  | j                        | j                  j	                  | j                               | j                  | j                   j	                  | j                        | j                  j	                  | j                               | j                  | j                   j	                  | j                        | j                  j	                  | j                                y NrY   )r   r   r   r   )rB   rE   r-   r=   distance_tor>   r   rg  r   rM   rN   rC   rD   r?   rA   r   diffs     r   test_distance_toz Vector2TypeTest.test_distance_to  s   ww ,,TWW5tyy|D,,V4diilC,,aV4diilCGG($))DFFTVVOdfftvvo4U*V	
 	GG($))DFFTVVOdfftvvo4U*V	
 	GG($))DFFTVVOdfftvvo4U*V	
 	,,TWW5q9,,TWW5q9,,TWW5q9,,TWW5tww7J7J4777ST,,TWW5tww7J7J4777ST,,TWW5tww7J7J4777STr    c                    | j                   | j                  z
  }| j                  | j                  j	                  | j
                        d       | j                  | j                  j	                  d      d       | j                  | j                  j	                  ddg      d       | j                  | j                   j	                  | j                        |j                  |j                  z  |j                  |j                  z  z          | j                  | j                   j	                  | j                        |j                  |j                  z  |j                  |j                  z  z          | j                  | j                   j	                  | j                        |j                  |j                  z  |j                  |j                  z  z          | j                  | j                   j	                  | j                         d       | j                  | j                   j	                  | j                        d       | j                  | j                   j	                  | j                        d       | j                  | j                   j	                  | j                        | j                  j	                  | j                                | j                  | j                   j	                  | j                        | j                  j	                  | j                               | j                  | j                   j	                  | j                        | j                  j	                  | j                               y r}  )rB   rE   r-   r=   distance_squared_tor>   r   rM   rN   rC   rD   r?   rA   r  s     r   test_distance_squared_toz(Vector2TypeTest.test_distance_squared_to  s`   ww 44TWW=qA44V<a@44aV<a@GG''0$&&466/DFFTVVO2S	
 	GG''0$&&466/DFFTVVO2S	
 	GG''0$&&466/DFFTVVO2S	
 	44TWW=qA44TWW=qA44TWW=qAGG''0$''2M2Mdgg2V	
 	GG''0$''2M2Mdgg2V	
 	GG''0$''2M2Mdgg2V	
r    c                 (   t        dd      }|j                  d       | j                  |t        d             |j                  dd       | j                  |t        dd             |j                  d       | j                  |t        d             y )	Nr$   r4  r   )r   r   r"   r   )r4  r   )r"   r   )r   updater-   r	  rO   s     r   test_updatezVector2TypeTest.test_update  so    AqM	GFO,	AGAqM*	Awv/r    c           	      .   | j                  | j                  j                  | j                  j                  | j                  j                  f       | j                  | j                  j
                  | j                  j                  | j                  j                  | j                  j                  | j                  j                  | j                  j                  | j                  j                  f       | j                  | j                  _        | j                  | j                  | j                         | j                  | j                  _        | j                  | j                  | j                  d   | j                  d   f       | j                  t        | j                        t               d }d }| j                  t        |       | j                  t        |       d }| j                  t        |       d }| j                  t        |       y )Nr   r   c                  "    dt               _        y Nr   rY   )r   xxr3   r    r   invalidSwizzleXz5Vector2TypeTest.test_swizzle.<locals>.invalidSwizzleX      !GILr    c                  "    dt               _        y r  )r   yyr3   r    r   invalidSwizzleYz5Vector2TypeTest.test_swizzle.<locals>.invalidSwizzleY  r  r    c                  "    dt               _        y Nr$   )r   xyr3   r    r   invalidAssignmentz7Vector2TypeTest.test_swizzle.<locals>.invalidAssignment      GILr    c                  ,    t        t               d       y )N   ä)getattrr   r3   r    r   unicodeAttributez6Vector2TypeTest.test_swizzle.<locals>.unicodeAttribute  s    GIt$r    )r-   rB   yxrN   rM   xxyyxyrC   r  r{   r   r   AttributeErrorr   )r   r  r  r  r  s        r   test_swizzlezVector2TypeTest.test_swizzle  s]   dggii%;<GGNNWWYY		47799dggiiDGGIIN	
 WW
$''*WW
4771:twwqz":;dgg0	"	" 	./:./:	 	)%67	% 	.*:;r    c                    | j                  t        | j                  j                        t               | j                  t        | j                  j
                        t               | j                  t        | j                  j                        t               | j                  t        | j                  j                        t               | j                  t        | j                  j                        t               y r   )r-   r{   rB   rM   floatr  r   xyxr   xyxyr   xyxyxrH   s    r   test_swizzle_return_typesz)Vector2TypeTest.test_swizzle_return_types$      dggii%0dggjj)73dggkk*G4dggll+U3dggmm,e4r    c                 6,     j                   } j                  } j                  } j                  } j	                  |j                         |z   |j                  |z   |j                  |z   f        j	                  |j                         |z
  |j                  |z
  |j                  |z
  f        j	                  |j                         |z  |j                  |z  |j                  |z  f        j	                  |j                         |z  |j                  |z  |j                  |z  f        j	                  |j                         |z  |j                  |z  |j                  |z  f        j	                  |j                         |z  |j                  |z  |j                  |z  f        j	                  |j                         |z  |j                  |z  |j                  |z  f        j	                  |j                         |kD  |j                  |kD  xr |j                  |kD          j	                  |j                         |k  |j                  |k  xr |j                  |k          j	                  |j                         |k(  |j                  |k(  xr |j                  |k(          j	                  |j                         |k7  ||j                  |j                  fv        j	                  |j                         |k\  |j                  |k\  xr |j                  |k\          j	                  |j                         |k  |j                  |k  xr |j                  |k          j	                  |j                         |k7  ||j                  |j                  fv        j	                  ||j                         z   ||j                  z   ||j                  z   f        j	                  ||j                         z
  ||j                  z
  ||j                  z
  f        j	                  ||j                         z  ||j                  z  ||j                  z  f        j	                  ||j                         z  ||j                  z  ||j                  z  f        j	                  ||j                         z  ||j                  z  ||j                  z  f        j	                  ||j                         z  ||j                  z  ||j                  z  f        j	                  ||j                         z  ||j                  z  ||j                  z  f        j	                  ||j                         k  ||j                  k  xr ||j                  k          j	                  ||j                         kD  ||j                  kD  xr ||j                  kD          j	                  ||j                         k(  ||j                  k(  xr ||j                  k(          j	                  ||j                         k7  ||j                  |j                  fv        j	                  ||j                         k  ||j                  k  xr ||j                  k          j	                  ||j                         k\  ||j                  k\  xr ||j                  k\          j	                  ||j                         k7  ||j                  |j                  fv        j	                  t        |j                         |z        t        |              j	                  |j                         |z   ||z           j	                  |j                         |z
  ||z
          j	                  |j                         |z  |j                  |j                  z  |j                  |j                  z  f        j	                  |j                         |z  |j                  |j                  z  |j                  |j                  z  f        j	                  |j                         |z  |j                  |j                  z  |j                  |j                  z  f        j	                  |j                         |z  |j                  |j                  z  |j                  |j                  z  f        j	                  |j                         |z  |j                  |j                  z  |j                  |j                  z  f        j	                  |j                         |kD  |j                  |j                  kD  xr |j                  |j                  kD          j	                  |j                         |k  |j                  |j                  k  xr |j                  |j                  k          j	                  |j                         |k\  |j                  |j                  k\  xr |j                  |j                  k\          j	                  |j                         |k  |j                  |j                  k  xr |j                  |j                  k          j	                  |j                         |k(  |j                  |j                  k(  xr |j                  |j                  k(          j	                  |j                         |k7  |j                  |j                  k7  xr |j                  |j                  k7          j	                  ||j                         z   ||z           j	                  ||j                         z
  ||z
          j	                  ||j                         z  |j                  |j                  z  |j                  |j                  z  f        j	                  ||j                         z  |j                  |j                  z  |j                  |j                  z  f        j	                  ||j                         z  |j                  |j                  z  |j                  |j                  z  f        j	                  ||j                         z  |j                  |j                  z  |j                  |j                  z  f        j	                  ||j                         z  |j                  |j                  z  |j                  |j                  z  f        j	                  ||j                         k  |j                  |j                  k  xr |j                  |j                  k          j	                  ||j                         kD  |j                  |j                  kD  xr |j                  |j                  kD          j	                  ||j                         k  |j                  |j                  k  xr |j                  |j                  k          j	                  ||j                         k\  |j                  |j                  k\  xr |j                  |j                  k\          j	                  ||j                         k(  |j                  |j                  k(  xr |j                  |j                  k(          j	                  ||j                         k7  |j                  |j                  k7  xr |j                  |j                  k7          j	                  |j                         |j                         z   ||z           j	                  |j                         |j                         z
  ||z
          j	                  |j                         |j                         z  |j                  |j                  z  |j                  |j                  z  f        j	                  |j                         |j                         z  |j                  |j                  z  |j                  |j                  z  f        j	                  |j                         |j                         z  |j                  |j                  z  |j                  |j                  z  f        j	                  |j                         |j                         z  |j                  |j                  z  |j                  |j                  z  f        j	                  |j                         |j                         z  |j                  |j                  z  |j                  |j                  z  f        j	                  |j                         |j                         k  |j                  |j                  k  xr |j                  |j                  k          j	                  |j                         |j                         kD  |j                  |j                  kD  xr |j                  |j                  kD          j	                  |j                         |j                         k  |j                  |j                  k  xr |j                  |j                  k          j	                  |j                         |j                         k\  |j                  |j                  k\  xr |j                  |j                  k\          j	                  |j                         |j                         k(  |j                  |j                  k(  xr |j                  |j                  k(          j	                  |j                         |j                         k7  |j                  |j                  k7  xr |j                  |j                  k7          j	                  t        |j                               t        |j                        t        |j                        f        j	                  |j                          |         j	                  |j                         |        j	                  t        |j                               t        |              j	                  t        t               j                               t        t                             j	                   j                  j                         dz  d        j                  t        d         j                  t         fd        j                  t         fd        j                  t        d         j                  t        d         j                  t        d         j                  t         fd	        j                  t         fd
        j                  t         fd        j                  t         fd        j                  t         fd        j                  t         fd       y )Nr   r   r   c                  J    t        t        dd      j                         d      S Nru   r   r8   )powr   elementwiser3   r    r   r   z2Vector2TypeTest.test_elementwise.<locals>.<lambda>  s    c'"a.2L2L2NPS.T r    c                  >     j                   j                         dz  S Nru   r<   r  rH   s   r   r   z2Vector2TypeTest.test_elementwise.<locals>.<lambda>      T\\5M5M5OSU5U r    c                  >     j                   j                         dz  S r  r  rH   s   r   r   z2Vector2TypeTest.test_elementwise.<locals>.<lambda>  r  r    c                  <    t        dd      j                         dz  S rV  r   r  r3   r    r   r   z2Vector2TypeTest.test_elementwise.<locals>.<lambda>      WQ]5N5N5PST5T r    c                  <    t        dd      j                         dz  S rV  r  r3   r    r   r   z2Vector2TypeTest.test_elementwise.<locals>.<lambda>  s    WQ]5N5N5PTU5U r    c                  <    t        dd      j                         dz  S rV  r  r3   r    r   r   z2Vector2TypeTest.test_elementwise.<locals>.<lambda>  r  r    c                  R    t        dd      j                          j                  z  S r   r   r  r<   rH   s   r   r   z2Vector2TypeTest.test_elementwise.<locals>.<lambda>      wq!}'@'@'BT\\'Q r    c                  R    t        dd      j                          j                  z  S r   r  rH   s   r   r   z2Vector2TypeTest.test_elementwise.<locals>.<lambda>  s    wq!}'@'@'Bdll'R r    c                  R    t        dd      j                          j                  z  S r   r  rH   s   r   r   z2Vector2TypeTest.test_elementwise.<locals>.<lambda>  r  r    c                  >    d j                   j                         z  S r   r  rH   s   r   r   z2Vector2TypeTest.test_elementwise.<locals>.<lambda>      Q9Q9Q9S5S r    c                  >    d j                   j                         z  S r   r  rH   s   r   r   z2Vector2TypeTest.test_elementwise.<locals>.<lambda>      Q$,,:R:R:T5T r    c                  >    d j                   j                         z  S r   r  rH   s   r   r   z2Vector2TypeTest.test_elementwise.<locals>.<lambda>  r  r    )rB   rE   rF   rG   r-   r  rM   rN   r{   r`  r  r   r<   r   r   ZeroDivisionError)r   rB   rE   rF   rG   s   `    r   test_elementwisez Vector2TypeTest.test_elementwise,  s   WWWWWWWW)B.BDD2I0FG)B.BDD2I0FG)B.BDD2I0FG)B.BDD2I0FG)R/"$$"*bddbj1IJ)R/"$$(BDD"H1EF)B.BDD2I0FG)B.r	0GbddRiH)B.r	0GbddRiH)R/1J
K)R/BDD"$$<1GH)R/1J
K)R/1J
K)R/BDD"$$<1GHbnn..bddBI0FGbnn..bddBI0FGbnn..bddBI0FGbnn..bddBI0FGr~~//"*bBDDj1IJr~~//"bdd(BH1EFbnn..bddBI0FGbnn..RTT	0Gb244iHbnn..RTT	0Gb244iHr~~//rtt1Jbdd
Kr~~//BDD"$$<1GHr~~//rtt1Jbdd
Kr~~//rtt1Jbdd
Kr~~//BDD"$$<1GH 	bnn.34d2h?)B.R8)B.R8)B.bddRTTk0JK)B.bddRTTk0JK)R/"$$"$$,1MN)R/"$$*bddBDDj1IJ)B.bddRTTk0JK)B.rtt0KrttL)B.rtt0KrttL)R/1N"$$"$$,O)R/1N"$$"$$,O)R/1N"$$"$$,O)R/1N"$$"$$,Obnn..R8bnn..R8bnn..bddRTTk0JKbnn..bddRTTk0JKr~~//"$$"$$,1MNr~~//"$$*bddBDDj1IJbnn..bddRTTk0JKbnn..rtt0KrttLbnn..rtt0KrttLr~~//1N"$$"$$,Or~~//1N"$$"$$,Or~~//1N"$$"$$,Or~~//1N"$$"$$,O 	)BNN,<<b2gF)BNN,<<b2gFNNr~~//"$$+rttbdd{1K	
 	NNr~~//"$$+rttbdd{1K	
 	NN 00244244<2N	
 	)R^^-==bdd
BDDRTRVRVJ?WXNNr~~//"$$+rttbdd{1K	
 	NNr~~//1L	
 	NNr~~//1L	
 	NN 00"$$"$$,2O244244<	
 	NN 00"$$"$$,2O244244<	
 	NN 00"$$"$$,2O244244<	
 	NN 00"$$"$$,2O244244<	

 	R^^-.RTTCI0FG"..**RC0"..**RC0bnn./b:gi3356WYH113q8&A*&TU+-UV+-UV+-TU+-UV+-TUQ	
 	R	
 	Q	
 	+-ST+-TU+-STr    c                 <     j                  t         fd        j                  t         fd        j                  t         fd       t        dd      t        dd      dj                        z  }fdt	        dz         D        D ]I  \  }} j                  |j                         d        j                  j                  |      ||z         K  j                         t        dd      t        dd      j                         j                         z  }fd	t	        dz         D        D ]d  \  }} j                  |j                         j                         j                         z
  t        |      z  z  j                         z          f  j                  |        j                  j                  d
              j                  j                  d
              j                  t        fd       y )Nc                  P     j                   j                   j                  d      S Nr   r<   slerprB   rH   s   r   r   z,Vector2TypeTest.test_slerp.<locals>.<lambda>      dll.@.@#.N r    c                  P     j                   j                   j                  d      S r  rB   r  r<   rH   s   r   r   z,Vector2TypeTest.test_slerp.<locals>.<lambda>      dggmmDLL#.N r    c                  P     j                   j                   j                   d      S r  r<   r  rH   s   r   r   z,Vector2TypeTest.test_slerp.<locals>.<lambda>      dll.@.@s.S r    r   r   r   c           	   3   ^   K   | ]$  }|j                  |t              z        f & y wr   r  r  .0istepsrB   rE   s     r   	<genexpr>z-Vector2TypeTest.test_slerp.<locals>.<genexpr>  s*     SQa"a%,&678Ss   *-r   c           	   3   `   K   | ]%  }|j                  | t              z        f ' y wr   r  r  s     r   r  z-Vector2TypeTest.test_slerp.<locals>.<genexpr>  ,     Taa"qb5<&789T   +.r   c                  *     j                    d      S r  r  rB   s   r   r   z,Vector2TypeTest.test_slerp.<locals>.<lambda>      bhhsC.@ r    )
r   r   r   r_  ranger   rj  r-   r  r  r   
angle_stepr  uradial_factorr  rB   rE   s   `    @@@r   
test_slerpzVector2TypeTest.test_slerp  s   *&NO*&NO*&STQ]Q][[_u,
S%PQ	BRS 	CDAq""188:q1""2;;q>1z>B	C 	BS!_Q^		biik1T5QRCST 	DAq""
ryy{*uQx%/?@299;N	
 	B"c*B/"c*B/*&@Ar    c                 $   t        dd      t        dd      | j                  j                  d      d       | j                  t        fd       t        dd      t        dd      | j                  j                  d      d       y )	Nr   r   r   )r"   r"   c                  (     j                  d      S Nr(   r   rB   rE   s   r   r   z+Vector2TypeTest.test_lerp.<locals>.<lambda>      bggb#.> r    r#   rx   )r   r(   )r   r-   r   r   r   r   rB   rE   s    @@r   r   zVector2TypeTest.test_lerp  sw    Q]R_S)62*&>?S"R_S)84r    c                    t               j                  | j                  j                                | j	                  | j                         | j	                  | j                  t        j                  | j                  j                                      | j	                  | j
                  j                         d       | j	                  | j                  j                         d       | j	                  d| j                  z  j                         d       | j                  t        fd       | j                  t        fd       | j                  t        fd       | j                  t        fd       | j                  t        fd	       | j                  t        fd
       | j                  t        d        | j                  t        d        | j                  t        d        | j                  t        d        | j                  t        d        | j                  t        d        j                  d       | j	                  d| j                  z         | j	                  t        j                  d      d| j                  z         | j	                  t        j                  d             j                  d       | j	                  | j
                         | j	                  t        j                  d      | j
                         | j	                  t        j                  d             y )Nr3  )r   r*  rY   )rY   r*  c                  &     j                  d      S N)NN
from_polarrl   s   r   r   z,Vector2TypeTest.test_polar.<locals>.<lambda>  s    Q\\,-G r    c                  &     j                  d      S Nabr  rl   s   r   r   z,Vector2TypeTest.test_polar.<locals>.<lambda>      Q\\$-? r    c                  &     j                  d      S Nr   r  rl   s   r   r   z,Vector2TypeTest.test_polar.<locals>.<lambda>      Q\\)-D r    c                  &     j                  d      S r   r  rl   s   r   r   z,Vector2TypeTest.test_polar.<locals>.<lambda>  r  r    c                  &     j                  d      S Nr   r  rl   s   r   r   z,Vector2TypeTest.test_polar.<locals>.<lambda>  r  r    c                  (     j                  dd      S Nr   rY   r  rl   s   r   r   z,Vector2TypeTest.test_polar.<locals>.<lambda>  s    Q\\!Q-? r    c                  ,    t        j                  d      S r  r   r  r3   r    r   r   z,Vector2TypeTest.test_polar.<locals>.<lambda>  s    W-?-?-M r    c                  ,    t        j                  d      S r  r  r3   r    r   r   z,Vector2TypeTest.test_polar.<locals>.<lambda>      W-?-?-E r    c                  ,    t        j                  d      S r  r  r3   r    r   r   z,Vector2TypeTest.test_polar.<locals>.<lambda>      W-?-?	-J r    c                  ,    t        j                  d      S r   r  r3   r    r   r   z,Vector2TypeTest.test_polar.<locals>.<lambda>  r   r    c                  ,    t        j                  d      S r  r  r3   r    r   r   z,Vector2TypeTest.test_polar.<locals>.<lambda>  r  r    c                  .    t        j                  dd      S r  r  r3   r    r   r   z,Vector2TypeTest.test_polar.<locals>.<lambda>  s    W-?-?1-E r    )r   r*  r   )	r   r  rB   as_polarr-   r=   r>   r   r   rO   s    @r   
test_polarzVector2TypeTest.test_polar  sF   I	TWW%%'(!$'"4"4TWW5E5E5G"HI))+V4))+W5!dgg+//17;)%GH)%?@)%DE)%DE)%?@)%?@)%MN)%EF)%JK)%JK)%EF)%EF	YC$''M*++I6dggF++I6:	VDGG$++F3TWW=++F3Q7r    c                      G d dt         j                  j                        } |dd      } |dd      }||z   }| j                  | |dd             |dz  }| j                  | |dd             y )Nc                       e Zd Zy)7Vector2TypeTest.test_subclass_operation.<locals>.VectorNr/   r0   r1   r3   r    r   Vectorr        r    r
  rY   r   r   r4  )r   r   r   r-   )r   r
  vec_avec_b
result_adds        r   test_subclass_operationz'Vector2TypeTest.test_subclass_operation  sn    	V[[(( 	 q!q!U]
VAq\2
q!-r    c                     t        dd      }t        dd      }|j                  |      }| j                  |j                  |j                         | j                  d|j                         y)MProject onto x-axis, e.g. get the component pointing in the x-axis direction.rY   r   r   Nr   projectr-   rM   rN   r   rP   x_axisactuals       r   test_project_v2_onto_x_axisz+Vector2TypeTest.test_project_v2_onto_x_axis  sX     AqMQ 6" 	fhh'FHH%r    c                     t        dd      }t        dd      }|j                  |      }| j                  d|j                         | j                  |j                  |j                         y)MProject onto y-axis, e.g. get the component pointing in the y-axis direction.rY   r   r   Nr  r   rP   y_axisr  s       r   test_project_v2_onto_y_axisz+Vector2TypeTest.test_project_v2_onto_y_axis  sX     AqMC 6" 	FHH%fhh'r    c                 :   t        dd      }t        dd      }|j                  |      }|j                  |      |j                  |      z  |z  }| j                  |j                  |j                         | j                  |j
                  |j
                         y)Project onto other vector.rY   r$   r"   N)r   r  rZ  r-   rM   rN   r   rP   otherr  r   s        r   test_project_v2_onto_otherz*Vector2TypeTest.test_project_v2_onto_other  s|     AqM1 5! 55<%))E"22U:VXX.VXX.r    c                 L   t        dd      }t        dd      }|j                  t        |            }|j                  |      |j                  |      z  |z  }| j	                  |j
                  |j
                         | j	                  |j                  |j                         y)#Project onto other tuple as vector.rY   r$   r"   N)r   r  r   rZ  r-   rM   rN   r  s        r   #test_project_v2_onto_other_as_tuplez3Vector2TypeTest.test_project_v2_onto_other_as_tuple!  s     AqM1 5<( 55<%))E"22U:VXX.VXX.r    c                 L   t        dd      }t        dd      }|j                  t        |            }|j                  |      |j                  |      z  |z  }| j	                  |j
                  |j
                         | j	                  |j                  |j                         y)"Project onto other list as vector.rY   r$   r"   N)r   r  r@   rZ  r-   rM   rN   r  s        r   "test_project_v2_onto_other_as_listz2Vector2TypeTest.test_project_v2_onto_other_as_list/  s     AqM1 4;' 55<%))E"22U:VXX.VXX.r    c                 v    t        dd      }t        dd      }| j                  t        |j                  |       y)ECheck if exception is raise when projected on vector has zero length.rY   r$   r   N)r   r   r   r  r   rP   r   s      r   /test_project_v2_raises_if_other_has_zero_lengthz?Vector2TypeTest.test_project_v2_raises_if_other_has_zero_length=  s2     AqM1 	*aii7r    c                 b    t        dd      }d}| j                  t        |j                  |       y)ECheck if exception is raise when projected on vector is not iterable.rY   r$   r   N)r   r   r   r  r*  s      r   /test_project_v2_raises_if_other_is_not_iterablez?Vector2TypeTest.test_project_v2_raises_if_other_is_not_iterableF  s,     AqM 	)QYY6r    c                     t        dd      }| j                  t        |t                     | j	                  t        |t
                     y )Nr$   r4  )r   r   r   r   r   r   rO   s     r   test_collection_abcz#Vector2TypeTest.test_collection_abcO  s5    AqM
1j12Ax01r    c                 P   t        dd      }|j                  d      }|j                  dd      }| j                  ||       |j                  d       | j                  ||       |j                  dd       | j                  ||       t        dd      }| j                  ||       y )N   rY   r"   r   gW, ;@gc(3I?)r   clamp_magnituder-   clamp_magnitude_ipr   rB   rE   r   expected_v2s        r   test_clamp_mag_v2_maxz%Vector2TypeTest.test_clamp_mag_v2_maxT  s    Q]"1%R 
a R 
a#R /1CDb)r    c                     t        dd      }|j                  dd      }|j                  dd       t        dd      }| j                  ||       | j                  ||       y )Nr   rY   r$   r"   gcOT\w?gcOT\w@)r   r3  r4  r-   r   rB   rE   r6  s       r   test_clamp_mag_v2_minz%Vector2TypeTest.test_clamp_mag_v2_minc  s]    Q]1%
a#02DEb)b)r    c           	         t        dd      }dD ]i  }| j                  |      5   |j                  | } |j                  |  | j	                  ||       | j	                  |t        dd             d d d        k y # 1 sw Y   vxY w)Nr   rY   )r   rv   )r%   gffffff@)(\?gp=
ף@gffffff@args)r   subTestr3  r4  r-   r   rB   r@  rE   s       r   test_clamp_mag_v2_no_changez+Vector2TypeTest.test_clamp_mag_v2_no_changek  s    Q]
 
	4D 4( 4'R''.%%%t,  R(  WQ]3	4 4
	44 4s   AA<<B	c                 f   t        dd      }|j                  dd      }|j                  dd       | j                  ||       | j	                  |j                         d       |j                  d      }|j                  dd       | j                  ||       | j                  |t                      y Nr   rY   rv   r   )r   r3  r4  r-   r   rj  r  s      r   test_clamp_mag_v2_edge_casesz,Vector2TypeTest.test_clamp_mag_v2_edge_casesy  s    Q]1%
a#R ryy{A."
a#R WY'r    c                 ~   t        dd      }dD ]a  }| j                  |      5   | j                  t        |j                  g|   | j                  t        |j
                  g|  d d d        c dD ]a  }| j                  |      5   | j                  t        |j                  g|   | j                  t        |j
                  g|  d d d        c t               }| j                  t        |j                  d       | j                  t        |j
                  d       y # 1 sw Y   !xY w# 1 sw Y   xY wNr   rY   ))foobarr   )g9vcu@test)invalid_args))ru   )r4  r$   )r   )rM  r   r$   r4  )r   rA  r   r   r3  r4  r   r   rB   rL  rE   s       r   test_clamp_mag_v2_errorsz(Vector2TypeTest.test_clamp_mag_v2_errors  s>   Q]
 	SL
 <8 S!!!)R-?-?O,O!!!)R-B-BR\RS S	S
 	TL <8 T!!!*b.@.@P<P!!!*b.C.CSlST T	T Y*b&8&8!<*b&;&;Q?#S ST Ts   AD&
AD3&D0	3D<	c           	         t        dd      } G d dt               } |dd      }| j                  |j                         d       | j                  t	        |      |       | j                  t	        |      t	        |j                                      | j                  |t	        |j                  |                   | j                  |t	        |j                  |d                   | j                  |t	        |j                  |d                   | j                  |t	        |j                  d                   | j                  |t	        |j                  d                   | j                  |t	        |j                  |                   | j                  |t	        |j                  |d                   | j                  |t	        |j                  d                   | j                  |t	        |j                  dd                   | j                  |t	        |j                         |z                 |dd      }| j                  t	        ||z         |       | j                  t	        ||z
        |       | j                  t	        |dz        |       | j                  t	        |dz        |       | j                  t	        |j                         dz        |       y	)
z Check if Vector2 is subclassabler4  rY   c                       e Zd Zd Zy)7Vector2TypeTest.test_subclassing_v2.<locals>.TestVectorc                      yN  r3   rH   s    r   supermariobrosiscoolzLVector2TypeTest.test_subclassing_v2.<locals>.TestVector.supermariobrosiscool      r    Nr/   r0   r1   rV  r3   r    r   
TestVectorrR        r    rY  r   rU  r"   r$   N)r   r-   rV  r	  r{   r   rr  r   r  r.  r6  r  r   r3  r  r   rP   rY  r   other1s        r   test_subclassing_v2z#Vector2TypeTest.test_subclassing_v2  sD   AqM	 	 1a 335s;DGZ0DGT%**,%78T%--*:%;<T%**Q*:%;<T%++a*;%<=T%,,q/%:;T%*:*:1*=%>?T%--*:%;<T%*<*<Q*B%CDT%*?*?*B%CDT%*?*?1*E%FGT%*;*;*=*E%FGAq!efn-z:efn-z:eai*5eai*5e//1Q67Dr    N)Ir/   r0   r1   rI   rQ   rT   rW   r\   r_   ra   rc   re   rq   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r(  r0  r<  r@  rC  rI  rO  rS  rX  r[  ra  rh  rk  rn  rv  r{  r  r  r  r  r  r  r  r   r  r  r  r  r!  r$  r'  r+  r.  r0  r7  r:  rC  rF  rO  r]  r3   r    r   r5   r5   O   su   #
#
#
#
#
#
#
#
6$MK^/<<<<($8L'6R#1J:7,7,34!
07"/3
"L.!
J	H
K>4BD*3
;
GHU*
60<>5}U~B458:.&(///872
**4
(@4Er    r5   c                      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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!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. Z0d/ Z1d0 Z2d1 Z3d2 Z4d3 Z5d4 Z6d5 Z7d6 Z8d7 Z9d8 Z:d9 Z;d: Z< e=j|                  e?d;      d<        Z@d= ZAd> ZBd? ZCd@ ZDdA ZEdB ZFdC ZGdD ZHdE ZIdF ZJdG ZKdH ZL e=j|                  e?d;      dI        ZMdJ ZNdK ZOdL ZPdM ZQdN ZRdO ZSdP ZTdQ ZUdR ZVdS ZWdT ZXdU ZYdV ZZdW Z[dX Z\dY Z]dZ Z^d[ Z_d\ Z`d] Zad^ Zby_)`Vector3TypeTestc                    t               | _        t        ddd      | _        t        ddd      | _        t        ddd      | _        d| _        t        | j
                        | _        t        | j
                        | _        d| _	        t        | j                        | _
        t        | j                        | _        d| _        d| _        y )Nr   r   r8   r9   333333#@)r:   r;   g @r:   r;   )r   r<   r=   r>   e3r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   s    r   rI   zVector3TypeTest.setUp  s    y!Q"!Q"!Q"!tww-$''"!tww-$''"r    c                     t               }| j                  |j                  d       | j                  |j                  d       | j                  |j                  d       y rK   r   r-   rM   rN   zrO   s     r   rQ   z'Vector3TypeTest.testConstructionDefault  sE    Ic"c"c"r    c                     t        ddd      }| j                  |j                  d       | j                  |j                  d       | j                  |j                  d       y )Nr8   r9   rb  re  rO   s     r   testConstructionXYZz#Vector3TypeTest.testConstructionXYZ  sL    Cc"c"c"c"r    c                     t        d      }| j                  |j                  d       | j                  |j                  d       | j                  |j                  d       y )Nra  r8   r9   rb  re  rO   s     r   ra   z%Vector3TypeTest.testConstructionTuple  sH    O$c"c"c"r    c                     t        g d      }| j                  |j                  d       | j                  |j                  d       | j                  |j                  d       y )Nr8   r9   333333#r8   r9   rl  re  rO   s     r   rc   z$Vector3TypeTest.testConstructionList  sI    $%c"c"d#r    c                     t        t        ddd            }| j                  |j                  d       | j                  |j                  d       | j                  |j                  d       y )Nr8   r9   rl  re  rO   s     r   testConstructionVector3z'Vector3TypeTest.testConstructionVector3  sQ    GCd+,c"c"d#r    c                     t        d      }| j                  |j                  d       | j                  |j                  d       | j                  |j                  d       y rS   re  rO   s     r   rT   z&Vector3TypeTest.testConstructionScalar  sG    AJc"c"c"r    c                     t        d      }| j                  |j                  d       | j                  |j                  d       | j                  |j                  d       y rV   re  rO   s     r   rW   z.Vector3TypeTest.testConstructionScalarKeywords  sG    aLc"c"c"r    c                     t        ddd      }| j                  |j                  d       | j                  |j                  d       | j                  |j                  d       y )Nr   rY   r$   )rM   rN   rf  r   r[   r  re  rO   s     r   r\   z(Vector3TypeTest.testConstructionKeywords  sL    a1"c"c"c"r    c                 v    | j                  t        t        dd       | j                  t        t        dd       y )Nr   rY   rZ   )r   r   r   rH   s    r   testConstructionMissingz'Vector3TypeTest.testConstructionMissing  s-    *gq!4*ga8r    c                    | j                   j                  }| j                  || j                   j                         | j                  || j                   d          | j                   j                  }| j                  || j                   j                         | j                  || j                   d          | j                   j                  }| j                  || j                   j                         | j                  || j                   d          d| j                   _        | j                  | j                   j                  d       d| j                   _        | j                  | j                   j                  d       d| j                   _        | j                  | j                   j                  d       d }| j                  t        |       y )Nr   r   rY   rg   c                  &    t               } d| _        y ri   rk   rl   s    r   rm   z<Vector3TypeTest.testAttributeAccess.<locals>.assign_nonfloat  rn   r    )rB   rM   r-   rN   rf  r   r   ro   s      r   rq   z#Vector3TypeTest.testAttributeAccess  s9   ggiidggii(dggaj)ggiidggii(dggaj)ggiidggii(dggaj)	E*	E*	E*	 	)_5r    c                 "   t        ddd      }|j                         }| j                  |j                  |j                         | j                  |j                  |j                         | j                  |j
                  |j
                         y )Ng     x@g     @g     8@)r   r   r-   rM   rN   rf  r   s      r   r   zVector3TypeTest.testCopy  sc    &&&1,,.GII.GII.GII.r    c                    t        ddd      | j                  t              d       | j                  d   d       | j                  d   d       | j                  d   d       | j                  t        fd       | j                  d	   d       | j                  d
   d       | j                  d   d       | j                  t        fd       | j                  d d  g d       | j                  dd  ddg       | j                  d d dg       | j                  d d	 ddg       | j                  dd dg       | j                  t              g d       | j                  t              d       dd<   dd<   dd<   | j                  j                  d       | j                  j                  d       | j                  j                  d       g dd d  | j                  j                  d       | j                  j                  d       | j                  j                  d       d }| j                  t        |       d }| j                  t        |       d }| j                  t        |       y )Nr8   r9   rl  r$   r   r   rY   c                       d   S r  r3   rl   s   r   r   z.Vector3TypeTest.testSequence.<locals>.<lambda>'  r   r    ru   r   r   c                       d   S )NrM  r3   rl   s   r   r   z.Vector3TypeTest.testSequence.<locals>.<lambda>+  r   r    rk  r:   r;   g )r   r   R*r   r   rz  c                  &    t               } g d| d d  y N)r   rY   r$   r4  r   rl   s    r   r   z2Vector3TypeTest.testSequence.<locals>.overpopulate>  s    	AAaDr    c                  $    t               } dg| d d  y r   r}  rl   s    r   r   z3Vector3TypeTest.testSequence.<locals>.underpopulateD  r   r    c                  "    t               } d| d<   y r   r   rl   s    r   rm   z5Vector3TypeTest.testSequence.<locals>.assign_nonfloatJ  r   r    )r   r-   r   r   r   r@   r   rM   rN   rf  r   r   r   s       @r   r   zVector3TypeTest.testSequence!  sA   Cd#Q#1s#1s#1t$*l32%2$2$*m41/012d,2A&3B#s,1Q#'a"23q#34!!!c"c"d##!c"e$f%	  	*l3	 	*m4	 	)_5r    c                    dd}t        | j                        }| j                  t        ||d d d       | j                  t        ||dd d       | j                  t        ||ddd       t        | j                        }ddg|d d d<   | j	                  |d| j                  j
                  dg       t        | j                        }ddg|d d d<   | j	                  |d| j                  j
                  dg       t        | j                        }||d d d	<   | j	                  || j                  j                  | j                  j
                  | j                  j                  g       t        | j                        }t        | j                        }t        | j                        }d
g|dd d
g|t        dd      <   d|dd | j	                  ||       | j	                  ||       | j	                  t        |      t        | j                               | j	                  t        |      t        | j                               | j	                  t        |      t        | j                               y )Nc                 V    ||	|| |||= y ||	|| |d |= y ||
|| d d |= y y y y r   r3   r   s       r   r   z5Vector3TypeTest.testExtendedSlicing.<locals>.delSliceR  r   r    rY   r   rt   gr      r   ru   r   r   r   )
r   rB   r   r   r-   rN   rf  rM   r   r{   r   s         r   r   z#Vector3TypeTest.testExtendedSlicingP  s   	  DGG)Xq$a@)Xq!T1=)Xq!Q: DGG#A#T47799d34DGGr($B$RB/0DGG$B$TWWYY		47799=>DGGDGGDGG!A%1+!AAAa$tww-0a$tww-0a$tww-0r    c                    t        ddd      | j                  j                  d             | j                  dv        | j                  dv        | j                  dv        | j                  dv       | j                  j                  d             | j	                  t
        fd       | j	                  t
        fd       y )Nr   r   rY   r$   r   c                      d v S r   r3   r   s   r   r   z/Vector3TypeTest.test_contains.<locals>.<lambda>  r   r    c                      d v S r   r3   r   s   r   r   z/Vector3TypeTest.test_contains.<locals>.<lambda>  r   r    )r   r   r   r   r   r   r   s    @r   r   zVector3TypeTest.test_containsu  s    Aq! 	q)*QQQ
#+,)%:;)%89r    c                 t
   | j                   | j                  z   }| j                  t        |t	        | j                                      | j                  |j                  | j                   j                  | j                  j                  z          | j                  |j                  | j                   j                  | j                  j                  z          | j                  |j                  | j                   j                  | j                  j                  z          | j                   | j                  z   }| j                  t        |t	        | j                                      | j                  |j                  | j                   j                  | j                  d   z          | j                  |j                  | j                   j                  | j                  d   z          | j                  |j                  | j                   j                  | j                  d   z          | j                   | j                  z   }| j                  t        |t	        | j                                      | j                  |j                  | j                   j                  | j                  d   z          | j                  |j                  | j                   j                  | j                  d   z          | j                  |j                  | j                   j                  | j                  d   z          | j                  | j                  z   }| j                  t        |t	        | j                                      | j                  |j                  | j                  d   | j                  j                  z          | j                  |j                  | j                  d   | j                  j                  z          | j                  |j                  | j                  d   | j                  j                  z          | j                  | j                  z   }| j                  t        |t	        | j                                      | j                  |j                  | j                  d   | j                  j                  z          | j                  |j                  | j                  d   | j                  j                  z          | j                  |j                  | j                  d   | j                  j                  z          y Nr   r   rY   rB   rE   r   r   r{   r-   rM   rN   rf  rC   rD   r?   rA   r   s     r   r   zVector3TypeTest.testAdd  J   WWtww
2tDGG}56twwyy4779945twwyy4779945twwyy4779945WWtww
2tDGG}56twwyy4771:56twwyy4771:56twwyy4771:56WWtww
2tDGG}56twwyy4771:56twwyy4771:56twwyy4771:56WWtww
2tDGG}56twwqzDGGII56twwqzDGGII56twwqzDGGII56WWtww
2tDGG}56twwqzDGGII56twwqzDGGII56twwqzDGGII56r    c                 t
   | j                   | j                  z
  }| j                  t        |t	        | j                                      | j                  |j                  | j                   j                  | j                  j                  z
         | j                  |j                  | j                   j                  | j                  j                  z
         | j                  |j                  | j                   j                  | j                  j                  z
         | j                   | j                  z
  }| j                  t        |t	        | j                                      | j                  |j                  | j                   j                  | j                  d   z
         | j                  |j                  | j                   j                  | j                  d   z
         | j                  |j                  | j                   j                  | j                  d   z
         | j                   | j                  z
  }| j                  t        |t	        | j                                      | j                  |j                  | j                   j                  | j                  d   z
         | j                  |j                  | j                   j                  | j                  d   z
         | j                  |j                  | j                   j                  | j                  d   z
         | j                  | j                  z
  }| j                  t        |t	        | j                                      | j                  |j                  | j                  d   | j                  j                  z
         | j                  |j                  | j                  d   | j                  j                  z
         | j                  |j                  | j                  d   | j                  j                  z
         | j                  | j                  z
  }| j                  t        |t	        | j                                      | j                  |j                  | j                  d   | j                  j                  z
         | j                  |j                  | j                  d   | j                  j                  z
         | j                  |j                  | j                  d   | j                  j                  z
         y r  r  r   s     r   r   zVector3TypeTest.testSub  r  r    c                    | j                   | j                  z  }| j                  t        |t	        | j                                     | j                  |j                  | j                   | j                  j                  z         | j                  |j                  | j                   | j                  j                  z         | j                  |j                  | j                   | j                  j                  z         | j                  | j                  z  }| j                  |j                  | j                  j                  | j                  z         | j                  |j                  | j                  j                  | j                  z         | j                  |j                  | j                  j                  | j                  z         y r   )
rF   rB   r   r   r{   r-   rM   rN   rf  rG   rO   s     r   r   z(Vector3TypeTest.testScalarMultiplication  s   GGdgg
1d477m45dgg		12dgg		12dgg		12GGdggdggii$''12dggii$''12dggii$''12r    c                    | j                   | j                  z  }| j                  t        |t	        | j                                      | j                  |j                  | j                   j                  | j                  z         | j                  |j                  | j                   j                  | j                  z         | j                  |j                  | j                   j                  | j                  z         | j                   | j                  z  }| j                  t        |t	        | j                                      | j                  |j                  | j                   j                  | j                  z         | j                  |j                  | j                   j                  | j                  z         | j                  |j                  | j                   j                  | j                  z         y r   )rB   rF   r   r   r{   r   rM   rN   rf  rG   r-   rO   s     r   r  z"Vector3TypeTest.testScalarDivision  s:   GGdgg
1d477m45qssDGGII$78qssDGGII$78qssDGGII$78GGtww
1d477m45dggii47723dggii47723dggii47723r    c                    | j                  t        | j                        d       | j                  t        | j                        d       | j	                  | j                          | j	                  | j                         y r  r  rH   s    r   r  zVector3TypeTest.testBool  r  r    c                    | j                   }| j                  t        |t        | j                                      | j	                  |j
                  | j                   j
                         | j	                  |j                  | j                   j                         | j	                  |j                  | j                   j                         | j                  t        |      t        | j                                | j                    }| j                  t        |t        | j                                      | j	                  |j
                  | j                   j
                          | j	                  |j                  | j                   j                          | j	                  |j                  | j                   j                          | j                  t        |      t        | j                                y r   )
rB   r   r   r{   r-   rM   rN   rf  r	  r
  rO   s     r   r  zVector3TypeTest.testUnary  s4   WWH
1d477m45dggii(dggii(dggii(BqE2dgg;/WWH
1d477m45twwyyj)twwyyj)twwyyj)BqE2dgg;/r    c                 Z   t        ddd      }t        ddd      }t        ddd      }| j                  ||k(  d       | j                  ||k7  d	       | j                  ||k7  d       | j                  ||k(  d	       | j                  |d
k(  d       | j                  |d
k7  d	       | j                  |ddgk7  d       | j                  |ddgk(  d	       | j                  |dk7  d       | j                  |dk(  d	       | j                  |g dk7  d       | j                  |g dk(  d	       y )Nr$   r      r  r  g      *@r   TF)r$   r   r  r"   )r$   r   r   r   r   r-   r  s       r   r  zVector3TypeTest.testCompare  s.   !R$#tT*1a#G+T2G+U3H,d3H,e4K/6K/7QF*D1QF*E2At,Au-M148M159r    c                 T    t        ddd      }| j                  t        |      d       y )Nr8   r9   r:   z[1.2, 3.4, 5.6])r   r-   r   rO   s     r   r  zVector3TypeTest.testStr  s%    Cc"Q!23r    c                     t        ddd      }| j                  |j                         d       | j                  |t        |j                                      y )Nr8   r9   rl  z<Vector3(1.2, 3.4, -9.6)>)r   r-   r  rO   s     r   r  zVector3TypeTest.testRepr  sB    Cd#'BCGAJJL12r    c                    | j                   j                         }|j                  | j                          | j                   d          | j                          | j                   d          | j                          | j                   d          | j	                  t
        fd       | j                   j                         }| j                   j                         }| j                  t        |      t        |             | j                  t        |      t        |j                                      | j                  t        |      t        |             | j                  t        | j                   j                               | j                         d}| j                   D ]&  }| j                  || j                   |          |dz  }( y )Nr   r   rY   c                               S r   r3   r  s   r   r   z*Vector3TypeTest.testIter.<locals>.<lambda>  r  r    r  r"  s         @r   r(  zVector3TypeTest.testIter  sN   WW$''!*-$''!*-$''!*--9gg gg BsGRW-C"S\\^"45cDI.dgg..01477;77 	CS$''#,/1HC	r    c                    | j                  t        t        j                  ddd            t        j                  ddd             | j                  t	        t        t        j                  ddd                  t        j                         | j                  t        t        j                  ddd            t        t        j                  ddd                   | j                  t        t        j                  ddd            t        t        j                  ddd                   | j                  t        t        j                  ddd            t        j                  ddd             | j                  t        t        j                  ddd            t        j                  ddd             | j                  t        t        j                  ddd            t        j                  ddd             | j                  t        t        j                  ddd            t        j                  ddd             | j                  t        t        j                  ddd            t        j                  ddd             | j                  t        t        j                  d	d	d	            t        j                  d	d	d	             | j                  t        t        j                  d
d
d
            t        j                  ddd             | j                  t        t        j                  ddd            t        j                  ddd             | j                  t        t        j                  ddd            t        j                  ddd             | j                  t        t        j                  ddd            t        j                  ddd             | j                  t        t        j                  ddd            t        j                  ddd             | j                  t        t        j                  ddd            t        j                  ddd             | j                  t        t        j                  ddd            t        j                  ddd             | j                  t        t        j                  ddd            t        j                  ddd             | j                  t        t        j                  ddd            t        j                  ddd             | j                  t        t        j                  ddd            t        j                  ddd             | j                  t        t        j                  ddd            t        j                  ddd             | j                  t        t        j                  ddd            t        j                  ddd             | j                  t        t        j                  ddd            t        j                  ddd             | j                  t        t        j                  ddd      d      t        j                  ddd             | j                  t	        t        t        j                  ddd      d            t        j                         | j                  t	        t        t        j                  ddd      d            t        j                         | j                  t	        t        t        j                  ddd      d            t        j                         | j                  t        t        j                  ddd            t        j                  ddd             | j                  t        t        j                  ddd            t        j                  ddd             | j                  t        t        j                  ddd            t        j                  d d d              | j                  t        t        j                  d!d!d!            t        j                  d"d"d"             | j                  t        t        j                  d#d#d#            t        j                  d$d$d$             | j                  t        t        j                  d%d%d%            t        j                  d"d"d"             | j                  t        t        t        j                  ddd      d&       | j                  t        t        t        j                  ddd      d'       y rs   )r-   rz   r   r   r{   r   r   rH   s    r   r|   z$Vector3TypeTest.test___round___basic  s   &..c3/0&..c32O	
 	eFNN3S$ABCV^^T&..c3/0%sCQT8U2V	
 	&..tT23&..tT23	
 	&..|\JKNN<|D	
 	&..tT23V^^D$PT5U	
 	&..tT23V^^D$PT5U	
 	&..u56NN5%/	
 	&..}MNNN=-G	
 	&..u56NN5%/	

 	&..c3/0&..c32O	
 	&..c3/0&..c32O	
 	&..tT23V^^D$PT5U	
 	&..|\JKNN<|D	

 	&..tT23V^^D$PT5U	
 	&..u56NN5%/	
 	&..}MNNN=-G	

 	&..c3/0&..c32O	
 	&..c3/0&..tT2R	
 	&..k;GHNN<|D	

 	&..tT23V^^D$PT5U	
 	&..tT23V^^E5RW5X	
 	&..|\JKNN=-G	

 	&..tT2B7NN5%/	
 	v~~dD$7<=v~~	
 	v~~dD$7;<fnn	
 	v~~dD$7;<fnn	

 	v~~c3<=v~~aQRTU?VW&..c3/0&..c32O	
 	&..c3/0&..c32O	
 	&..tT23V^^BB5O	
 	&..tT23V^^BB5O	
 	&..tT23V^^BB5O	
 	)UFNN3S,I3O)UFNN3S,I3Or    c           
      0   t        ddd      }t        ddd      }|j                  d|      }|j                  d|      }| j                  |j                  d       | j                  |j                  d       | j                  |j
                  d       | j                  |j                  d       | j                  |j                  d       | j                  |j
                  d       | j                  |j                  |j                         | j                  |j                  |j                         | j                  |j
                  |j
                         t        ddd      }|j                  d|      }| j                  |j                  d       | j                  |j                  d       | j                  |j
                  d       |j                  d|      }| j                  |j                  |j                         | j                  |j                  |j                         | j                  |j
                  |j
                         |j                  d|      }| j                  |j                  |j                         | j                  |j                  |j                         | j                  |j
                  |j
                         | j                  t        ddd      j                  dt        ddd            t        ddd             y )	Nr   r   r*  r+  ru   r,  r-  g(v@)r   r.  r-   rM   rN   rf  )r   rB   axisrE   r   s        r   r0  zVector3TypeTest.test_rotate  sD   Q1q!QYYr4 YYx&q!q!q!q!q!r"rtt$rtt$rtt$RR YYsD!q!r"r"YYsD!rtt$rtt$rtt$YYq$rtt$rtt$rtt$Aq!##KAq1ABGAqRSDT	
r    c                 ~   t        ddd      }dt        j                  fdt        j                  dz  fdt        j                   dz  fdt        j                  dz  ff}|D ][  \  }}t        |      j                  ||      }| j	                  |t        j
                  |      t        j                  |      df       ] y Nr   r   r   r   r   rY   r4  )r   r   r5  r6  r-   r7  r8  r   r  r9  r:  r;  r   s         r   r<  zVector3TypeTest.test_rotate_rad  s    q!Q !$1%!$	
 $) 	MJ*%00$?CS488G#4dhhw6G"KL	Mr    c                 
   t        ddd      }t        ddd      }| j                  |j                  d|      d        | j                  |j                  d       | j                  |j                  d       | j                  |j
                  d       t        ddd      }|j                  d|       | j                  |j                  d       | j                  |j                  d       | j                  |j
                  d       y r>  )r   r-   r?  rM   rN   rf  )r   rP   r  s      r   r@  zVector3TypeTest.test_rotate_ip  s    Aq!q!QR.5a a b!BA	Cb!b!b!r    c                    t        ddd      }dt        j                  fdt        j                  dz  fdt        j                   dz  fdt        j                  dz  ff}|D ]]  \  }}t        |      }|j                  ||       | j	                  |t        j
                  |      t        j                  |      df       _ y r  )r   r   r5  rB  r-   r7  r8  r  s         r   rC  z"Vector3TypeTest.test_rotate_rad_ip  s    q!Q !$1%!$	
 $) 	MJ*%Cgt,S488G#4dhhw6G"KL	Mr    c                    t        ddd      }|j                  d      }|j                  d      }| j                  |j                  d       | j                  |j                  d       | j                  |j
                  d       | j                  |j                  d       | j                  |j                  d       | j                  |j
                  d       | j                  |j                  |j                         | j                  |j                  |j                         | j                  |j
                  |j
                         t        ddd      }|j                  d      }| j                  |j                  d       | j                  |j                  d       | j                  |j
                  d       |j                  d      }| j                  |j                  |j                         | j                  |j                  |j                         | j                  |j
                  |j
                         |j                  d      }| j                  |j                  |j                         | j                  |j                  |j                         | j                  |j
                  |j
                         y Nr   r   r*  r+  ru   r,  r-  )r   rotate_xr-   rM   rN   rf  r   r/  s       r   test_rotate_xzVector3TypeTest.test_rotate_x  s   Q1[[_[["q!q!q!q!q!q!rtt$rtt$rtt$RR [[r"rttR(rttQ'[[rttRTT*rttRTT*rttRTT*[[^rtt$rttRTT*rttRTT*r    c                     t        ddd      }|j                  t        j                  dz        }| j	                  |d       y Nr   r   rY   )r   r   r   )r   rotate_x_radr   r5  r-   r   r   r   s      r   test_rotate_x_radz!Vector3TypeTest.test_rotate_x_rad  8    aA!!$''A+.+r    c                    t        ddd      }| j                  |j                  d      d        | j                  |j                  d       | j                  |j                  d       | j                  |j
                  d       t        ddd      }|j                  d       | j                  |j                  d       | j                  |j                  d       | j                  |j
                  d       y r>  )r   r-   rotate_x_iprM   rN   rf  r   rO   s     r   test_rotate_x_ipz Vector3TypeTest.test_rotate_x_ip  s    Aq!r*D1a a a BA	cb!qssA&qssA&r    c                     t        ddd      }|j                  t        j                  dz         | j	                  |d       y r  )r   rotate_x_rad_ipr   r5  r-   r   r   s     r   test_rotate_x_rad_ipz$Vector3TypeTest.test_rotate_x_rad_ip  6    aADGGaK(i(r    c                    t        ddd      }|j                  d      }|j                  d      }| j                  |j                  d       | j                  |j                  d       | j                  |j
                  d       | j                  |j                  d       | j                  |j                  d       | j                  |j
                  d       | j                  |j                  |j                         | j                  |j                  |j                         | j                  |j
                  |j
                         t        ddd      }|j                  d      }| j                  |j                  d       | j                  |j                  d       | j                  |j
                  d       |j                  d      }| j                  |j                  |j                         | j                  |j                  |j                         | j                  |j
                  |j
                         |j                  d      }| j                  |j                  |j                         | j                  |j                  |j                         | j                  |j
                  |j
                         y r  )r   rotate_yr-   rM   rN   rf  r   r/  s       r   test_rotate_yzVector3TypeTest.test_rotate_y  s   Q1[[_[["q!q!q!rttQ'q!rttR(rttRTT*rtt$rttRTT*RR [[rttQ'r"rttR([[rttRTT*rtt$rttRTT*[[^rtt$rtt$rtt$r    c                     t        ddd      }|j                  t        j                  dz        }| j	                  |d       y Nr   r   rY   r   r   ru   )r   rotate_y_radr   r5  r-   r  s      r   test_rotate_y_radz!Vector3TypeTest.test_rotate_y_rad  s8    aA!!$''A+.,r    c                    t        ddd      }| j                  |j                  d      d        | j                  |j                  d       | j                  |j
                  d       | j                  |j                  d       t        ddd      }|j                  d       | j                  |j                  d       | j                  |j
                  d       | j                  |j                  d       y r>  )r   r-   rotate_y_ipr   rM   rN   rf  rO   s     r   test_rotate_y_ipz Vector3TypeTest.test_rotate_y_ip  s    Aq!r*D1qssA&a qssB'BA	cqssB'b!qssB'r    c                     t        ddd      }|j                  t        j                  dz         | j	                  |d       y r  )r   rotate_y_rad_ipr   r5  r-   r  s     r   test_rotate_y_rad_ipz$Vector3TypeTest.test_rotate_y_rad_ip+  s6    aADGGaK(j)r    c                    t        ddd      }|j                  d      }|j                  d      }| j                  |j                  d       | j                  |j                  d       | j                  |j
                  d       | j                  |j                  d       | j                  |j                  d       | j                  |j
                  d       | j                  |j                  |j                         | j                  |j                  |j                         | j                  |j
                  |j
                         t        ddd      }|j                  d      }| j                  |j                  d       | j                  |j                  d       | j                  |j
                  d       |j                  d      }| j                  |j                  |j                         | j                  |j                  |j                         | j                  |j
                  |j
                         |j                  d      }| j                  |j                  |j                         | j                  |j                  |j                         | j                  |j
                  |j
                         y r  )r   rotate_zr-   rM   rN   rf  r   r/  s       r   test_rotate_zzVector3TypeTest.test_rotate_z0  s   Q1[[_[["q!q!q!rttQ'rttQ'q!rttRTT*rttRTT*rtt$RR [[rttR(rttQ'r"[[rttRTT*rttRTT*rtt$[[^rttRTT*rttRTT*rtt$r    c                     t        ddd      }|j                  t        j                  dz        }| j	                  |d       y Nr   r   rY   r   r   r   )r   rotate_z_radr   r5  r-   r  s      r   test_rotate_z_radz!Vector3TypeTest.test_rotate_z_radK  r  r    c                    t        ddd      }| j                  |j                  d      d        | j                  |j                  d       | j                  |j
                  d       | j                  |j                  d       t        ddd      }|j                  d       | j                  |j                  d       | j                  |j
                  d       | j                  |j                  d       y r>  )r   r-   rotate_z_ipr   rM   rN   rf  rO   s     r   test_rotate_z_ipz Vector3TypeTest.test_rotate_z_ipP  s    Aq!r*D1qssA&qssA&a BA	cqssB'qssA&a r    c                     t        ddd      }|j                  t        j                  dz         | j	                  |d       y r  )r   rotate_z_rad_ipr   r5  r-   r  s     r   test_rotate_z_rad_ipz$Vector3TypeTest.test_rotate_z_rad_ip\  r  r    c                 <     j                   j                         } j                  |j                  |j                  z  |j                  |j                  z  z   |j
                  |j
                  z  z   d        j                   j                   j                   j                  d           j                   j                   j                   j                  d           j                   j                   j
                   j                  d           j                   j                  |j
                  z   j                   j
                  |j                  z  z
  dz   j                   j
                  |j                  z   j                   j                  |j
                  z  z
  dz  z    j                   j                  |j                  z   j                   j                  |j                  z  z
  dz  z   } j                  |d        j                  t         fd       y )Nr   r   r   rY   r   c                  8     j                   j                         S r   rF  rH   s   r   r   z0Vector3TypeTest.test_normalize.<locals>.<lambda>p  rH  r    )
rB   rG  r   rM   rN   rf  r-   rA   r   r   r   rP   rW  s   `  r   rI  zVector3TypeTest.test_normalizea  sn   GGqssQSSy13394qssQSSy@#FDGGAJ/DGGAJ/DGGAJ/ WWYY_twwyy133.14wwyy133QSS0Q67wwyy133QSS0Q67 	
 	uc**&FGr    c                      j                   } j                  |j                  |j                  z  |j                  |j                  z  z   |j                  |j                  z  z   d        j                  |j                         d         j                  |j                  |j                  z  |j                  |j                  z  z   |j                  |j                  z  z   d        j                   j                  |j                  z   j                   j                  |j                  z  z
  dz   j                   j                  |j                  z   j                   j                  |j                  z  z
  dz  z    j                   j                  |j                  z   j                   j                  |j                  z  z
  dz  z   } j                  |d        j                  t         fd       y )Nr   rY   r   c                  8     j                   j                         S r   rL  rH   s   r   r   z3Vector3TypeTest.test_normalize_ip.<locals>.<lambda>  rN  r    )
rB   r	  rM   rN   rf  r-   rM  r   r   r   r  s   `  r   rO  z!Vector3TypeTest.test_normalize_ipr  s\   WWHACC!##Iacc	1ACC!##I=sC)40qssQSSy13394qssQSSy@#F WWYY_twwyy133.14wwyy133QSS0Q67wwyy133QSS0Q67 	
 	uc**&IJr    c                 t   | j                  | j                  j                         d       | j                  j                         }| j                  |j                         d       | j                  | j                  j                         d       | j                  | j
                  j                         d       y r  rQ  rO   s     r   rS  z"Vector3TypeTest.test_is_normalized  rT  r    c                    d }| j                  | j                  j                  | j                         || j                  | j                               | j                  | j                  j                  | j                         || j                  | j                               | j                  | j                  j                  | j
                         || j                  | j
                               | j                  | j                  j                  | j                        | j                  j                  | j                                | j                  | j                  j                  | j                        | j                         y )Nc                     t        | d   |d   z  | d   |d   z  z
  | d   |d   z  | d   |d   z  z
  | d   |d   z  | d   |d   z  z
        S Nr   rY   r   r}  )ry   r   s     r   rW  z)Vector3TypeTest.test_cross.<locals>.cross  so    !qtadQqTk)!qtadQqTk)!qtadQqTk) r    )r-   rB   rW  rE   rD   rC   r<   )r   rW  s     r   rX  zVector3TypeTest.test_cross  s    	 	tww/tww1HItww/tww1HItww/tww1HItww/$''--2H1HItww/>r    c                 `   | j                  | j                  j                  | j                        | j                  j                  | j                  j                  z  | j                  j
                  | j                  j
                  z  z   | j                  j                  | j                  j                  z  z          | j                  | j                  j                  | j                        | j                  j                  | j                  d   z  | j                  j
                  | j                  d   z  z   | j                  j                  | j                  d   z  z          | j                  | j                  j                  | j                        | j                  j                  | j                  d   z  | j                  j
                  | j                  d   z  z   | j                  j                  | j                  d   z  z          | j                  | j                  j                  | j                        | j                  j                  | j                               | j                  | j                  j                  | j                        | j                  | j                  z         y r  )	r   rB   rZ  rE   rM   rN   rf  rD   rC   rH   s    r   r[  zVector3TypeTest.test_dot  s   GGKK GGII		!DGGII		$99DGGII		<QQ	
 	GGKK GGII
"TWWYY%;;dggii$''RS*>TT	
 	GGKK GGII
"TWWYY%;;dggii$''RS*>TT	
 	tww{{4773TWW[[5IJtww{{4773TWWtww5FGr    c           	         | j                  t        ddd      j                  d      d       | j                  t        ddd      j                  d      d       | j                  t        ddd      j                  d      d       | j                  t        t        ddd      j                  d            d	       | j                  | j                  j                  | j                  j                  | j                        | j                  j                  | j                              j                         | j                  j                                y )
Nr   r   )ru   r   r   r*  r  )ru   r   r   r]  )ru   r   ru   r^  )	r-   r   r_  r`  rB   r.  rE   rW  rG  rH   s    r   ra  zVector3TypeTest.test_angle_to  s    Aq)22:>CAq)22:>CAq)22:>DWQ1-66{CDcJ 	GGNN  )477==+AikGG		
r    c                 T    t        ddd      }|j                  d        j                  |t        ddd      t        j                  d      z          j                  t         fd        j                  |j                  d      d         j                  | j                         y )Nr   r(   r$   c                  :     j                   j                  d      S r   rd  rH   s   r   r   z6Vector3TypeTest.test_scale_to_length.<locals>.<lambda>  rf  r    r   )r   re  r-   r   rg  r   r   r<   rO   s   ` r   rh  z$Vector3TypeTest.test_scale_to_length  s    Aq!	#GCc2TYYq\AB*&MN**1-t4DLL)r    c                 P   | j                  t        ddd      j                         t        j                  d             | j                  t        ddd      j                         t        j                  d             | j                  | j
                  j                         d       y Nr$   r4  r"   2   r   r   )r-   r   rj  r   rg  r<   rH   s    r   rk  zVector3TypeTest.test_length  sw    Aq)002DII>S4TUQ*113TYY?V5WX,,.2r    c                    | j                  t        ddd      j                         d       | j                  t        ddd      j                         d       | j                  | j                  j                         d       y r  )r-   r   rm  r<   rH   s    r   rn  z#Vector3TypeTest.test_length_squared  se    Aq)88:<QRQ*99;=TU446:r    c                 t    t        ddd      t        ddd      } j                  j                  |      t        ddd              j                  j                  d|z        j                  |              j                  j                                  j                  t         fd       y )Nr   ru   r   r$   c                  :    j                   j                        S r   rq  rO   s   r   r   z.Vector3TypeTest.test_reflect.<locals>.<lambda>  rs  r    )r   r-   rr  r   r   rt  s   ` @r   rv  zVector3TypeTest.test_reflect  s    Ar1Aq!1wq!Q'781q5)199Q<8A2+*&EFr    c                     t        ddd      }t        |      t        ddd      } j                  j                  |      d         j                  t        ddd             t        |      j                  d|z          j                  |j                  |             t        |      j                  |         j                  |         j	                  t
         fd       y )Nr   ru   r   r$   c                  :    j                   j                        S r   )ry  r<   )r   rE   s   r   r   z1Vector3TypeTest.test_reflect_ip.<locals>.<lambda>  s    bmmDLL.I r    )r   r-   ry  rr  r   r   rz  s   `  @r   r{  zVector3TypeTest.test_reflect_ip  s    QAR[Aq!q)40WQ1-.R[
a!eRZZ]+R[
rcbS!*&IJr    c                    | j                   | j                  z
  }| j                  | j                  j	                  | j
                        t        j                  d             | j                  | j                  j	                  d      t        j                  d             | j                  | j                  j	                  g d      t        j                  d             | j                  | j                   j	                  | j                        t        j                  |j                  |j                  z  |j                  |j                  z  z   |j                  |j                  z  z                | j                  | j                   j	                  | j                        t        j                  |j                  |j                  z  |j                  |j                  z  z   |j                  |j                  z  z                | j                  | j                   j	                  | j                        t        j                  |j                  |j                  z  |j                  |j                  z  z   |j                  |j                  z  z                | j                  | j                   j	                  | j                         d       | j                  | j                   j	                  | j                        d       | j                  | j                   j	                  | j                        d       | j                  | j                   j	                  | j                        | j                  j	                  | j                                | j                  | j                   j	                  | j                        | j                  j	                  | j                               | j                  | j                   j	                  | j                        | j                  j	                  | j                               y NrY   r  r   )rB   rE   r-   r=   r~  r>   r   rg  rM   rN   rf  rC   rD   r?   rA   r  s     r   r  z Vector3TypeTest.test_distance_to  s   ww ,,TWW5tyy|D,,Y71F,,Y71FGG(IIdfftvvo7$&&466/IJ	
 	GG(IIdfftvvo7$&&466/IJ	
 	GG(IIdfftvvo7$&&466/IJ	
 	,,TWW5q9,,TWW5q9,,TWW5q9,,TWW5tww7J7J4777ST,,TWW5tww7J7J4777ST,,TWW5tww7J7J4777STr    c                 4   t        dd      }t        ddd      }| j                  t        |j                  |       | j                  t        |j                  |       | j                  t        |j                  d       | j                  t        |j                  d       | j                  t        |j                  d       | j                  t        |j                  g d       | j                  t        |j                  g d       | j                  t        |j                  dg       | j                  t        |j                  d       | j                  t        |j                  d       | j                  t        |j                  d       | j                  t        |j                  ddg       | j                  t        |j                  dg       | j                  t
        |j                  d       | j                  t
        |j                  g g f       | j                  t
        |j                  d       | j                  t
        |j                         | j                  t
        |j                  dd	       | j                  t
        |j                  dd	d       y 
Nr   r   r   r   r   )r   r   r   r  r  )r   r)   )r   )r)   r  )r   r   r   r   r~  r   )r   rE   r   s      r   test_distance_to_exceptionsz+Vector3TypeTest.test_distance_to_exceptions  s   R_Q1 	*bnnb9*bnnb9 	*bnni@*bnni@*bnnd;*bnni@*bnni@NN	
 	*bnni@*bnnf=*bnnd;*bnnq!f=NN	
 	)R^^\B)R^^b"X>)R^^_E 	)R^^4)R^^VVD)R^^VVQGr    c                    t        dd      }t        ddd      }|j                  }|j                  }| j                  t        ||       | j                  t        ||       | j                  t        |d       | j                  t        |d       | j                  t        |d       | j                  t        |g d       | j                  t        |g d       | j                  t        |dg       | j                  t        |d       | j                  t        |d       | j                  t        |d       | j                  t        |ddg       | j                  t        |dg       | j                  t
        |d       | j                  t
        |g g f       | j                  t
        |d       | j                  t
        |       | j                  t
        |dd	       | j                  t
        |dd	d       y r  )r   r   r  r   r   r   )r   rE   r   dist_tdist_t3s        r   #test_distance_squared_to_exceptionsz3Vector3TypeTest.test_distance_squared_to_exceptions"  s   R_Q1''((*fb1*gr2 	*fi8*fi8*fd3*fi8*fi8	
 	*fi8*gv6*gt4*g1v6	
 	)V\:)Vb"X6)V_= 	)V,)VVV<)VVVQ?r    c                    | j                   | j                  z
  }| j                  | j                  j	                  | j
                        d       | j                  | j                  j	                  d      d       | j                  | j                  j	                  g d      d       | j                  | j                   j	                  | j                        |j                  |j                  z  |j                  |j                  z  z   |j                  |j                  z  z          | j                  | j                   j	                  | j                        |j                  |j                  z  |j                  |j                  z  z   |j                  |j                  z  z          | j                  | j                   j	                  | j                        |j                  |j                  z  |j                  |j                  z  z   |j                  |j                  z  z          | j                  | j                   j	                  | j                         d       | j                  | j                   j	                  | j                        d       | j                  | j                   j	                  | j                        d       | j                  | j                   j	                  | j                        | j                  j	                  | j                                | j                  | j                   j	                  | j                        | j                  j	                  | j                               | j                  | j                   j	                  | j                        | j                  j	                  | j                               y r  )rB   rE   r-   r=   r  r>   r   rM   rN   rf  rC   rD   r?   rA   r  s     r   r  z(Vector3TypeTest.test_distance_squared_toO  s   ww 44TWW=qA44Y?C44Y?CGG''0FFTVVOdfftvvo-?	
 	GG''0FFTVVOdfftvvo-?	
 	GG''0FFTVVOdfftvvo-?	
 	44TWW=qA44TWW=qA44TWW=qAGG''0$''2M2Mdgg2V	
 	GG''0$''2M2Mdgg2V	
 	GG''0$''2M2Mdgg2V	
r    c                    | j                  | j                  j                  | j                  j                  | j                  j                  | j                  j
                  f       | j                  | j                  j                  | j                  j                  | j                  j                  | j                  j                  | j                  j                  | j                  j
                  | j                  j
                  | j                  j                  | j                  j                  | j                  j
                  f	       | j                  | j                  _        | j                  | j                  | j                         | j                  | j                  _	        | j                  | j                  | j                  d   | j                  d   | j                  d   f       | j                  d d | j                  _
        | j                  | j                  | j                  d   | j                  d   | j                  d   f       | j                  t        | j                        t               y r  )r-   rB   yxzrN   rM   rf  	xxyyzzxyzrC   xyzzxyyzr{   r   rH   s    r   r  zVector3TypeTest.test_swizzlem  s   twwyy$''))TWWYY&GHGG																		
	
 gg$''*gg4771:twwqz4771:"FGWWRa[
4771:twwqz4771:"FGdgg0r    zknown pypy failurec                     d }d }d }d }| j                  t        |       | j                  t        |       | j                  t        |       | j                  t        |       d }| j                  t        |       y )Nc                  "    dt               _        y r  )r   r  r3   r    r   r  z=Vector3TypeTest.test_invalid_swizzle.<locals>.invalidSwizzleX  r  r    c                  "    dt               _        y r  )r   r  r3   r    r   r  z=Vector3TypeTest.test_invalid_swizzle.<locals>.invalidSwizzleY  r  r    c                  "    dt               _        y r  )r   zzr3   r    r   invalidSwizzleZz=Vector3TypeTest.test_invalid_swizzle.<locals>.invalidSwizzleZ  r  r    c                  "    dt               _        y r  )r   wwr3   r    r   invalidSwizzleWz=Vector3TypeTest.test_invalid_swizzle.<locals>.invalidSwizzleW  r  r    c                  "    dt               _        y r  )r   r  r3   r    r   r  z?Vector3TypeTest.test_invalid_swizzle.<locals>.invalidAssignment  r  r    )r   r  r   )r   r  r  r  r  r  s         r   test_invalid_swizzlez$Vector3TypeTest.test_invalid_swizzle  sp    	"	"	"	" 	./:./:./:./:	 	)%67r    c                    | j                  t        | j                  j                        t               | j                  t        | j                  j
                        t               | j                  t        | j                  j                        t               | j                  t        | j                  j                        t               | j                  t        | j                  j                        t               y r   )r-   r{   rB   rM   r  r  r   r  r   r  r   r  rH   s    r   r  z)Vector3TypeTest.test_swizzle_return_types  r  r    c           	          h d}| j                  |j                  t        t        | j                                           y )N>   rM   rN   r   r  rr  rG  rM  )r   issubsetsetdirrB   )r   
attributess     r   test_dir_workszVector3TypeTest.test_dir_works  s+    X

++CDGG,=>?r    c                 X     j                   j                  j                          j                  z    j                  j                   j                  z    j                  j
                   j                  z    j                  j                   j                  z   f        j                   j                  j                          j                  z
   j                  j                   j                  z
   j                  j
                   j                  z
   j                  j                   j                  z
  f        j                   j                  j                          j                  z   j                  j                   j                  z   j                  j
                   j                  z   j                  j                   j                  z  f        j                   j                  j                          j                  z   j                  j                   j                  z   j                  j
                   j                  z   j                  j                   j                  z  f        j                   j                  j                          j                  z   j                  j                   j                  z   j                  j
                   j                  z   j                  j                   j                  z  f        j                   j                  j                          j                  z   j                  j                   j                  z   j                  j
                   j                  z   j                  j                   j                  z  f        j                   j                  j                          j                  z   j                  j                   j                  z   j                  j
                   j                  z   j                  j                   j                  z  f        j                   j                  j                          j                  kD   j                  j                   j                  kD  xrH  j                  j
                   j                  kD  xr#  j                  j                   j                  kD          j                   j                  j                          j                  k   j                  j                   j                  k  xrH  j                  j
                   j                  k  xr#  j                  j                   j                  k          j                   j                  j                          j                  k(   j                  j                   j                  k(  xrH  j                  j
                   j                  k(  xr#  j                  j                   j                  k(          j                   j                  j                          j                  k7   j                  j                   j                  k7  xrH  j                  j
                   j                  k7  xr#  j                  j                   j                  k7          j                   j                  j                          j                  k\   j                  j                   j                  k\  xrH  j                  j
                   j                  k\  xr#  j                  j                   j                  k\          j                   j                  j                          j                  k   j                  j                   j                  k  xrH  j                  j
                   j                  k  xr#  j                  j                   j                  k          j                  d j                  j                         z   t        ddd       j                  z           j                  d j                  j                         z
  t        ddd       j                  z
          j                  d j                  j                         z  d j                  z          j                  d j                  j                         z  d j                  j                  z  d j                  j
                  z  d j                  j                  z  f        j                  d j                  j                         z  d j                  j                  z  d j                  j
                  z  d j                  j                  z  f        j                  d j                  j                         z   d j                  j                  z   d j                  j
                  z   d j                  j                  z   f        j                  d j                  j                         z  d j                  j                  z  d j                  j
                  z  d j                  j                  z  f        j                  d j                  j                         k  d j                  j                  k  xr4 d j                  j
                  k  xr d j                  j                  k          j                  d j                  j                         kD  d j                  j                  kD  xr4 d j                  j
                  kD  xr d j                  j                  kD          j                  d j                  j                         k(  d j                  j                  k(  xr4 d j                  j
                  k(  xr d j                  j                  k(          j                  d j                  j                         k7  d j                  j                  k7  xr4 d j                  j
                  k7  xr d j                  j                  k7          j                  d j                  j                         k  d j                  j                  k  xr4 d j                  j
                  k  xr d j                  j                  k          j                  d j                  j                         k\  d j                  j                  k\  xr4 d j                  j
                  k\  xr d j                  j                  k\          j                  d j                  j                         k7  d j                  j                  k7  xr4 d j                  j
                  k7  xr d j                  j                  k7          j                  t         j                  j                          j                  z        t         j                                j                   j                  j                          j                  z    j                   j                  z           j                   j                  j                          j                  z    j                   j                  z           j                   j                  j                          j                  z
   j                   j                  z
          j                   j                  j                          j                  z   j                  j                   j                  j                  z   j                  j
                   j                  j
                  z   j                  j                   j                  j                  z  f        j                   j                  j                          j                  z   j                  j                   j                  j                  z   j                  j
                   j                  j
                  z   j                  j                   j                  j                  z  f        j                   j                  j                          j                  z   j                  j                   j                  j                  z   j                  j
                   j                  j
                  z   j                  j                   j                  j                  z  f        j                   j                  j                          j                  z   j                  j                   j                  j                  z   j                  j
                   j                  j
                  z   j                  j                   j                  j                  z  f        j                   j                  j                          j                  z   j                  j                   j                  j                  z   j                  j
                   j                  j
                  z   j                  j                   j                  j                  z  f        j                   j                  j                          j                  kD   j                  j                   j                  j                  kD  xr\  j                  j
                   j                  j
                  kD  xr-  j                  j                   j                  j                  kD          j                   j                  j                          j                  k   j                  j                   j                  j                  k  xr\  j                  j
                   j                  j
                  k  xr-  j                  j                   j                  j                  k          j                   j                  j                          j                  k\   j                  j                   j                  j                  k\  xr\  j                  j
                   j                  j
                  k\  xr-  j                  j                   j                  j                  k\          j                   j                  j                          j                  k   j                  j                   j                  j                  k  xr\  j                  j
                   j                  j
                  k  xr-  j                  j                   j                  j                  k          j                   j                  j                          j                  k(   j                  j                   j                  j                  k(  xr\  j                  j
                   j                  j
                  k(  xr-  j                  j                   j                  j                  k(          j                   j                  j                          j                  k7   j                  j                   j                  j                  k7  xr\  j                  j
                   j                  j
                  k7  xr-  j                  j                   j                  j                  k7          j                   j                   j                  j                         z    j                   j                  z           j                   j                   j                  j                         z
   j                   j                  z
          j                   j                   j                  j                         z   j                  j                   j                  j                  z   j                  j
                   j                  j
                  z   j                  j                   j                  j                  z  f        j                   j                   j                  j                         z   j                  j                   j                  j                  z   j                  j
                   j                  j
                  z   j                  j                   j                  j                  z  f        j                   j                   j                  j                         z   j                  j                   j                  j                  z   j                  j
                   j                  j
                  z   j                  j                   j                  j                  z  f        j                   j                   j                  j                         z   j                  j                   j                  j                  z   j                  j
                   j                  j
                  z   j                  j                   j                  j                  z  f        j                   j                   j                  j                         z   j                  j                   j                  j                  z   j                  j
                   j                  j
                  z   j                  j                   j                  j                  z  f        j                   j                   j                  j                         k   j                  j                   j                  j                  k  xr\  j                  j
                   j                  j
                  k  xr-  j                  j                   j                  j                  k          j                   j                   j                  j                         kD   j                  j                   j                  j                  kD  xr\  j                  j
                   j                  j
                  kD  xr-  j                  j                   j                  j                  kD          j                   j                   j                  j                         k   j                  j                   j                  j                  k  xr\  j                  j
                   j                  j
                  k  xr-  j                  j                   j                  j                  k          j                   j                   j                  j                         k\   j                  j                   j                  j                  k\  xr\  j                  j
                   j                  j
                  k\  xr-  j                  j                   j                  j                  k\          j                   j                   j                  j                         k(   j                  j                   j                  j                  k(  xr\  j                  j
                   j                  j
                  k(  xr-  j                  j                   j                  j                  k(          j                   j                   j                  j                         k7   j                  j                   j                  j                  k7  xr\  j                  j
                   j                  j
                  k7  xr-  j                  j                   j                  j                  k7          j                   j                  j                          j                  j                         z    j                   j                  z           j                   j                  j                          j                  j                         z
   j                   j                  z
          j                   j                  j                          j                  j                         z   j                  j                   j                  j                  z   j                  j
                   j                  j
                  z   j                  j                   j                  j                  z  f        j                   j                  j                          j                  j                         z   j                  j                   j                  j                  z   j                  j
                   j                  j
                  z   j                  j                   j                  j                  z  f        j                   j                  j                          j                  j                         z   j                  j                   j                  j                  z   j                  j
                   j                  j
                  z   j                  j                   j                  j                  z  f        j                   j                  j                          j                  j                         z   j                  j                   j                  j                  z   j                  j
                   j                  j
                  z   j                  j                   j                  j                  z  f        j                   j                  j                          j                  j                         z   j                  j                   j                  j                  z   j                  j
                   j                  j
                  z   j                  j                   j                  j                  z  f        j                   j                  j                          j                  j                         k   j                  j                   j                  j                  k  xr\  j                  j
                   j                  j
                  k  xr-  j                  j                   j                  j                  k          j                   j                  j                          j                  j                         kD   j                  j                   j                  j                  kD  xr\  j                  j
                   j                  j
                  kD  xr-  j                  j                   j                  j                  kD          j                   j                  j                          j                  j                         k   j                  j                   j                  j                  k  xr\  j                  j
                   j                  j
                  k  xr-  j                  j                   j                  j                  k          j                   j                  j                          j                  j                         k\   j                  j                   j                  j                  k\  xr\  j                  j
                   j                  j
                  k\  xr-  j                  j                   j                  j                  k\          j                   j                  j                          j                  j                         k(   j                  j                   j                  j                  k(  xr\  j                  j
                   j                  j
                  k(  xr-  j                  j                   j                  j                  k(          j                   j                  j                          j                  j                         k7   j                  j                   j                  j                  k7  xr\  j                  j
                   j                  j
                  k7  xr-  j                  j                   j                  j                  k7          j                  t         j                  j                               t         j                  j                        t         j                  j
                        t         j                  j                        f        j                   j                  j                           j                           j                   j                  j                          j                          j                  t         j                  j                               t         j                                j                  t        t               j                               t        t                             j                   j                  j                         d	z  d
        j                  t        d         j                  t          fd        j                  t         d         j                  t         d         j                  t         d         j                  t          fd        j                  t          fd        j                  t          fd        j                  t          fd        j                  t          fd        j                  t          fd       y )Nr"   g      @g      @g      r$   rY   r   ir   r  c                  L    t        t        ddd      j                         d      S r  )r  r   r  r3   r    r   r   z2Vector3TypeTest.test_elementwise.<locals>.<lambda>	  s     c'"a2C2O2O2QSV.W r    c                  >     j                   j                         dz  S r  r  rH   s   r   r   z2Vector3TypeTest.test_elementwise.<locals>.<lambda>	  r  r    c                  >    t        ddd      j                         dz  S rV  r   r  r3   r    r   r   z2Vector3TypeTest.test_elementwise.<locals>.<lambda>	      WQ15E5Q5Q5SVW5W r    c                  >    t        ddd      j                         dz  S rV  r	  r3   r    r   r   z2Vector3TypeTest.test_elementwise.<locals>.<lambda>	  s    wq!Q'7'C'C'E'J r    c                  >    t        ddd      j                         dz  S rV  r	  r3   r    r   r   z2Vector3TypeTest.test_elementwise.<locals>.<lambda>	  r
  r    c                  T    t        ddd      j                          j                  z  S r   r   r  r<   rH   s   r   r   z2Vector3TypeTest.test_elementwise.<locals>.<lambda>	  "    wq!Q'7'C'C'E'T r    c                  T    t        ddd      j                          j                  z  S r   r  rH   s   r   r   z2Vector3TypeTest.test_elementwise.<locals>.<lambda>	  s"    wq!Q'7'C'C'E'U r    c                  T    t        ddd      j                          j                  z  S r   r  rH   s   r   r   z2Vector3TypeTest.test_elementwise.<locals>.<lambda>	  r  r    c                  >    d j                   j                         z  S r   r  rH   s   r   r   z2Vector3TypeTest.test_elementwise.<locals>.<lambda>	  r  r    c                  >    d j                   j                         z  S r   r  rH   s   r   r   z2Vector3TypeTest.test_elementwise.<locals>.<lambda>	  r  r    c                  >    d j                   j                         z  S r   r  rH   s   r   r   z2Vector3TypeTest.test_elementwise.<locals>.<lambda>	  r  r    )r-   rB   r  rF   rM   rN   rf  rG   r   r{   rE   r`  r  r<   r   r   r  rH   s   `r   r  z Vector3TypeTest.test_elementwise  s   GG!DGG+WWYY $''))dgg"5twwyy4777JK	
 	GG!DGG+WWYY $''))dgg"5twwyy4777JK	
 	GG!DGG+WWYY $''))dgg"5twwyy4777JK	
 	GG!DGG+WWYY $''))dgg"5twwyy4777JK	
 	GG!TWW,WWYY$''!47799#7dgg9MN	
 	GG!TWW,WWYYDGG!3TWWYY5GH	
 	GG!DGG+WWYY $''))dgg"5twwyy4777JK	
 	GG!DGG+GGIIODGGII$7ODGGII<O	
 	GG!DGG+GGIIODGGII$7ODGGII<O	
 	GG!TWW,GGII RTWWYY$''%9Rdggii477>R	
 	GG!TWW,GGII RTWWYY$''%9Rdggii477>R	
 	GG!TWW,GGII RTWWYY$''%9Rdggii477>R	
 	GG!TWW,GGII RTWWYY$''%9Rdggii477>R	

 	TWW0022GAq!4Dtww4NOtww2244gc36Ltww6VWtww2244cDGGmD477&&((DGGIItdggii/		1AB	
 	DGG''))TWWYY		 14477993DE	
 	TWW((**+DGGII~#twwyy. 1S$''))^3DE	
 	##%%DGGIIq47799}a$''))m'T	
 	##%%q47799}'XTWWYY'X1twwyy=	
 	##%%q47799}'XTWWYY'X1twwyy=	
 	$$&&N@qDGGII~@!twwyy.	
 	$$&&N@qDGGII~@!twwyy.	
 	$$&&N@qDGGII~@!twwyy.	
 	$''%%''$''))OCdggiiCB$''))O	
 	$''%%''$''))OCdggiiCB$''))O	
 	dgg113dgg=>TWWN,,.8$''DGG:KL,,.8$''DGG:KL,,.8$''DGG:KLGG!DGG+WWYY"DGGII		$947799twwyy;PQ	
 	GG!DGG+WWYY"DGGII		$947799twwyy;PQ	
 	GG!TWW,WWYY$''))#TWWYY$''))%;TWWYY$''))=ST	
 	GG!TWW,WWYY		!47799dggii#7DGGII9MN	
 	GG!DGG+WWYY"DGGII		$947799twwyy;PQ	
 	GG!DGG+GGII		!Udggii$''))&;U		DGGII@U	
 	GG!DGG+GGII		!Udggii$''))&;U		DGGII@U	
 	GG!TWW,GGII" '		TWWYY&'		TWWYY&		
 	GG!TWW,GGII" '		TWWYY&'		TWWYY&		
 	GG!TWW,GGII" '		TWWYY&'		TWWYY&		
 	GG!TWW,GGII" '		TWWYY&'		TWWYY&		
 	477#6#6#88$''DGG:KL477#6#6#88$''DGG:KLGGdgg))++WWYY"DGGII		$947799twwyy;PQ	
 	GGdgg))++WWYY"DGGII		$947799twwyy;PQ	
 	GGtww**,,WWYY$''))#TWWYY$''))%;TWWYY$''))=ST	
 	GGtww**,,WWYY		!47799dggii#7DGGII9MN	
 	GGdgg))++WWYY"DGGII		$947799twwyy;PQ	
 	GGdgg))++GGII		!Udggii$''))&;U		DGGII@U	
 	GGdgg))++GGII		!Udggii$''))&;U		DGGII@U	
 	GGtww**,,GGII" '		TWWYY&'		TWWYY&		
 	GGtww**,,GGII" '		TWWYY&'		TWWYY&		
 	GGtww**,,GGII" '		TWWYY&'		TWWYY&		
 	GGtww**,,GGII" '		TWWYY&'		TWWYY&		
 	GG!DGG$7$7$99477TWW;L	
 	GG!DGG$7$7$99477TWW;L	
 	GG!DGG$7$7$99WWYY"DGGII		$947799twwyy;PQ	
 	GG!DGG$7$7$99WWYY"DGGII		$947799twwyy;PQ	
 	GG!TWW%8%8%::WWYY$''))#TWWYY$''))%;TWWYY$''))=ST	
 	GG!TWW%8%8%::WWYY		!47799dggii#7DGGII9MN	
 	GG!DGG$7$7$99WWYY"DGGII		$947799twwyy;PQ	
 	GG!DGG$7$7$99GGII		!Udggii$''))&;U		DGGII@U	
 	GG!DGG$7$7$99GGII		!Udggii$''))&;U		DGGII@U	
 	GG!TWW%8%8%::GGII" '		TWWYY&'		TWWYY&		
 	GG!TWW%8%8%::GGII" '		TWWYY&'		TWWYY&		
 	GG!TWW%8%8%::GGII" '		TWWYY&'		TWWYY&		
 	GG!TWW%8%8%::GGII" '		TWWYY&'		TWWYY&		
 	##%&TWWYYTWWYYTWWYY(X	
 	$''--//$'':$''--//$'':dgg1134d477mDgi3356WYH113q8)D*&WX+-UV+-WXJ	
 	+-WXT	
 	U	
 	T	
 	+-ST+-TU+-STr    c                 ^     j                  t         fd        j                  t         fd        j                  t         fd       d j                  j                   j                        z  } fdt        dz         D        D ]S  \  }} j                  |j                         d        j                   j                  j                  |      ||z         U  j                   j                         t        ddd      t        ddd	      j                         j                         z  }fd
t        dz         D        D ]d  \  }} j                  |j                         j                         j                         z
  t        |      z  z  j                         z          f  j                  |        j                  j                  d              j                  j                  d              j                  t        fd       y )Nc                  P     j                   j                   j                  d      S r  r  rH   s   r   r   z,Vector3TypeTest.test_slerp.<locals>.<lambda>	  r  r    c                  P     j                   j                   j                  d      S r  r  rH   s   r   r   z,Vector3TypeTest.test_slerp.<locals>.<lambda>	  r  r    c                  P     j                   j                   j                   d      S r  r  rH   s   r   r   z,Vector3TypeTest.test_slerp.<locals>.<lambda>	  r  r    r   c           	   3      K   | ]8  }|j                   j                  j                  |t              z        f : y wr   )r=   r  r>   r  )r  r  r   r  s     r   r  z-Vector3TypeTest.test_slerp.<locals>.<genexpr>	  s7      
>?Qdggq5<'789
s   >Ar   r   r   r2  c           	   3   `   K   | ]%  }|j                  | t              z        f ' y wr   r  r  s     r   r  z-Vector3TypeTest.test_slerp.<locals>.<genexpr>	  r  r  r   c                  *     j                    d      S r  r  r  s   r   r   z,Vector3TypeTest.test_slerp.<locals>.<lambda>	  r  r    )r   r   r=   r_  r>   r  r   rj  r-   r   r  r  r  s   `    @@@r   r  zVector3TypeTest.test_slerp	  s   *&NO*&NO*&STWW%%dgg.6

CHQRCS
 	HDAq ""188:q1""477#3#3A#6JG		H
 	DGG$S!QQA		biik1T5QRCST 	DAq""
ryy{*uQx%/?@299;N	
 	B"c*B/"c*B/*&@Ar    c                 ,   t        ddd      t        ddd      | j                  j                  d      d       | j                  t        fd       t        ddd      t        ddd      | j                  j                  d      d	       y )
Nr   r   r   )r"   r"   r"   c                  (     j                  d      S r  r  r  s   r   r   z+Vector3TypeTest.test_lerp.<locals>.<lambda>	  r  r    r#   rx   )r   r(   r  )r   r-   r   r   r   r  s    @@r   r   zVector3TypeTest.test_lerp	  s    Q1RR S)95*&>?S"c"RS!S)=9r    c                    t               j                  | j                  j                                | j	                  | j                         | j	                  | j                  t        j                  | j                  j                                      | j	                  | j
                  j                         d       | j	                  | j                  j                         d       | j	                  | j                  j                         d       | j	                  d| j                  z  j                         d       | j                  t        fd       | j                  t        fd       | j                  t        fd       | j                  t        fd	       | j                  t        fd
       | j                  t        fd       | j                  t        d        | j                  t        d        | j                  t        d        | j                  t        d        | j                  t        d        | j                  t        d        j                  d       | j	                  d| j                  z         | j	                  t        j                  d      d| j                  z         | j	                  t        j                  d             y )N)r   r*  r   )r   r*  r*  r  rY   )rY   r*  r*  c                  &     j                  d      S Nr   from_sphericalrl   s   r   r   z0Vector3TypeTest.test_spherical.<locals>.<lambda>
  s    Q-=-=>P-Q r    c                  &     j                  d      S Nabcr"  rl   s   r   r   z0Vector3TypeTest.test_spherical.<locals>.<lambda>
  s    Q-=-=e-D r    c                  &     j                  d      S Nr  r"  rl   s   r   r   z0Vector3TypeTest.test_spherical.<locals>.<lambda>
      Q-=-=l-K r    c                  &     j                  d      S r|  r"  rl   s   r   r   z0Vector3TypeTest.test_spherical.<locals>.<lambda>	
  r)  r    c                  &     j                  d      S r  r"  rl   s   r   r   z0Vector3TypeTest.test_spherical.<locals>.<lambda>

  s    Q-=-=f-E r    c                  *     j                  ddd      S Nr   rY   r$   r"  rl   s   r   r   z0Vector3TypeTest.test_spherical.<locals>.<lambda>
  s    Q-=-=aA-F r    c                  ,    t        j                  d      S r!  r   r#  r3   r    r   r   z0Vector3TypeTest.test_spherical.<locals>.<lambda>
  s    W-C-CDV-W r    c                  ,    t        j                  d      S r%  r/  r3   r    r   r   z0Vector3TypeTest.test_spherical.<locals>.<lambda>
  s    W-C-CE-J r    c                  ,    t        j                  d      S r(  r/  r3   r    r   r   z0Vector3TypeTest.test_spherical.<locals>.<lambda>
      W-C-CL-Q r    c                  ,    t        j                  d      S r|  r/  r3   r    r   r   z0Vector3TypeTest.test_spherical.<locals>.<lambda>
  r2  r    c                  ,    t        j                  d      S r  r/  r3   r    r   r   z0Vector3TypeTest.test_spherical.<locals>.<lambda>
  s    W-C-CF-K r    c                  0    t        j                  ddd      S r-  r/  r3   r    r   r   z0Vector3TypeTest.test_spherical.<locals>.<lambda>
  s    W-C-CAq!-L r    )r   r*  r*  r   )
r   r#  rB   as_sphericalr-   r=   r>   rc  r   r   rO   s    @r   test_sphericalzVector3TypeTest.test_spherical	  s   I	--/0!$'"8"89M9M9O"PQ--/<--/=--/;!dgg+335{C)%QR)%DE)%KL)%KL)%EF)%FG)%WX)%JK)%QR)%QR)%KL)%LM	'C$''M*//>dggN//>Br    c                 $   t        ddd      }|dz  }| j                  |d       t        ddd      }|dz  }| j                  |d       t        ddd      }|dz  }| j                  |d       t        ddd      }|dz  }| j                  |d       y )Nr   rY   )r[   r[   r[   r4  r  r        @r:  r:  r  rO   s     r   test_inplace_operatorsz&Vector3TypeTest.test_inplace_operators
  s    Aq!	QO,Aq!	QO,Cc"	YO,Cc"	YO,r    c                     dd l }t        dd      }t        ddd      }| j                  |j	                  |j                  |            |       | j                  |j	                  |j                  |            |       y )Nr   r   rY   r$   )pickler   r   r-   loadsdumps)r   r=  rE   r   s       r   test_picklezVector3TypeTest.test_pickle(
  sb    Q]Q1fll2&67<fll2&67<r    c                      G d dt         j                  j                        } |ddd      }|dz  }| j                  |d       y )Nc                       e Zd Zy)7Vector3TypeTest.test_subclass_operation.<locals>.VectorNr	  r3   r    r   r
  rC  1
  r  r    r
  r[   rY   r9  )r   r   r   r-   )r   r
  rP   s      r   r  z'Vector3TypeTest.test_subclass_operation0
  sA    	V[[(( 	 3S!	QO,r    c                 T    t        dd      }| j                  |j                  d       y)z*We can get constant values from a swizzle.r2  rv   )      @rw   r   N)r   r-   xy1rO   s     r   test_swizzle_constantsz&Vector3TypeTest.test_swizzle_constants8
  s%    AqMEE	
r    c                 T    t        dd      }| j                  |j                  d       y)z,We can get 4 constant values from a swizzle.r2  rv   )rE  rw   r   r   N)r   r-   xy01rO   s     r   test_swizzle_four_constantsz+Vector3TypeTest.test_swizzle_four_constants@
  s%    AqMFF 	
r    c                     t        dd      }| j                  t              5  |j                   ddd       y# 1 sw Y   yxY w)z2An out-of-bounds swizzle raises an AttributeError.r2  rv   N)r   r   r  r  rO   s     r   test_swizzle_oobz Vector3TypeTest.test_swizzle_oobH
  s7    AqM~. 	EE	 	 	s	   8Ac                 ~    t        dd      }| j                  t              5  d|_        ddd       y# 1 sw Y   yxY w)z6An out-of-bounds swizzle set raises an AttributeError.r2  rv   r  N)r   r   r  xzrO   s     r   test_swizzle_set_oobz$Vector3TypeTest.test_swizzle_set_oobN
  s9     AqM~. 	AD	 	 	s   3<c                    t        ddd      }t        ddd      }|j                  |      }| j                  |j                  |j                         | j                  d|j                         | j                  d|j
                         y)r  rY   r$   r4  r   r   Nr   r  r-   rM   rN   rf  r  s       r   test_project_v3_onto_x_axisz+Vector3TypeTest.test_project_v3_onto_x_axisU
  sr     Aq!Q" 6" 	fhh'FHH%FHH%r    c                    t        ddd      }t        ddd      }|j                  |      }| j                  d|j                         | j                  |j                  |j                         | j                  d|j
                         y)r  rY   r$   r4  r   r   NrQ  r  s       r   test_project_v3_onto_y_axisz+Vector3TypeTest.test_project_v3_onto_y_axisc
  sr     Aq!C# 6" 	FHH%fhh'FHH%r    c                    t        ddd      }t        ddd      }|j                  |      }| j                  d|j                         | j                  d|j                         | j                  |j
                  |j
                         y)zMProject onto z-axis, e.g. get the component pointing in the z-axis direction.rY   r$   r4  r   M   NrQ  r  s       r   test_project_v3_onto_z_axisz+Vector3TypeTest.test_project_v3_onto_z_axisq
  sr     Aq!Ar" 6" 	FHH%FHH%fhh'r    c                    t        ddd      }t        ddd      }|j                  |      }|j                  |      |j                  |      z  |z  }| j                  |j                  |j                         | j                  |j
                  |j
                         | j                  |j                  |j                         y)r  rY   r$   r4  r"   r2  N)r   r  rZ  r   rM   rN   rf  r  s        r   test_project_v3_onto_otherz*Vector3TypeTest.test_project_v3_onto_other
  s     Aq!1a  5! 55<%))E"22U:xzz6884xzz6884xzz6884r    c                    t        ddd      }t        ddd      }|j                  t        |            }|j                  |      |j                  |      z  |z  }| j	                  |j
                  |j
                         | j	                  |j                  |j                         | j	                  |j                  |j                         y)r#  rY   r$   r4  r"   r2  N)r   r  r   rZ  r   rM   rN   rf  r  s        r   #test_project_v3_onto_other_as_tuplez3Vector3TypeTest.test_project_v3_onto_other_as_tuple
  s     Aq!1a  5<( 55<%))E"22U:xzz6884xzz6884xzz6884r    c                    t        ddd      }t        ddd      }|j                  t        |            }|j                  |      |j                  |      z  |z  }| j	                  |j
                  |j
                         | j	                  |j                  |j                         | j	                  |j                  |j                         y)r&  rY   r$   r4  r"   r2  N)r   r  r@   rZ  r   rM   rN   rf  r  s        r   "test_project_v3_onto_other_as_listz2Vector3TypeTest.test_project_v3_onto_other_as_list
  s     Aq!1a  4;' 55<%))E"22U:xzz6884xzz6884xzz6884r    c                 z    t        ddd      }t        ddd      }| j                  t        |j                  |       y)r)  rY   r$   r4  r   N)r   r   r   r  r*  s      r   /test_project_v3_raises_if_other_has_zero_lengthz?Vector3TypeTest.test_project_v3_raises_if_other_has_zero_length
  s8     Aq!1a  	*aii7r    c                 d    t        ddd      }d}| j                  t        |j                  |       y)r-  rY   r$   r4  r   N)r   r   r   r  r*  s      r   /test_project_v3_raises_if_other_is_not_iterablez?Vector3TypeTest.test_project_v3_raises_if_other_is_not_iterable
  s/     Aq! 	)QYY6r    c                     t        ddd      }| j                  t        |t                     | j	                  t        |t
                     y )Nr$   r4  r"   )r   r   r   r   r   r   rO   s     r   r0  z#Vector3TypeTest.test_collection_abc
  s8    Aq!
1j12Ax01r    c                 T   t        ddd      }|j                  d      }|j                  dd      }| j                  ||       |j                  d       | j                  ||       |j                  dd       | j                  ||       t        ddd      }| j                  ||       y )Nr2  rY   r"   r   g;Y@giAH1?)r   r3  r-   r4  r5  s        r   test_clamp_mag_v3_maxz%Vector3TypeTest.test_clamp_mag_v3_max
  s    Q1"1%R 
a R 
a#R /1CEWXb)r    c                     t        ddd      }|j                  dd      }|j                  dd       t        ddd      }| j                  ||       | j                  ||       y )	Nr$   r   rY   r"   r   g!
!	@g4-a?g4-a@)r   r3  r4  r-   r9  s       r   test_clamp_mag_v3_minz%Vector3TypeTest.test_clamp_mag_v3_min
  sc    Q12&
a$/1CEWXb)b)r    c           
         t        ddd      }dD ]j  }| j                  |      5   |j                  | } |j                  |  | j	                  ||       | j	                  |t        ddd             d d d        l y # 1 sw Y   wxY w)Nr   rY   r$   )r<  )r%   g333333@)r=  gRQ@r>  r?  )r   rA  r3  r4  r-   rB  s       r   test_clamp_mag_v3_no_changez+Vector3TypeTest.test_clamp_mag_v3_no_change
  s    Q1
 
	7D 4( 7'R''.%%%t,  R(  WQ1%56	7 7
	77 7s   AA>>B	c                 h   t        ddd      }|j                  dd      }|j                  dd       | j                  ||       | j	                  |j                         d       |j                  d      }|j                  dd       | j                  ||       | j                  |t                      y rE  )r   r3  r4  r-   r   rj  r  s      r   test_clamp_mag_v3_edge_casesz,Vector3TypeTest.test_clamp_mag_v3_edge_cases
  s    Q11%
a#R ryy{A."
a#R WY'r    c                    t        ddd      }dD ]a  }| j                  |      5   | j                  t        |j                  g|   | j                  t        |j
                  g|  d d d        c dD ]a  }| j                  |      5   | j                  t        |j                  g|   | j                  t        |j
                  g|  d d d        c t               }| j                  t        |j                  d       | j                  t        |j
                  d       y # 1 sw Y   !xY w# 1 sw Y   xY wrH  )r   rA  r   r   r3  r4  r   rN  s       r   test_clamp_mag_v3_errorsz(Vector3TypeTest.test_clamp_mag_v3_errors
  sA   Q1
 	SL
 <8 S!!!)R-?-?O,O!!!)R-B-BR\RS S	S
 	TL <8 T!!!*b.@.@P<P!!!*b.C.CSlST T	T Y*b&8&8!<*b&;&;Q?#S ST Ts   AD'AD4'D1	4D=	c           	         t        ddd      } G d dt               } |ddd      }| j                  |j                         d       | j                  t	        |      |       | j                  t	        |      t	        |j                                      | j                  |t	        |j                  |                   | j                  |t	        |j                  |d                   | j                  |t	        |j                  |d                   | j                  |t	        |j                  d|                   | j                  |t	        |j                  d|                   | j                  |t	        |j                  |                   | j                  |t	        |j                  |d                   | j                  |t	        |j                  d                   | j                  |t	        |j                  dd                   | j                  |t	        |j                         |z                 |ddd      }| j                  t	        ||z         |       | j                  t	        ||z
        |       | j                  t	        |d	z        |       | j                  t	        |d	z        |       | j                  t	        |j                         d	z        |       y
)z Check if Vector3 is subclassabler4  rY   r   c                       e Zd Zd Zy)7Vector3TypeTest.test_subclassing_v3.<locals>.TestVectorc                      yrT  r3   rH   s    r   rV  zLVector3TypeTest.test_subclassing_v3.<locals>.TestVector.supermariobrosiscool  rW  r    NrX  r3   r    r   rY  ro    rZ  r    rY  r   rU  r"   r$   N)r   r-   rV  r	  r{   r   rr  r   r  r.  r6  r  r   r3  r  r[  s        r   test_subclassing_v3z#Vector3TypeTest.test_subclassing_v3  sP   Aq!	 	 1a#335s;DGZ0DGT%**,%78T%--*:%;<T%**Q*:%;<T%++a*;%<=T%,,q!*<%=>T%*:*:1a*@%ABT%--*:%;<T%*<*<Q*B%CDT%*?*?*B%CDT%*?*?1*E%FGT%*;*;*=*E%FGAq!$efn-z:efn-z:eai*5eai*5e//1Q67Dr    c                    t        ddd      }t        ddd      }t        ddd	      }|j                         }|j                  |d
      }|j                  |d
       | j	                  ||       | j	                  ||       y )Ngxvk@g]Y@g%I fE@r   r~   gq=
ףE@r   r   gK@r$   r   r   r   r   r-   r   s         r   r   z'Vector3TypeTest.test_move_towards_basic.  sy    :}kBvu--KKM	$$VQ/!!&!,*H-r    c                     t        ddd      }t        ddd      }|j                         }|j                  |d      }|j                  |d       | j	                  ||       | j	                  ||       y )Nr   r   g     @E@r   r~   g     1@r   rs  )r   r   r   r   r   s        r   r   z.Vector3TypeTest.test_move_towards_max_distance:  sk    5$-vt,KKM	$$Xs3!!(C0*H-r    c                     t        ddd      }t        ddd      }|j                         }|j                  |d      }|j                  |d       | j	                  ||       | j	                  ||       y )Nr   r~   g     8@r   r   g	@r   rs  )r   r   r   r   r   s        r   r   z!Vector3TypeTest.test_move_nowhereE  sk    vt,,KKM	$$VQ/!!&!,(F+r    c                    t        ddd      }t        ddd      }t        ddd	      }|j                         }|j                  |d
      }|j                  |d
       | j	                  ||       | j	                  ||       y )Ng,@gI@gH@r   r~   gJ@r   r   g)\S@r   rs  r   s         r   r   zVector3TypeTest.test_move_awayP  sy    :}kBvt,.KKM	$$VR0!!&"-*H-r    c                     t        ddd      }|j                         }dD ]H  }| j                  |j                  ||      |       |j	                  ||       | j                  ||       J y )Nr   r   g)\^r   )r   r   r-   r   r   r   s       r   r   z&Vector3TypeTest.test_move_towards_self\  sg    dGW-xxz- 	(DS--dD93?  d+S$'	(r    c                    t        ddd      }t        ddd      }| j                  t        |j                  |dd       | j                  t        |j                  |dd       | j                  t        |j                  |d	       | j                  t        |j                  |d
       | j                  t        |j                  dd       | j                  t        |j                  dd       y )Nr   r~   gffffff@r   r   g     Xzr$   rY   ry   r   r   d)r   r   r   r   r   )r   r   r   s      r   r   z(Vector3TypeTest.test_move_towards_errorsd  s    vs+/)V%8%8&!QG)V%;%;VQJ)V%8%8&#F)V%;%;VSI)V%8%8#qA)V%;%;S!Dr    N)cr/   r0   r1   rI   rQ   rh  ra   rc   rn  rT   rW   r\   rs  rq   r   r   r   r   r   r   r   r  r  r  r  r  r  r(  r|   r0  r<  r@  rC  r  r  r  r  r  r  r  r  r  r  r  r  rI  rO  rS  rX  r[  ra  rh  rk  rn  rv  r{  r  r  r  r  r  unittestskipIfIS_PYPYr  r  r  r  r  r   r7  r;  r@  r  rG  rJ  rL  rO  rR  rT  rW  rY  r[  r]  r_  ra  r0  rd  rf  rh  rj  rl  rq  r   r   r   r   r   r   r3   r    r   r_  r_    s)   ###$$###96./-6^#1J:7676	3
4!0:"43
$vPp
@
M"M+6,

')
%6-

(*
%6,

!)
H"K">?H 
*3
;
GKU0*HX+@Z
<10 X__W238 48.5@lU\	B4:C4-"=-

 X__W23 4&&(555872
**7
(@4E@
.	.	,
.(	Er    r_  __main__)r   platformrz  collections.abcr   r   pygame.mathr   r   r   python_implementationr|  TestCaser	   r5   r_  r/   mainr3   r    r   <module>r     s       0  (
2H224
4@OX&& @OFnEh'' nEb#mEh'' mE`5 zHMMO r    