1import addconstant 2import numpy 3 4 5ERROR_THRESHOLD = 0.0001 6 7 8def test(): 9 constant_u1 = True 10 constant_u8 = 3 11 constant_u16 = 49153 12 constant_u32 = 65537 13 constant_u64 = 5724968371 14 constant_i8 = -7 15 constant_i16 = -30712 16 constant_i32 = -98901 17 constant_i64 = -8163465847 18 constant_float = 3.14159 19 constant_double = 1.61803 20 21 input_u8 = numpy.array([0, 1, 2], dtype=numpy.uint8) 22 input_u16 = numpy.array([0, 256, 512], dtype=numpy.uint16) 23 input_u32 = numpy.array([0, 65536, 131072], dtype=numpy.uint32) 24 input_u64 = numpy.array([0, 4294967296, 8589934592], dtype=numpy.uint64) 25 input_i8 = numpy.array([1, -2, 3], dtype=numpy.int8) 26 input_i16 = numpy.array([1, -256, 512], dtype=numpy.int16) 27 input_i32 = numpy.array([1, -65536, 131072], dtype=numpy.int32) 28 input_i64 = numpy.array([0, -4294967296, 8589934592], dtype=numpy.int64) 29 input_float = numpy.array([3.14, 2.718, 1.618], dtype=numpy.float32) 30 input_double = numpy.array([3.14, 2.718, 1.618], dtype=numpy.float64) 31 input_2d = numpy.array([[1, 2, 3], [4, 5, 6]], dtype=numpy.int8, order='F') 32 input_3d = numpy.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]], dtype=numpy.int8) 33 34 output_u8 = numpy.zeros((3,), dtype=numpy.uint8) 35 output_u16 = numpy.zeros((3,), dtype=numpy.uint16) 36 output_u32 = numpy.zeros((3,), dtype=numpy.uint32) 37 output_u64 = numpy.zeros((3,), dtype=numpy.uint64) 38 output_i8 = numpy.zeros((3,), dtype=numpy.int8) 39 output_i16 = numpy.zeros((3,), dtype=numpy.int16) 40 output_i32 = numpy.zeros((3,), dtype=numpy.int32) 41 output_i64 = numpy.zeros((3,), dtype=numpy.int64) 42 output_float = numpy.zeros((3,), dtype=numpy.float32) 43 output_double = numpy.zeros((3,), dtype=numpy.float64) 44 output_2d = numpy.zeros((2, 3), dtype=numpy.int8, order='F') 45 output_3d = numpy.zeros((2, 2, 2), dtype=numpy.int8) 46 47 addconstant.addconstant( 48 constant_u1, 49 constant_u8, constant_u16, constant_u32, constant_u64, 50 constant_i8, constant_i16, constant_i32, constant_i64, 51 constant_float, constant_double, 52 input_u8, input_u16, input_u32, input_u64, 53 input_i8, input_i16, input_i32, input_i64, 54 input_float, input_double, input_2d, input_3d, 55 output_u8, output_u16, output_u32, output_u64, 56 output_i8, output_i16, output_i32, output_i64, 57 output_float, output_double, output_2d, output_3d, 58 ) 59 60 combinations = [ 61 ("u8", input_u8, output_u8, constant_u8), 62 ("u16", input_u16, output_u16, constant_u16), 63 ("u32", input_u32, output_u32, constant_u32), 64 ("u64", input_u64, output_u64, constant_u64), 65 ("i8", input_i8, output_i8, constant_i8), 66 ("i16", input_i16, output_i16, constant_i16), 67 ("i32", input_i32, output_i32, constant_i32), 68 ("i64", input_i64, output_i64, constant_i64), 69 ("float", input_float, output_float, constant_float), 70 ("double", input_double, output_double, constant_double), 71 ] 72 73 for _, input, output, constant in combinations: 74 for i, o in zip(input, output): 75 assert abs(o - (i + constant)) < ERROR_THRESHOLD 76 77 for x in range(input_2d.shape[0]): 78 for y in range(input_2d.shape[1]): 79 assert output_2d[x, y] == input_2d[x, y] + constant_i8 80 81 for x in range(input_3d.shape[0]): 82 for y in range(input_3d.shape[1]): 83 for z in range(input_3d.shape[2]): 84 assert output_3d[x, y, z] == input_3d[x, y, z] + constant_i8 85 86 87if __name__ == "__main__": 88 test() 89