a 5êdgYã@s€ddlZddlZddlZddlZddlZddlmZejdkrHe d¡‚ddl m Z ej Z Gdd„dej ƒZedkr|e ¡dS) éN)ÚsupportÚwin32ztest only relevant on win32)Ú write_inputc@s eZdZdd„Zdd„Zdd„Ze e  ¡dd…d kd ¡d d „ƒZ d d„Z dd„Z dd„Z dd„Ze dd¡dd„ƒZdd„Ze dd¡dd„ƒZdd„ZdS)ÚWindowsConsoleIOTestscCs:| tttjƒ¡| tttjƒ¡| tttjƒ¡dS)N)Ú assertTrueÚ issubclassÚConIOÚioÚ RawIOBaseÚ assertFalseÚBufferedIOBaseÚ TextIOBase©Úself©rú2/usr/local/lib/python3.9/test/test_winconsoleio.pyÚtest_abcszWindowsConsoleIOTests.test_abccCsn| tdtd¡t ¡(}| ¡}| tdt|¡Wdƒn1sF0Yz tdƒ}WntynYn>0| | ¡¡| |  ¡¡|  d| ¡¡|  ¡|  ¡ztddƒ}WntyÌYn>0| | ¡¡| |  ¡¡|  d| ¡¡|  ¡|  ¡ztddƒ}Wnty,Yn>0| | ¡¡| |  ¡¡|  d| ¡¡|  ¡|  ¡dS)Nznegative file descriptoréÿÿÿÿz&Cannot open (console|non-console file)réÚwé) ZassertRaisesRegexÚ ValueErrorrÚtempfileÚ TemporaryFileÚfilenorÚreadabler ÚwritableÚ assertEqualÚclose)rZtmpfileÚfdÚfrrrÚ test_open_fdsFÿ ÿ"   z"WindowsConsoleIOTests.test_open_fdcCsþ| tttj¡tdƒ}| | ¡¡| | ¡¡|  |  ¡¡|  ¡|  ¡tdƒ}| | ¡¡| | ¡¡|  |  ¡¡|  ¡|  ¡tddƒ}| | ¡¡| | ¡¡|  |  ¡¡|  ¡|  ¡t dddd}|  |t¡|  ¡dS) NÚCONúCONIN$úCONOUT$rzC:/conÚrbr©Ú buffering)Z assertRaisesrrÚsysÚ executablerrr rZassertIsNotNonerrÚopenÚassertIsInstance©rr rrrÚtest_open_nameGs,  z$WindowsConsoleIOTests.test_open_nameNr©érz+test does not work on Windows 7 and earliercCsHtdddd}| |t¡| ¡tdddd}| |t¡| ¡dS)Nz \\.\conin$r%rr&z //?/conout$Úwb)r*r+rrr,rrrÚtest_conin_conout_namescs   z-WindowsConsoleIOTests.test_conin_conout_namescCs„t ¡}| tj|¡tj |d¡}t|ddd>}t   ¡dd…dkrV|  |t ¡n |  |t ¡Wdƒn1sv0YdS)Nr$r0rr&rr.)rÚmkdtempZ addCleanuprÚrmtreeÚosÚpathÚjoinr*r(Úgetwindowsversionr+rZassertNotIsInstance)rZ temp_pathZ conout_pathr rrrÚtest_conout_pathnsz&WindowsConsoleIOTests.test_conout_pathcCs@tddƒ"}| | d¡d¡Wdƒn1s20YdS)Nr$rór)rrÚwriter,rrrÚtest_write_empty_datazs z+WindowsConsoleIOTests.test_write_empty_datacCsZtddƒ}tj}z0|t_t|jj|d dd¡ƒtƒ}W|t_n|t_0| ||¡dS)Nr#Úrz ú utf-16-leÚ surrogatepass) r*r(ÚstdinrÚbufferÚrawÚencodeÚinputr)rÚtextr?Z old_stdinÚactualrrrÚassertStdinRoundTrip~s þz*WindowsConsoleIOTests.assertStdinRoundTripcCs"| d¡| d¡| d¡dS)NZabc123u ϼўТλФЙuAÍB ﬖ̳AAÌ©rFrrrrÚ test_inputŒs  z WindowsConsoleIOTests.test_inputTz%Handling Non-BMP characters is brokencCs| d¡dS)Nu ô€€€ô¿¿ô¿½rGrrrrÚtest_input_nonbmp•sz'WindowsConsoleIOTests.test_input_nonbmpc Cs–d d¡}d d¡}tddƒD]r}tdddd P}t||ƒd }| d ¡s^| |¡}||7}q@| ||d  |¡¡Wdƒq1s†0YqdS) NuϼўТλФЙ r=úutf-8rér#r%rr&r9ó ústdin.read({})©rBÚranger*rÚendswithÚreadrÚformat©rÚsourceÚexpectedZ read_countr?rEÚbrrrÚtest_partial_readsšs      z(WindowsConsoleIOTests.test_partial_readsc Cs–d d¡}d d¡}tddƒD]r}tdddd P}t||ƒd }| d ¡s^| |¡}||7}q@| ||d  |¡¡Wdƒq1s†0YqdS) Nu ô¿¿ô€ r=rJrrKr#r%rr&r9rLrMrNrSrrrÚtest_partial_surrogate_reads«s      z2WindowsConsoleIOTests.test_partial_surrogate_readscCsŒtddddj}d d¡}d d¡}t||ƒ| d ¡| ¡}}| |dd …|¡| |d d…|¡Wdƒn1s~0YdS) Nr#r%rr&uÄ r=õÄrJr)r*rBrrQÚreadallr)rr?rTrUÚarVrrrÚ test_ctrl_z½s   z!WindowsConsoleIOTests.test_ctrl_z)Ú__name__Ú __module__Ú __qualname__rr!r-ÚunittestZskipIfr(r7r1r8r;rFrHrIrWrXr\rrrrrs"/ÿ      rÚ__main__)r r4r(rr`ÚtestrÚplatformZSkipTestZ _testconsolerZ_WindowsConsoleIOrZTestCaserr]ÚmainrrrrÚs    5