|
12 | 12 | aware, |
13 | 13 | naive, |
14 | 14 | DateTime, |
| 15 | + date_only, |
15 | 16 | ) |
16 | 17 |
|
17 | 18 | TEST_DATA = (Path(__file__) / "..").resolve() |
@@ -109,3 +110,31 @@ def test_differing_zone_subtract(self) -> None: |
109 | 110 |
|
110 | 111 | self.assertEqual(dtzi - dttz, timedelta(0)) |
111 | 112 | self.assertEqual(dttz - dtzi, timedelta(0)) |
| 113 | + |
| 114 | + def test_combine(self) -> None: |
| 115 | + from zoneinfo import ZoneInfo |
| 116 | + |
| 117 | + d = date_only(date(2025, 2, 13)) |
| 118 | + aware_time = aware( |
| 119 | + time(hour=15, minute=35, second=13, tzinfo=timezone.utc), timezone |
| 120 | + ) |
| 121 | + naive_time = naive(time(hour=15, minute=35, second=13)) |
| 122 | + |
| 123 | + combined_aware: DateTime[timezone] = DateTime.combine(d, aware_time) |
| 124 | + combined_naive: DateTime[None] = DateTime.combine(d, naive_time) |
| 125 | + |
| 126 | + self.assertIsInstance(combined_naive, NaiveDateTime) |
| 127 | + self.assertIsInstance(combined_aware, AwareDateTime) |
| 128 | + self.assertIs(combined_aware.tzinfo, timezone.utc) |
| 129 | + |
| 130 | + zi = ZoneInfo("Europe/Berlin") |
| 131 | + |
| 132 | + adt_zi: DateTime[ZoneInfo] = DateTime.combine(d, aware_time, zi) |
| 133 | + self.assertIsInstance(adt_zi, AwareDateTime) |
| 134 | + adt_naive: DateTime[None] = DateTime.combine(d, aware_time, tzinfo=None) |
| 135 | + self.assertIsInstance(adt_naive, NaiveDateTime) |
| 136 | + |
| 137 | + ndt_zi: DateTime[ZoneInfo] = DateTime.combine(d, naive_time, zi) |
| 138 | + self.assertIsInstance(ndt_zi, AwareDateTime) |
| 139 | + ndt_naive: DateTime[None] = DateTime.combine(d, naive_time, tzinfo=None) |
| 140 | + self.assertIsInstance(ndt_naive, NaiveDateTime) |
0 commit comments