@@ -279,3 +279,82 @@ def test_name(self):
279279 cache = r .DNSCache ()
280280 cache .async_add_records ([record1 , record2 ])
281281 assert cache .names () == ["irrelevant" ]
282+
283+
284+ def test_async_entries_with_name_returns_newest_record ():
285+ cache = r .DNSCache ()
286+ record1 = r .DNSAddress ("a" , const ._TYPE_A , const ._CLASS_IN , 1 , b"a" , created = 1.0 )
287+ record2 = r .DNSAddress ("a" , const ._TYPE_A , const ._CLASS_IN , 1 , b"a" , created = 2.0 )
288+ cache .async_add_records ([record1 ])
289+ cache .async_add_records ([record2 ])
290+ assert next (iter (cache .async_entries_with_name ("a" ))) is record2
291+
292+
293+ def test_async_entries_with_server_returns_newest_record ():
294+ cache = r .DNSCache ()
295+ record1 = r .DNSService ("a" , const ._TYPE_SRV , const ._CLASS_IN , 1 , 1 , 1 , 1 , "a" , created = 1.0 )
296+ record2 = r .DNSService ("a" , const ._TYPE_SRV , const ._CLASS_IN , 1 , 1 , 1 , 1 , "a" , created = 2.0 )
297+ cache .async_add_records ([record1 ])
298+ cache .async_add_records ([record2 ])
299+ assert next (iter (cache .async_entries_with_server ("a" ))) is record2
300+
301+
302+ def test_async_get_returns_newest_record ():
303+ cache = r .DNSCache ()
304+ record1 = r .DNSAddress ("a" , const ._TYPE_A , const ._CLASS_IN , 1 , b"a" , created = 1.0 )
305+ record2 = r .DNSAddress ("a" , const ._TYPE_A , const ._CLASS_IN , 1 , b"a" , created = 2.0 )
306+ cache .async_add_records ([record1 ])
307+ cache .async_add_records ([record2 ])
308+ assert cache .get (record2 ) is record2
309+
310+
311+ def test_async_get_returns_newest_nsec_record ():
312+ cache = r .DNSCache ()
313+ record1 = r .DNSNsec ("a" , const ._TYPE_NSEC , const ._CLASS_IN , 1 , "a" , [], created = 1.0 )
314+ record2 = r .DNSNsec ("a" , const ._TYPE_NSEC , const ._CLASS_IN , 1 , "a" , [], created = 2.0 )
315+ cache .async_add_records ([record1 ])
316+ cache .async_add_records ([record2 ])
317+ assert cache .get (record2 ) is record2
318+
319+
320+ def test_get_by_details_returns_newest_record ():
321+ cache = r .DNSCache ()
322+ record1 = r .DNSAddress ("a" , const ._TYPE_A , const ._CLASS_IN , 1 , b"a" , created = 1.0 )
323+ record2 = r .DNSAddress ("a" , const ._TYPE_A , const ._CLASS_IN , 1 , b"a" , created = 2.0 )
324+ cache .async_add_records ([record1 ])
325+ cache .async_add_records ([record2 ])
326+ assert cache .get_by_details ("a" , const ._TYPE_A , const ._CLASS_IN ) is record2
327+
328+
329+ def test_get_all_by_details_returns_newest_record ():
330+ cache = r .DNSCache ()
331+ record1 = r .DNSAddress ("a" , const ._TYPE_A , const ._CLASS_IN , 1 , b"a" , created = 1.0 )
332+ record2 = r .DNSAddress ("a" , const ._TYPE_A , const ._CLASS_IN , 1 , b"a" , created = 2.0 )
333+ cache .async_add_records ([record1 ])
334+ cache .async_add_records ([record2 ])
335+ records = cache .get_all_by_details ("a" , const ._TYPE_A , const ._CLASS_IN )
336+ assert len (records ) == 1
337+ assert records [0 ] is record2
338+
339+
340+ def test_async_get_all_by_details_returns_newest_record ():
341+ cache = r .DNSCache ()
342+ record1 = r .DNSAddress ("a" , const ._TYPE_A , const ._CLASS_IN , 1 , b"a" , created = 1.0 )
343+ record2 = r .DNSAddress ("a" , const ._TYPE_A , const ._CLASS_IN , 1 , b"a" , created = 2.0 )
344+ cache .async_add_records ([record1 ])
345+ cache .async_add_records ([record2 ])
346+ records = cache .async_all_by_details ("a" , const ._TYPE_A , const ._CLASS_IN )
347+ assert len (records ) == 1
348+ assert records [0 ] is record2
349+
350+
351+ def test_async_get_unique_returns_newest_record ():
352+ cache = r .DNSCache ()
353+ record1 = r .DNSPointer ("a" , const ._TYPE_PTR , const ._CLASS_IN , 1 , "a" , created = 1.0 )
354+ record2 = r .DNSPointer ("a" , const ._TYPE_PTR , const ._CLASS_IN , 1 , "a" , created = 2.0 )
355+ cache .async_add_records ([record1 ])
356+ cache .async_add_records ([record2 ])
357+ record = cache .async_get_unique (record1 )
358+ assert record is record2
359+ record = cache .async_get_unique (record2 )
360+ assert record is record2
0 commit comments