@@ -37,6 +37,26 @@ def dtype(self, unit, tz_naive_fixture):
37
37
else :
38
38
return DatetimeTZDtype (unit = unit , tz = tz )
39
39
40
+ @pytest .fixture
41
+ def dta_dti (self , unit , dtype ):
42
+ tz = getattr (dtype , "tz" , None )
43
+
44
+ dti = pd .date_range ("2016-01-01" , periods = 55 , freq = "D" , tz = tz )
45
+ if tz is None :
46
+ arr = np .asarray (dti ).astype (f"M8[{ unit } ]" )
47
+ else :
48
+ arr = np .asarray (dti .tz_convert ("UTC" ).tz_localize (None )).astype (
49
+ f"M8[{ unit } ]"
50
+ )
51
+
52
+ dta = DatetimeArray ._simple_new (arr , dtype = dtype )
53
+ return dta , dti
54
+
55
+ @pytest .fixture
56
+ def dta (self , dta_dti ):
57
+ dta , dti = dta_dti
58
+ return dta
59
+
40
60
def test_non_nano (self , unit , reso , dtype ):
41
61
arr = np .arange (5 , dtype = np .int64 ).view (f"M8[{ unit } ]" )
42
62
dta = DatetimeArray ._simple_new (arr , dtype = dtype )
@@ -52,17 +72,8 @@ def test_non_nano(self, unit, reso, dtype):
52
72
@pytest .mark .parametrize (
53
73
"field" , DatetimeArray ._field_ops + DatetimeArray ._bool_ops
54
74
)
55
- def test_fields (self , unit , reso , field , dtype ):
56
- tz = getattr (dtype , "tz" , None )
57
- dti = pd .date_range ("2016-01-01" , periods = 55 , freq = "D" , tz = tz )
58
- if tz is None :
59
- arr = np .asarray (dti ).astype (f"M8[{ unit } ]" )
60
- else :
61
- arr = np .asarray (dti .tz_convert ("UTC" ).tz_localize (None )).astype (
62
- f"M8[{ unit } ]"
63
- )
64
-
65
- dta = DatetimeArray ._simple_new (arr , dtype = dtype )
75
+ def test_fields (self , unit , reso , field , dtype , dta_dti ):
76
+ dta , dti = dta_dti
66
77
67
78
# FIXME: assert (dti == dta).all()
68
79
@@ -85,6 +96,35 @@ def test_normalize(self, unit):
85
96
res = dta .normalize ()
86
97
tm .assert_extension_array_equal (res , expected )
87
98
99
+ def test_iter (self , dta ):
100
+ res = next (iter (dta ))
101
+ expected = dta [0 ]
102
+
103
+ assert type (res ) is pd .Timestamp
104
+ assert res .value == expected .value
105
+ assert res ._reso == expected ._reso
106
+ assert res == expected
107
+
108
+ def test_astype_object (self , dta ):
109
+ result = dta .astype (object )
110
+ assert all (x ._reso == dta ._reso for x in result )
111
+ assert all (x == y for x , y in zip (result , dta ))
112
+
113
+ def test_to_pydatetime (self , dta_dti ):
114
+ dta , dti = dta_dti
115
+
116
+ result = dta .to_pydatetime ()
117
+ expected = dti .to_pydatetime ()
118
+ tm .assert_numpy_array_equal (result , expected )
119
+
120
+ @pytest .mark .parametrize ("meth" , ["time" , "timetz" , "date" ])
121
+ def test_time_date (self , dta_dti , meth ):
122
+ dta , dti = dta_dti
123
+
124
+ result = getattr (dta , meth )
125
+ expected = getattr (dti , meth )
126
+ tm .assert_numpy_array_equal (result , expected )
127
+
88
128
89
129
class TestDatetimeArrayComparisons :
90
130
# TODO: merge this into tests/arithmetic/test_datetime64 once it is
0 commit comments