@@ -423,3 +423,50 @@ def test_dlpack_size_0():
423
423
cap = x .__dlpack__ (max_version = max_supported_ver )
424
424
y = _dlp .from_dlpack_versioned_capsule (cap )
425
425
assert y ._pointer == x ._pointer
426
+
427
+
428
+ def test_dlpack_max_version_validation ():
429
+ try :
430
+ x = dpt .ones (100 , dtype = "i4" )
431
+ except dpctl .SyclDeviceCreationError :
432
+ pytest .skip ("No default device available" )
433
+
434
+ with pytest .raises (
435
+ TypeError ,
436
+ match = r"`__dlpack__` expects `max_version` to be a "
437
+ r"2-tuple of integers `\(major, minor\)`, instead "
438
+ r"got .*" ,
439
+ ):
440
+ x .__dlpack__ (max_version = 1 )
441
+
442
+
443
+ def test_dlpack_kwargs ():
444
+ try :
445
+ q1 = dpctl .SyclQueue ()
446
+ q2 = dpctl .SyclQueue ()
447
+ except dpctl .SyclQueueCreationError :
448
+ pytest .skip ("Could not create default queues" )
449
+ x = dpt .arange (100 , dtype = "i4" , sycl_queue = q1 )
450
+
451
+ legacy_ver = (0 , 8 )
452
+ cap = x .__dlpack__ (stream = q2 , max_version = legacy_ver , copy = True )
453
+ # `copy` ignored for legacy path
454
+ y = _dlp .from_dlpack_capsule (cap )
455
+ assert y ._pointer == x ._pointer
456
+ del x , y
457
+ del cap
458
+
459
+ x1 = dpt .arange (100 , dtype = "i4" , sycl_queue = q1 )
460
+ max_supported_ver = _dlp .get_build_dlpack_version ()
461
+ cap = x1 .__dlpack__ (stream = q2 , max_version = max_supported_ver , copy = False )
462
+ y = _dlp .from_dlpack_versioned_capsule (cap )
463
+ assert y ._pointer == x1 ._pointer
464
+ del x1 , y
465
+ del cap
466
+
467
+ x2 = dpt .arange (100 , dtype = "i4" , sycl_queue = q1 )
468
+ cap = x2 .__dlpack__ (stream = q2 , max_version = max_supported_ver , copy = True )
469
+ y = _dlp .from_dlpack_versioned_capsule (cap )
470
+ assert y ._pointer != x2 ._pointer
471
+ del x2 , y
472
+ del cap
0 commit comments