a ze2@sddlZddlZddlmZedZejZdZdZdZ Gdddej Z Gd d d Z Gd d d Z Gd dde ej ZGddde ej ZGdddej ZedkredS)N)supportturtlea_width = 0.75 height = 0.8 canvwidth = 500 canvheight = 200 leftright = 100 topbottom = 100 mode = world colormode = 255 delay = 100 undobuffersize = 10000 shape = circle pencolor = red fillcolor = blue resizemode = auto visible = None language = english exampleturtle = turtle examplescreen = screen title = Python Turtle Graphics using_IDLE = '' z# Comments! # Testing comments! pencolor = red fillcolor = blue visible = False language = english # Some more # comments using_IDLE = False z0 pencolor = red fillcolor: blue visible = False c@s,eZdZddZddZddZddZd S) TurtleConfigTestcCsL|tjtjttjd}||Wdn1s<0YtjS)Nw)Z addCleanuprunlinkZTESTFNopenwrite)selfZcfg_strfr D/opt/bitninja-python-dojo/embedded/lib/python3.9/test/test_turtle.py get_cfg_file4s(zTurtleConfigTest.get_cfg_filecCsR|t}t|}ddddddddddd d d d dd ddddd}|||dS)Ng?g?dZworld'ZcircleredblueautoenglishrZscreenzPython Turtle Graphics)widthZheightZ canvwidthZ canvheightZ leftrightZ topbottommodeZ colormodedelayZundobuffersizeshapepencolor fillcolorZ resizemodevisiblelanguageZ exampleturtleZ examplescreentitle using_IDLE)r test_configr config_dict assertEqualr cfg_name parsed_cfgexpectedr r r test_config_dict:s0  z!TurtleConfigTest.test_config_dictcCs4|t}t|}dddddd}|||dS)NrrFr)rrrrr!)r test_config_tworr#r$r%r r r &test_partial_config_dict_with_commentsXs  z7TurtleConfigTest.test_partial_config_dict_with_commentscCsr|t}t}t|}Wdn1s20Y|}|d||d|||ddddS)NzBad line in config-file zfillcolor: bluerF)rr) r invalid_test_configrZcaptured_stdoutrr#getvalueZassertInr$)r r&stdoutr'err_msgr r r test_config_dict_invalidgs  (  z)TurtleConfigTest.test_config_dict_invalidN)__name__ __module__ __qualname__r r)r+r0r r r r r2src@seZdZddZdS)VectorComparisonMixincCsPt|t|kr|dtt||D]"\}\}}|j||d|dq(dS)NzTuples are not of equal sizezvalues at index {} do not match)msg)lenZfail enumeratezipassertAlmostEqualformat)r vec1vec2idxijr r r assertVectorsAlmostEqual{s   z.VectorComparisonMixin.assertVectorsAlmostEqualN)r1r2r3r@r r r r r4ysr4c@seZdZddZddZdS) MultipliercCs d|S)NM*r r otherr r r __mul__szMultiplier.__mul__cCs |dS)N*Mr rCr r r __rmul__szMultiplier.__rmul__N)r1r2r3rErGr r r r rAsrAc@sdeZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ dS) TestVec2DcCstdd}||dd||dd||t|tt|ttd|ttd|tt||ttddddS)N?rrrK)Vec2Dr$assertIsInstance assertRaises TypeErrorr vecr r r test_constructors   zTestVec2D.test_constructorcCstdd}|t|ddS)Ng/$?gX9v?z (0.57,1.23))rMr$reprrQr r r test_reprs zTestVec2D.test_reprcCsftdd}tdd}tdd}|||||t||t||||||||dS)NrrK*)rMr$tupleZassertNotEqual)r r;r<Zvec3r r r test_equalitys     zTestVec2D.test_equalityc Cs~tdd}ttjdD]`}|j|d@tj||d}t|}|||||tWdq1sn0YqdS)NrIrJrK)proto)protocol) rMrangepickleHIGHEST_PROTOCOLsubTestdumpsloadsr$rN)r rRrZZpickledZ unpickledr r r test_picklings   zTestVec2D.test_picklingc Cst|D]j}|j|dJ|\\}}}t|}t|}|||} t|}|| |Wdq1sd0YqdS)Ncase)r_rMr@) r test_casesZlambda_operatorZ test_casefirstsecondr(Zop1Zop2resultr r r _assert_arithmetic_casess  z"TestVec2D._assert_arithmetic_casescCsgd}||dddS)N))rrrKrK)?rm))r)rJrJ)rKrJ)))g?rrl)@rKcSs||SNr xyr r r z0TestVec2D.test_vector_addition..rir rer r r test_vector_additionszTestVec2D.test_vector_additioncCsddg}||dddS)N)rj)roro)))g@%@?) r)g?rzcSs||Srqr rrr r r rurvz3TestVec2D.test_vector_subtraction..rwrxr r r test_vector_subtractionsz!TestVec2D.test_vector_subtractioncCstdd}tdd}||}d}|||tdd}tdd}||d||d||||d||d||t}|||t|dd |d d |||d |dS) Nr{rI#g$@rrFrKrB)rMr9r@rAr$)r r;r<Zanswerr(rRMr r r test_vector_multiplys     *zTestVec2D.test_vector_multiplycCs tdd}d}|| |dS)Nr{)rr{)rMr@)r rRr(r r r test_vector_negatives zTestVec2D.test_vector_negativecCsF|ttddd|ttddd|ttddddS)Nr{rrpg@)r$absrMr9r r r r test_distanceszTestVec2D.test_distancec Cslgd}|D]Z}|j|d:|\\}}}t|}||}|||Wdq 1s\0Yq dS)N)))rkrrk))rLZrn))rLirKr))rrn))rhrrc)r_rMrotater@)r ZcasesrdrRZrotr(Zgotr r r test_rotates  zTestVec2D.test_rotateN)r1r2r3rSrUrYrbriryr|rrrrr r r r rHs     rHc@seZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZddZdd Zd!d"Zd#S)$TestTNavigatorcCst|_dSrq)r TNavigatornavrr r r setUpszTestTNavigator.setUpcCs6|jdd||jd||jddSNr)rgotor9xcorycorrr r r test_gotoszTestTNavigator.test_gotocCs>||j|jj|jdd||j|jjdSr)r$rposZ _positionrrr r r test_pos szTestTNavigator.test_poscCs0||jjd|jd||jjddS)Nrmrr)rVrm)r$r_orientleftr@rr r r test_lefts zTestTNavigator.test_leftcCs0||jjd|jd||jjddS)Nrr)rg)r$rrrightr@rr r r test_rights zTestTNavigator.test_rightcCsd|jdd||jd||jd|j||jd||jddS)Nrrr)rrr9rrresetrr r r test_resets  zTestTNavigator.test_resetcCs||jdtdd}||j||j|jd|jdtdd}||j||t|jjddS)NrrZ skldjfldsk) rforwardrMr@positionrrrOrPr r(r r r test_forward"s      zTestTNavigator.test_forwardcCsj|jdtdd}||j||j|jd|jdtdd}||j|dS)Nr8rr)rZbackrMr@rrrrr r r test_backwards/s      zTestTNavigator.test_backwardscCs.|jdd}||jtdd|dS)Nrr)rrr9distancerMrr r r r:s zTestTNavigator.test_distancecCsZ|jd||jd|j||jd|j||jddS)Nrgm U!?)rrr9headingradiansdegreesrr r r test_radians_and_degrees?s    z'TestTNavigator.test_radians_and_degreescCsfgd}|D]T\\}}}||j|||||j||f|||jt|||q dS)N)))rrrV))rrgF@))rrgV@))rrg`@))rrgf@))rrg l@))rrgp@))rrgs@)r$rZtowardsrM)r Z coordinatesrsrtr(r r r test_towardsGs  zTestTNavigator.test_towardscCs`|jd||jd|jd||jd|jd||jd|t|jjd|jgd}t|d}|D]}|j|q| |j||jdt|d}|D]}|j|q| |j||jgd }d }|D]L}|d kr.|jt |n |j|||7}||j|dqdS) Nr-g?g̬`@Zsdkfjdsf)r{,r) r{riVri.gfffff&A@gIrg{G=rr) rrr9rrrOrPrsumr$r)r Z rotationsrhnumZ sum_so_farr r r test_headingZs6         zTestTNavigator.test_headingcCs||jd||jd|jd||jd|jd||jd|jd||jddS)NgGzY@gQ^gp= ףm@gQBgףp=S@ix)rZ setheadingr9rrr r r test_setheading|s    zTestTNavigator.test_setheadingcCs:|jd|jd|jd||jddS)Nrrr)gY@gi)rrrr@rrr r r test_positionss   zTestTNavigator.test_positionscCs.|jd|jd||jddS)NZd;YA)rr)rZsetxZsetyr@rrr r r test_setx_and_setys  z!TestTNavigator.test_setx_and_setycCsJ|jd|jd|j||jd||jddS)Nri`yrkr)rrrhomer@rr9rrr r r test_homes    zTestTNavigator.test_homecCsh||jdddtdd}||j|dt}|d|d||j|ddS) Nr(2g)\(?gMbP?g-)?rr)r9rrrMrrrr)r rRZanother_turtler r r test_distance_methods   z#TestTNavigator.test_distance_methodN)r1r2r3rrrrrrrrrrrrrrrrrr r r r rs"  " rc@seZdZddZddZdS)TestTPencCsFt}||||||||dSrq)rTPen assertTrueZisdownZpenup assertFalseZpendownr Ztpenr r r test_pendown_and_penups zTestTPen.test_pendown_and_penupcCsFt}||||||||dSrq)rrrZ isvisibleZ hideturtlerZ showturtlerr r r (test_showturtle_hideturtle_and_isvisibles z1TestTPen.test_showturtle_hideturtle_and_isvisibleN)r1r2r3rrr r r r rs r__main__)r]Zunittesttestr import_modulerrMr"r*r,ZTestCaserr4rArHrrr1mainr r r r s    G  v"