@@ -994,6 +994,42 @@ def test_sequence_tuple(self):
994
994
self .assertRaises (TypeError , xtuple , 42 )
995
995
self .assertRaises (SystemError , xtuple , NULL )
996
996
997
+ def test_sequence_fast (self ):
998
+ # Test PySequence_Fast()
999
+ sequence_fast = _testlimitedcapi .sequence_fast
1000
+ sequence_fast_get_size = _testcapi .sequence_fast_get_size
1001
+ sequence_fast_get_item = _testcapi .sequence_fast_get_item
1002
+
1003
+ tpl = ('a' , 'b' , 'c' )
1004
+ fast = sequence_fast (tpl , "err_msg" )
1005
+ self .assertIs (fast , tpl )
1006
+ self .assertEqual (sequence_fast_get_size (fast ), 3 )
1007
+ self .assertEqual (sequence_fast_get_item (fast , 2 ), 'c' )
1008
+
1009
+ lst = ['a' , 'b' , 'c' ]
1010
+ fast = sequence_fast (lst , "err_msg" )
1011
+ self .assertIs (fast , lst )
1012
+ self .assertEqual (sequence_fast_get_size (fast ), 3 )
1013
+ self .assertEqual (sequence_fast_get_item (fast , 2 ), 'c' )
1014
+
1015
+ it = iter (['A' , 'B' ])
1016
+ fast = sequence_fast (it , "err_msg" )
1017
+ self .assertEqual (fast , ['A' , 'B' ])
1018
+ self .assertEqual (sequence_fast_get_size (fast ), 2 )
1019
+ self .assertEqual (sequence_fast_get_item (fast , 1 ), 'B' )
1020
+
1021
+ text = 'fast'
1022
+ fast = sequence_fast (text , "err_msg" )
1023
+ self .assertEqual (fast , ['f' , 'a' , 's' , 't' ])
1024
+ self .assertEqual (sequence_fast_get_size (fast ), 4 )
1025
+ self .assertEqual (sequence_fast_get_item (fast , 0 ), 'f' )
1026
+
1027
+ self .assertRaises (TypeError , sequence_fast , 42 , "err_msg" )
1028
+ self .assertRaises (SystemError , sequence_fast , NULL , "err_msg" )
1029
+
1030
+ # CRASHES sequence_fast_get_size(NULL)
1031
+ # CRASHES sequence_fast_get_item(NULL, 0)
1032
+
997
1033
def test_object_generichash (self ):
998
1034
# Test PyObject_GenericHash()
999
1035
generichash = _testcapi .object_generichash
0 commit comments