code: def test_popen(self):
      command = r"""if 1:
              import sys
              s = sys.stdin.readline()
              sys.stdout.write(s.upper())
              sys.stderr.write('stderr')
              """
      msg = b"blah\n"
  
      p = windows_utils.Popen(
          [sys.executable, "-c", command],
          stdin=windows_utils.PIPE,
          stdout=windows_utils.PIPE,
          stderr=windows_utils.PIPE,
      )
  
      for f in [p.stdin, p.stdout, p.stderr]:
          self.assertIsInstance(f, windows_utils.PipeHandle)
  
      ovin = _overlapped.Overlapped()
      ovout = _overlapped.Overlapped()
      overr = _overlapped.Overlapped()
  
      ovin.WriteFile(p.stdin.handle, msg)
      ovout.ReadFile(p.stdout.handle, 100)
      overr.ReadFile(p.stderr.handle, 100)
  
      events = [ovin.event, ovout.event, overr.event]
      # Super-long timeout for slow buildbots.
      res = _winapi.WaitForMultipleObjects(
          events, True, int(support.SHORT_TIMEOUT * 1000)
      )
      self.assertEqual(res, _winapi.WAIT_OBJECT_0)
      self.assertFalse(ovout.pending)
      self.assertFalse(overr.pending)
      self.assertFalse(ovin.pending)
  
      self.assertEqual(ovin.getresult(), len(msg))
      out = ovout.getresult().rstrip()
      err = overr.getresult().rstrip()
  
      self.assertGreater(len(out), 0)
      self.assertGreater(len(err), 0)
      # allow for partial reads...
      self.assertTrue(msg.upper().rstrip().startswith(out))
      self.assertTrue(b"stderr".startswith(err))
  
      # The context manager calls wait() and closes resources
      with p:
          pass
  
file_path: cpython/Lib/test/test_asyncio/test_windows_utils.py
imports: import sys
  import unittest
  import warnings
  import _overlapped
  import _winapi
  import asyncio
  from asyncio import windows_utils
  from test import support
label_desc: Use image node_id 1 for calling the PopenTests obj's underlying member method code with example usage: obj.test_popen() without return types