55"""
66
77from simd import SIMD
8- from test_assert import AssertReturn
8+ from test_assert import AssertReturn , AssertInvalid
99
1010
1111class SimdBitWise (SIMD ):
1212 """
1313 Generate common tests
1414 """
1515
16+ UNARY_OPS = ('not' ,)
17+ BINARY_OPS = ('and' , 'or' , 'xor' , 'andnot' ,)
18+ TERNARY_OPS = ('bitselect' ,)
19+
1620 # Test case template
1721 CASE_TXT = """;; Test all the bitwise operators on major boundary values and all special values.
1822
@@ -182,6 +186,7 @@ def get_combination_case(self):
182186 lst_nested_case_func = []
183187 lst_in_block_case_assert = []
184188 lst_nested_case_assert = []
189+ lst_argument_empty_case = []
185190
186191 for ipr in lst_ipr :
187192
@@ -242,9 +247,59 @@ def get_combination_case(self):
242247 '{assert_in_block_cases}' \
243248 '{assert_of_nested_cases}' \
244249 '\n (assert_return (invoke "as-param"))\n ' .format (in_block_cases = '' .join (lst_in_block_case_func ),
245- nested_cases = '' .join (lst_nested_case_func ),
246- assert_in_block_cases = '' .join (lst_in_block_case_assert ),
247- assert_of_nested_cases = '' .join (lst_nested_case_assert ))
250+ nested_cases = '' .join (lst_nested_case_func ),
251+ assert_in_block_cases = '' .join (lst_in_block_case_assert ),
252+ assert_of_nested_cases = '' .join (lst_nested_case_assert ))
253+
254+ def get_argument_empty_case (self ):
255+ """
256+ Generate argument empty cases
257+ """
258+
259+ cases = []
260+
261+ param_1 = SIMD .v128_const ('0' , 'i32x4' )
262+
263+ cases .append ('\n \n ;; Test operation with empty argument\n ' )
264+
265+ case_data = {
266+ 'op' : '' ,
267+ 'extended_name' : 'arg-empty' ,
268+ 'param_type' : '' ,
269+ 'result_type' : '(result v128)' ,
270+ 'params' : '' ,
271+ }
272+
273+ for op in self .UNARY_OPS :
274+ case_data ['op' ] = 'v128.' + op
275+ cases .append (AssertInvalid .get_arg_empty_test (** case_data ))
276+
277+ for op in self .BINARY_OPS :
278+ case_data ['op' ] = 'v128.' + op
279+ case_data ['extended_name' ] = '1st-arg-empty'
280+ case_data ['params' ] = param_1
281+ cases .append (AssertInvalid .get_arg_empty_test (** case_data ))
282+
283+ case_data ['extended_name' ] = 'arg-empty'
284+ case_data ['params' ] = ''
285+ cases .append (AssertInvalid .get_arg_empty_test (** case_data ))
286+
287+ for op in self .TERNARY_OPS :
288+ case_data ['op' ] = 'v128.' + op
289+ case_data ['extended_name' ] = '1st-arg-empty'
290+ case_data ['params' ] = param_1 + ' ' + param_1
291+ cases .append (AssertInvalid .get_arg_empty_test (** case_data ))
292+
293+ case_data ['extended_name' ] = 'two-args-empty'
294+ case_data ['params' ] = param_1
295+ cases .append (AssertInvalid .get_arg_empty_test (** case_data ))
296+
297+ case_data ['extended_name' ] = 'arg-empty'
298+ case_data ['params' ] = ''
299+ cases .append (AssertInvalid .get_arg_empty_test (** case_data ))
300+
301+ return '\n ' .join (cases ) + '\n '
302+
248303
249304 def get_all_cases (self ):
250305 """
@@ -254,7 +309,7 @@ def get_all_cases(self):
254309 case_data = {'normal_case' : self .get_normal_case ()}
255310
256311 # Add tests for unkonow operators for i32x4
257- return self .CASE_TXT .format (** case_data ) + self .get_invalid_case () + self .get_combination_case ()
312+ return self .CASE_TXT .format (** case_data ) + self .get_invalid_case () + self .get_combination_case () + self . get_argument_empty_case ()
258313
259314 def get_case_data (self ):
260315 """
@@ -444,4 +499,4 @@ def gen_test_cases():
444499
445500
446501if __name__ == '__main__' :
447- gen_test_cases ()
502+ gen_test_cases ()
0 commit comments