Source code for contracts.testing.array_extended_test

try:
    import numpy
except ImportError:
    pass
else:

    import unittest

    from contracts import decorate, new_contract, ContractNotRespected

    new_contract('rgb', 'array[HxWx3],H>0,W>0')
    new_contract('rgba', 'array[HxWx4],H>0,W>0')

[docs] def blend_function(image1, image2, bug=False): """ Blends two RGB or RGBA images together. :param image1: The first image to blend. :type image1: (rgb|rgba),array[HxWx*] :param image2: The second image to blend. :type image2: (rgb|rgba),array[HxWx*] :param bug: Introduce a bug to check the contracts. :type bug: bool :return: The blended image. :rtype: rgb,array[HxWx3] """ H, W = image1.shape[0], image1.shape[1] if bug: # if we want to show a bug, return a different shape W += 1 result = numpy.zeros((H, W, 3), 'uint8') # put here the actual function image2 return result
im_float = numpy.zeros((10, 10, 3), dtype='float32') rgb_small = numpy.zeros((10, 10, 3), dtype='uint8') rgb_large = numpy.zeros((20, 20, 3), dtype='uint8') rgba_small = numpy.zeros((10, 10, 3), dtype='uint8') rgba_large = numpy.zeros((20, 20, 3), dtype='uint8')
[docs] class ArrayTest(unittest.TestCase):
[docs] def setUp(self): self.blend = decorate(blend_function)
[docs] def test_correct_behavior(self): self.blend(rgb_small, rgb_small) self.blend(rgb_small, rgba_small) self.blend(rgba_small, rgb_small) self.blend(rgb_large, rgba_large) self.blend(rgba_large, rgb_large)
[docs] def test_incorrect1(self): self.assertRaises(ContractNotRespected, self.blend, None, None)
[docs] def test_incorrect2(self): self.assertRaises(ContractNotRespected, self.blend, None, rgb_small)
[docs] def test_incorrect3(self): self.assertRaises(ContractNotRespected, self.blend, rgb_small, None)
[docs] def test_incorrect4(self): self.assertRaises(ContractNotRespected, self.blend, rgb_small, rgb_large)
[docs] def test_incorrect5(self): self.assertRaises(ContractNotRespected, self.blend, rgb_small, rgb_large)
[docs] def test_incorrect6(self): # check that rtype checking works, introduce a bug self.assertRaises(ContractNotRespected, self.blend, rgb_small, rgb_small, bug=True)