90 |
90 |
91 @problem_type('primitive-ccw', |
91 @problem_type('primitive-ccw', |
92 severity = 'hold', |
92 severity = 'hold', |
93 message = 'primitives must have CCW winding', |
93 message = 'primitives must have CCW winding', |
94 ) |
94 ) |
95 def primitive_ccw_test(model): |
95 @problem_type('no-bfc-line', |
96 if model.header.valid \ |
96 severity = 'hold', |
|
97 message = 'BFC declaration is missing', |
|
98 ) |
|
99 def header_bfc_test(model): |
|
100 def find_the_bfc_object(model): |
|
101 return model.body[model.header.first_occurrence['bfc']], |
|
102 if model.header.valid and not model.header.bfc: |
|
103 yield report_problem( |
|
104 'no-bfc-line', |
|
105 bad_object = model.body[0], |
|
106 ) |
|
107 elif model.header.valid \ |
97 and model.header.filetype.endswith('Primitive') \ |
108 and model.header.filetype.endswith('Primitive') \ |
98 and model.header.bfc != 'CERTIFY CCW': |
109 and model.header.bfc != 'CERTIFY CCW': |
99 yield report_problem( |
110 yield report_problem( |
100 'primitive-bfc-ccw', |
111 'primitive-bfc-ccw', |
101 bad_object = model.body[model.header.first_occurrence['bfc']], |
112 bad_object = find_the_bfc_object(model), |
102 ) |
113 ) |
103 |
114 |
104 manifest = { |
115 manifest = { |
105 'tests': [ |
116 'tests': [ |
106 colours_test, |
117 colours_test, |
107 syntax_errors, |
118 syntax_errors, |
108 bad_header, |
119 bad_header, |
109 nocertify_test, |
120 nocertify_test, |
110 physical_colours_test, |
121 physical_colours_test, |
111 unofficiality_test, |
122 unofficiality_test, |
112 primitive_ccw_test, |
123 header_bfc_test, |
113 ], |
124 ], |
114 } |
125 } |