@@ -994,6 +994,42 @@ def test_sequence_tuple(self):
994994 self .assertRaises (TypeError , xtuple , 42 )
995995 self .assertRaises (SystemError , xtuple , NULL )
996996
997+ def test_sequence_fast (self ):
998+ # Tets PySequence_Fast()
999+ sequence_fast = _testlimitedcapi .sequence_fast
1000+ sequence_fast_get_size = _testlimitedcapi .sequence_fast_get_size
1001+ sequence_fast_get_item = _testlimitedcapi .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+
9971033 def test_object_generichash (self ):
9981034 # Test PyObject_GenericHash()
9991035 generichash = _testcapi .object_generichash
0 commit comments