Skip to content

Commit 38cc028

Browse files
committed
Add tests
1 parent bb65d9b commit 38cc028

File tree

2 files changed

+60
-0
lines changed

2 files changed

+60
-0
lines changed

databricks/koalas/tests/indexes/test_datetime.py

+29
Original file line numberDiff line numberDiff line change
@@ -128,3 +128,32 @@ def test_strftime(self):
128128
self.assert_eq(
129129
kidx.strftime(date_format="%B %d, %Y"), pidx.strftime(date_format="%B %d, %Y")
130130
)
131+
132+
def test_arithmetic_op_exceptions(self):
133+
for kidx, pidx in self.idx_pairs:
134+
py_datetime = pidx.to_pydatetime()
135+
for other in [1, 0.1, kidx, kidx.to_series().reset_index(drop=True), py_datetime]:
136+
expected_err_msg = "addition can not be applied to date times."
137+
self.assertRaisesRegex(TypeError, expected_err_msg, lambda: kidx + other)
138+
self.assertRaisesRegex(TypeError, expected_err_msg, lambda: other + kidx)
139+
140+
expected_err_msg = "multiplication can not be applied to date times."
141+
self.assertRaisesRegex(TypeError, expected_err_msg, lambda: kidx * other)
142+
self.assertRaisesRegex(TypeError, expected_err_msg, lambda: other * kidx)
143+
144+
expected_err_msg = "division can not be applied to date times."
145+
self.assertRaisesRegex(TypeError, expected_err_msg, lambda: kidx / other)
146+
self.assertRaisesRegex(TypeError, expected_err_msg, lambda: other / kidx)
147+
self.assertRaisesRegex(TypeError, expected_err_msg, lambda: kidx // other)
148+
self.assertRaisesRegex(TypeError, expected_err_msg, lambda: other // kidx)
149+
150+
expected_err_msg = "modulo can not be applied to date times."
151+
self.assertRaisesRegex(TypeError, expected_err_msg, lambda: kidx % other)
152+
self.assertRaisesRegex(TypeError, expected_err_msg, lambda: other % kidx)
153+
154+
for other in [1, 0.1, py_datetime]:
155+
expected_err_msg = "datetime subtraction can only be applied to datetime series."
156+
self.assertRaisesRegex(TypeError, expected_err_msg, lambda: kidx - other)
157+
self.assertRaisesRegex(TypeError, expected_err_msg, lambda: other - kidx)
158+
159+
self.assertRaises(NotImplementedError, lambda: py_datetime - kidx)

databricks/koalas/tests/test_series_datetime.py

+31
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,37 @@ def test_timestamp_subtraction(self):
7575
with self.assertRaisesRegex(TypeError, expected_error_message):
7676
1 - kdf["a"]
7777

78+
def test_arithmetic_op_exceptions(self):
79+
kser = self.ks_start_date
80+
py_datetime = self.pd_start_date.dt.to_pydatetime()
81+
datetime_index = ks.Index(self.pd_start_date)
82+
83+
for other in [1, 0.1, kser, datetime_index, py_datetime]:
84+
expected_err_msg = "addition can not be applied to date times."
85+
self.assertRaisesRegex(TypeError, expected_err_msg, lambda: kser + other)
86+
self.assertRaisesRegex(TypeError, expected_err_msg, lambda: other + kser)
87+
88+
expected_err_msg = "multiplication can not be applied to date times."
89+
self.assertRaisesRegex(TypeError, expected_err_msg, lambda: kser * other)
90+
self.assertRaisesRegex(TypeError, expected_err_msg, lambda: other * kser)
91+
92+
expected_err_msg = "division can not be applied to date times."
93+
self.assertRaisesRegex(TypeError, expected_err_msg, lambda: kser / other)
94+
self.assertRaisesRegex(TypeError, expected_err_msg, lambda: other / kser)
95+
self.assertRaisesRegex(TypeError, expected_err_msg, lambda: kser // other)
96+
self.assertRaisesRegex(TypeError, expected_err_msg, lambda: other // kser)
97+
98+
expected_err_msg = "modulo can not be applied to date times."
99+
self.assertRaisesRegex(TypeError, expected_err_msg, lambda: kser % other)
100+
self.assertRaisesRegex(TypeError, expected_err_msg, lambda: other % kser)
101+
102+
ks.set_option("compute.ops_on_diff_frames", True)
103+
for other in [1, 0.1, py_datetime]:
104+
expected_err_msg = "datetime subtraction can only be applied to datetime series."
105+
self.assertRaisesRegex(TypeError, expected_err_msg, lambda: kser - other)
106+
107+
self.assertRaises(NotImplementedError, lambda: py_datetime - kser)
108+
78109
def test_date_subtraction(self):
79110
pdf = self.pdf1
80111
kdf = ks.from_pandas(pdf)

0 commit comments

Comments
 (0)