@@ -28,73 +28,83 @@ class ClassifierTests(unittest.TestCase):
2828 def test_classifiers (self ):
2929 flat_lines = snippets .FLAT_ALTERNATING_LINES
3030 short_line = min (snippets .SHARED_LEAF_SHORT_LINES )
31+ flat_a = [
32+ frame ("leaf_a" , lineno = flat_lines ["leaf_a" ]),
33+ frame ("hot_a" , lineno = flat_lines ["hot_a" ]),
34+ ]
35+ flat_crossed = [
36+ frame ("hot_a" , lineno = flat_lines ["hot_a" ]),
37+ frame ("hot_b" , lineno = flat_lines ["hot_b" ]),
38+ ]
39+ shared_a = [
40+ frame ("shared_leaf" , lineno = short_line ),
41+ frame ("a_wrapper" ),
42+ ]
43+ shared_crossed = [
44+ frame ("shared_leaf" , lineno = short_line ),
45+ frame ("b_wrapper" ),
46+ ]
3147 cases = [
48+ (snippets .classify_flat , flat_a , False ),
49+ (snippets .classify_flat , flat_crossed , True ),
3250 (
33- snippets .classify_flat ,
34- [
35- frame ("leaf_a" , lineno = flat_lines ["leaf_a" ]),
36- frame ("hot_a" , lineno = flat_lines ["hot_a" ]),
37- ],
38- [
39- frame ("hot_a" , lineno = flat_lines ["hot_a" ]),
40- frame ("hot_b" , lineno = flat_lines ["hot_b" ]),
41- ],
51+ snippets .classify_nested ,
52+ frames ("burn_a" , "a_leaf" , "a_parent" ),
53+ False ,
4254 ),
4355 (
4456 snippets .classify_nested ,
45- frames ("burn_a" , "a_leaf" , "a_parent" ),
4657 frames ("a_parent" , "a_leaf" , "burn_a" ),
58+ True ,
4759 ),
60+ (snippets .classify_shared , shared_a , False ),
61+ (snippets .classify_shared , shared_crossed , True ),
62+ (snippets .classify_gen , frames ("agen" , "drv_a" ), False ),
63+ (snippets .classify_gen , frames ("agen" , "drv_b" ), True ),
64+ (snippets .classify_gen , frames ("bgen" , "drv_a" ), True ),
65+ (snippets .classify_gen , frames ("agen" ), False ),
4866 (
49- snippets .classify_shared ,
50- [
51- frame ("shared_leaf" , lineno = short_line ),
52- frame ("a_wrapper" ),
53- ],
54- [
55- frame ("shared_leaf" , lineno = short_line ),
56- frame ("b_wrapper" ),
57- ],
67+ snippets .classify_gen ,
68+ frames ("agen" , "agen" , "drv_a" ),
69+ False ,
5870 ),
71+
72+ (snippets .classify_recursion , frames ("a" , "a" ), False ),
73+ (snippets .classify_recursion , frames ("a" , "b" ), True ),
5974 (
60- snippets .classify_recursion ,
61- frames ( "a " , "a" ),
62- frames ( "a" , "b" ) ,
75+ snippets .classify_async_running_task ,
76+ ( None , "hot " , None , frames ( "leaf_hot" ) ),
77+ False ,
6378 ),
6479 (
6580 snippets .classify_async_running_task ,
66- (None , "hot" , None , frames ("leaf_hot" )),
6781 (None , "hot" , None , frames ("leaf_rare" )),
82+ True ,
6883 ),
6984 (
7085 snippets .classify_code_object_reuse ,
7186 [frame ("func_a" , filename = "A_file.py" )],
87+ False ,
88+ ),
89+ (
90+ snippets .classify_code_object_reuse ,
7291 [frame ("func_a" , filename = "B_file.py" )],
92+ True ,
7393 ),
7494 (
7595 snippets .classify_oversized_chunk ,
7696 [frame ("big_a" , filename = "a.py" )],
97+ False ,
98+ ),
99+ (
100+ snippets .classify_oversized_chunk ,
77101 [frame ("big_b" , filename = "a.py" )],
102+ True ,
78103 ),
79104 ]
80- for classifier , unrecognized , recognized in cases :
81- with self .subTest (classifier = classifier .__name__ ):
82- self .assertFalse (classifier (unrecognized ))
83- self .assertTrue (classifier (recognized ))
84-
85- def test_classify_gen (self ):
86- cases = [
87- (("agen" , "drv_a" ), False ),
88- (("agen" , "drv_b" ), True ),
89- (("bgen" , "drv_a" ), True ),
90- (("agen" ,), False ),
91- (("agen" , "agen" , "drv_a" ), False ),
92- ]
93- for names , impossible in cases :
94- with self .subTest (names = names ):
95- self .assertEqual (
96- snippets .classify_gen (frames (* names )), impossible
97- )
105+ for classifier , sample , expected in cases :
106+ with self .subTest (classifier = classifier .__name__ , sample = sample ):
107+ self .assertEqual (classifier (sample ), expected )
98108
99109
100110if __name__ == "__main__" :
0 commit comments