text: #!/usr/bin/env python
  import os
  import cv2 as cv
  import numpy as np
  
  from tests_common import NewOpenCVTests, unittest
  
  class cudacodec_test(NewOpenCVTests):
      def setUp(self):
          super(cudacodec_test, self).setUp()
          if not cv.cuda.getCudaEnabledDeviceCount():
              self.skipTest("No CUDA-capable device is detected")
  
      @unittest.skipIf('OPENCV_TEST_DATA_PATH' not in os.environ,
                       "OPENCV_TEST_DATA_PATH is not defined")
      def test_reader(self):
          #Test the functionality but not the results of the video reader
  
          vid_path = os.environ['OPENCV_TEST_DATA_PATH'] + '/cv/video/1920x1080.avi'
          try:
              reader = cv.cudacodec.createVideoReader(vid_path)
              ret, gpu_mat = reader.nextFrame()
              self.assertTrue(ret)
              self.assertTrue('GpuMat' in str(type(gpu_mat)), msg=type(gpu_mat))
              #TODO: print(cv.utils.dumpInputArray(gpu_mat)) # - no support for GpuMat
  
              # not checking output, therefore sepearate tests for different signatures is unecessary
              ret, _gpu_mat2 = reader.nextFrame(gpu_mat)
              #TODO: self.assertTrue(gpu_mat == gpu_mat2)
              self.assertTrue(ret)
          except cv.error as e:
              notSupported = (e.code == cv.Error.StsNotImplemented or e.code == cv.Error.StsUnsupportedFormat or e.code == cv.Error.GPU_API_CALL_ERROR)
              self.assertTrue(notSupported)
              if e.code == cv.Error.StsNotImplemented:
                  self.skipTest("NVCUVID is not installed")
              elif e.code == cv.Error.StsUnsupportedFormat:
                  self.skipTest("GPU hardware video decoder missing or video format not supported")
              elif e.code == cv.Error.GPU_API_CALL_ERRROR:
                  self.skipTest("GPU hardware video decoder is missing")
              else:
                  self.skipTest(e.err)
  
      def test_writer_existence(self):
          #Test at least the existence of wrapped functions for now
  
          try:
              _writer = cv.cudacodec.createVideoWriter("tmp", (128, 128), 30)
          except cv.error as e:
              self.assertEqual(e.code, cv.Error.StsNotImplemented)
              self.skipTest("NVCUVENC is not installed")
  
          self.assertTrue(True) #It is sufficient that no exceptions have been there
  
  if __name__ == '__main__':
      NewOpenCVTests.bootstrap()