@@ -75,22 +75,24 @@ def test_box_basics():
7575
7676 # read again
7777 read = box .get (object .id )
78- assert (floor (read .date .timestamp () * 1000 ) == object .date )
79- assert (read .date_nano == floor (object .date_nano * 1000000000 ))
78+ assert read .str == "bar"
79+ assert floor (read .date .timestamp () * 1000 ) == object .date
80+ assert read .date_nano == floor (object .date_nano * 1000000000 )
8081
8182 # remove
82- box .remove (object )
83+ success = box .remove (object )
84+ assert success
8385
8486 # remove should return success
8587 success = box .remove (1 )
86- assert success == True
88+ assert success
8789 success = box .remove (1 )
88- assert success == False
90+ assert success is False
8991
9092 # check they're gone
9193 assert box .count () == 0
92- assert box .get (object .id ) == None
93- assert box .get (1 ) == None
94+ assert box .get (object .id ) is None
95+ assert box .get (1 ) is None
9496
9597 store .close ()
9698
@@ -164,7 +166,6 @@ def test_datetime():
164166 assert pytest .approx (read .date ) == object .date .timestamp ()
165167
166168 # update
167- object .str = "bar"
168169 object .date = datetime .utcnow ()
169170 object .date_nano = datetime .utcnow ()
170171 id = box .put (object )
@@ -173,19 +174,48 @@ def test_datetime():
173174 # read again
174175 read = box .get (object .id )
175176 assert pytest .approx (read .date ) == object .date .timestamp ()
177+ assert pytest .approx (read .date_nano .timestamp ()) == object .date_nano .timestamp ()
176178
177179 # remove
178180 success = box .remove (object )
179- assert success == True
181+ assert success
180182
181183 # check they're gone
182184 assert box .count () == 0
183- assert box .get (object .id ) == None
184- assert box .get (1 ) == None
185+ assert box .get (object .id ) is None
186+ assert box .get (1 ) is None
185187
186188 store .close ()
187189
188190
191+ def test_datetime_special_values ():
192+ store = load_empty_test_datetime_store ()
193+ box = store .box (TestEntityDatetime )
194+ assert box .is_empty ()
195+
196+ object = TestEntityDatetime ()
197+ object .date = 0
198+ object .date_nano = 0.0
199+ id = box .put (object )
200+ assert object .id == id
201+
202+ read = box .get (id )
203+ assert isinstance (read .date , float )
204+ assert read .date == 0.0
205+ assert isinstance (read .date_nano , datetime )
206+ assert read .date_nano == datetime .fromtimestamp (0 , timezone .utc )
207+
208+ object .date = datetime .fromtimestamp (1.0 , timezone .utc )
209+ object .date_nano = datetime .fromtimestamp (1.0 )
210+ id = box .put (object )
211+
212+ read = box .get (id )
213+ assert isinstance (read .date , float )
214+ assert read .date == 1.0
215+ assert isinstance (read .date_nano , datetime )
216+ assert read .date_nano == datetime .fromtimestamp (1.0 , timezone .utc )
217+
218+
189219def test_flex ():
190220 def test_put_get (object : TestEntity , box : objectbox .Box , property ):
191221 object .flex = property
0 commit comments