예제 #1
0
 def test_in_place(self):
     # Check that when the in_place argument is True, the result is always
     # the same as first operand.
     for dtype1, dtype2 in product(self.dtypes, self.dtypes):
         for op in self.all_binary_ops:
             result_dtype = _output_dtype(op, dtype1, dtype2, in_place=True)
             self.assertEqual(
                 result_dtype,
                 dtype1,
                 self._binary_error_message(op,
                                            dtype1,
                                            dtype2,
                                            dtype1,
                                            result_dtype,
                                            in_place=True),
             )
     for dtype in self.dtypes:
         for op in self.all_unary_ops:
             result_dtype = _output_dtype(op, dtype, in_place=True)
             self.assertEqual(
                 result_dtype,
                 dtype,
                 self._unary_error_message(op,
                                           dtype,
                                           dtype,
                                           result_dtype,
                                           in_place=True),
             )
예제 #2
0
 def test_commuative(self):
     # Check that the operation is commutative if in_place is not specified.
     for dtype1, dtype2 in product(self.dtypes, self.dtypes):
         for op in self.all_binary_ops:
             result_dtype1 = _output_dtype(op, dtype1, dtype2)
             result_dtype2 = _output_dtype(op, dtype2, dtype1)
             self.assertEqual(
                 result_dtype1,
                 result_dtype2,
                 "_output_dtype is not commutative with arguments "
                 "{!r} and {!r}: {!r} != {!r}".format(
                     dtype1, dtype2, result_dtype1, result_dtype2),
             )
예제 #3
0
 def test_commuative(self):
     # Check that the operation is commutative if in_place is not specified.
     for dtype1, dtype2 in product(self.dtypes, self.dtypes):
         for op in self.all_binary_ops:
             result_dtype1 = _output_dtype(op, dtype1, dtype2)
             result_dtype2 = _output_dtype(op, dtype2, dtype1)
             self.assertEqual(
                 result_dtype1,
                 result_dtype2,
                 "_output_dtype is not commutative with arguments "
                 "{!r} and {!r}: {!r} != {!r}".format(dtype1,
                                                      dtype2,
                                                      result_dtype1,
                                                      result_dtype2))
예제 #4
0
 def test_same_result(self):
     # Check that the result dtype is the same as the input dtypes for
     # relevant operators.
     for dtype in self.dtypes:
         for op in self.same_result_ops:
             result_dtype = _output_dtype(op, dtype, dtype)
             self.assertEqual(dtype, result_dtype,
                              self._binary_error_message(op, dtype, dtype,
                                                         dtype,
                                                         result_dtype))
         for op in self.unary_same_result_ops:
             result_dtype = _output_dtype(op, dtype)
             self.assertEqual(dtype, result_dtype,
                              self._unary_error_message(op, dtype, dtype,
                                                        result_dtype))
예제 #5
0
 def test_same_result(self):
     # Check that the result dtype is the same as the input dtypes for
     # relevant operators.
     for dtype in self.dtypes:
         for op in self.same_result_ops:
             result_dtype = _output_dtype(op, dtype, dtype)
             self.assertEqual(dtype, result_dtype,
                              self._binary_error_message(op, dtype, dtype,
                                                         dtype,
                                                         result_dtype))
         for op in self.unary_same_result_ops:
             result_dtype = _output_dtype(op, dtype)
             self.assertEqual(dtype, result_dtype,
                              self._unary_error_message(op, dtype, dtype,
                                                        result_dtype))
예제 #6
0
 def test_binary_float_argument(self):
     # Check that when one argument is a float dtype, a float dtype results
     # Unary operators are covered by other tests.
     dtypes = [
         np.dtype("i2"),
         np.dtype("i4"),
         np.dtype("i8"),
         np.dtype("f2"),
         np.dtype("f4"),
         np.dtype("f8"),
     ]
     expected_dtypes = [
         np.dtype("f4"),
         np.dtype("f8"),
         np.dtype("f8"),
         np.dtype("f2"),
         np.dtype("f4"),
         np.dtype("f8"),
     ]
     for op in self.all_binary_ops:
         for dtype, expected_dtype in zip(dtypes, expected_dtypes):
             result_dtype = _output_dtype(op, dtype, np.dtype("f2"))
             self.assertEqual(
                 expected_dtype,
                 result_dtype,
                 self._binary_error_message(op, dtype, np.dtype("f2"),
                                            expected_dtype, result_dtype),
             )
예제 #7
0
 def test_in_place(self):
     # Check that when the in_place argument is True, the result is always
     # the same as first operand.
     for dtype1, dtype2 in product(self.dtypes, self.dtypes):
         for op in self.all_binary_ops:
             result_dtype = _output_dtype(op, dtype1, dtype2, in_place=True)
             self.assertEqual(result_dtype, dtype1,
                              self._binary_error_message(op, dtype1, dtype2,
                                                         dtype1,
                                                         result_dtype,
                                                         in_place=True))
     for dtype in self.dtypes:
         for op in self.all_unary_ops:
             result_dtype = _output_dtype(op, dtype, in_place=True)
             self.assertEqual(result_dtype, dtype,
                              self._unary_error_message(op, dtype, dtype,
                                                        result_dtype,
                                                        in_place=True))
예제 #8
0
 def test_unary_float(self):
     cases = [(np.dtype('i2'), np.dtype('f4')),
              (np.dtype('i4'), np.dtype('f8')),
              (np.dtype('i8'), np.dtype('f8')),
              (np.dtype('f2'), np.dtype('f2')),
              (np.dtype('f4'), np.dtype('f4')),
              (np.dtype('f8'), np.dtype('f8'))]
     for dtype, expected_dtype in cases:
         for op in self.unary_float_ops:
             result_dtype = _output_dtype(op, dtype)
             self.assertEqual(expected_dtype, result_dtype,
                              self._unary_error_message(op, dtype,
                                                        expected_dtype,
                                                        result_dtype))
예제 #9
0
 def test_unary_float(self):
     cases = [(np.dtype('i2'), np.dtype('f4')),
              (np.dtype('i4'), np.dtype('f8')),
              (np.dtype('i8'), np.dtype('f8')),
              (np.dtype('f2'), np.dtype('f2')),
              (np.dtype('f4'), np.dtype('f4')),
              (np.dtype('f8'), np.dtype('f8'))]
     for dtype, expected_dtype in cases:
         for op in self.unary_float_ops:
             result_dtype = _output_dtype(op, dtype)
             self.assertEqual(expected_dtype, result_dtype,
                              self._unary_error_message(op, dtype,
                                                        expected_dtype,
                                                        result_dtype))
예제 #10
0
 def test_binary_float_argument(self):
     # Check that when one argument is a float dtype, a float dtype results
     # Unary operators are covered by other tests.
     dtypes = [np.dtype('i2'), np.dtype('i4'), np.dtype('i8'),
               np.dtype('f2'), np.dtype('f4'), np.dtype('f8')]
     expected_dtypes = [np.dtype('f4'), np.dtype('f8'), np.dtype('f8'),
                        np.dtype('f2'), np.dtype('f4'), np.dtype('f8')]
     for op in self.all_binary_ops:
         for dtype, expected_dtype in zip(dtypes, expected_dtypes):
             result_dtype = _output_dtype(op, dtype, np.dtype('f2'))
             self.assertEqual(expected_dtype, result_dtype,
                              self._binary_error_message(op, dtype,
                                                         np.dtype('f2'),
                                                         expected_dtype,
                                                         result_dtype))
예제 #11
0
 def test_unary_float(self):
     cases = [
         (np.dtype("i2"), np.dtype("f4")),
         (np.dtype("i4"), np.dtype("f8")),
         (np.dtype("i8"), np.dtype("f8")),
         (np.dtype("f2"), np.dtype("f2")),
         (np.dtype("f4"), np.dtype("f4")),
         (np.dtype("f8"), np.dtype("f8")),
     ]
     for dtype, expected_dtype in cases:
         for op in self.unary_float_ops:
             result_dtype = _output_dtype(op, dtype)
             self.assertEqual(
                 expected_dtype,
                 result_dtype,
                 self._unary_error_message(op, dtype, expected_dtype,
                                           result_dtype),
             )
예제 #12
0
 def test_binary_float(self):
     # Check that the result dtype is a float for relevant operators.
     # Perform checks for a selection of cases.
     cases = [(np.dtype('i2'), np.dtype('i2'), np.dtype('f8')),
              (np.dtype('i2'), np.dtype('i4'), np.dtype('f8')),
              (np.dtype('i4'), np.dtype('i4'), np.dtype('f8')),
              (np.dtype('i2'), np.dtype('f2'), np.dtype('f4')),
              (np.dtype('i2'), np.dtype('f4'), np.dtype('f4')),
              (np.dtype('i8'), np.dtype('f2'), np.dtype('f8')),
              (np.dtype('f2'), np.dtype('f2'), np.dtype('f2')),
              (np.dtype('f4'), np.dtype('f4'), np.dtype('f4')),
              (np.dtype('f2'), np.dtype('f4'), np.dtype('f4'))]
     for dtype1, dtype2, expected_dtype in cases:
         for op in self.float_ops:
             result_dtype = _output_dtype(op, dtype1, dtype2)
             self.assertEqual(expected_dtype, result_dtype,
                              self._binary_error_message(op, dtype1, dtype2,
                                                         expected_dtype,
                                                         result_dtype))
예제 #13
0
 def test_binary_float(self):
     # Check that the result dtype is a float for relevant operators.
     # Perform checks for a selection of cases.
     cases = [(np.dtype('i2'), np.dtype('i2'), np.dtype('f8')),
              (np.dtype('i2'), np.dtype('i4'), np.dtype('f8')),
              (np.dtype('i4'), np.dtype('i4'), np.dtype('f8')),
              (np.dtype('i2'), np.dtype('f2'), np.dtype('f4')),
              (np.dtype('i2'), np.dtype('f4'), np.dtype('f4')),
              (np.dtype('i8'), np.dtype('f2'), np.dtype('f8')),
              (np.dtype('f2'), np.dtype('f2'), np.dtype('f2')),
              (np.dtype('f4'), np.dtype('f4'), np.dtype('f4')),
              (np.dtype('f2'), np.dtype('f4'), np.dtype('f4'))]
     for dtype1, dtype2, expected_dtype in cases:
         for op in self.float_ops:
             result_dtype = _output_dtype(op, dtype1, dtype2)
             self.assertEqual(expected_dtype, result_dtype,
                              self._binary_error_message(op, dtype1, dtype2,
                                                         expected_dtype,
                                                         result_dtype))