diff --git a/sdc/tests/tests_perf/generator.py b/sdc/tests/tests_perf/generator.py index aae1b8f00..418df1f5a 100644 --- a/sdc/tests/tests_perf/generator.py +++ b/sdc/tests/tests_perf/generator.py @@ -26,6 +26,7 @@ class TestCase(NamedTuple): data_num: total number of generated data, e.g. 2 (data, other) input_data: input data for generating test data skip: flag for skipping a test + check_skipna: flag for checking a function with both parameters skipna=True and skipna=False """ name: str size: list @@ -35,6 +36,7 @@ class TestCase(NamedTuple): data_num: int = 1 input_data: list = None skip: bool = False + check_skipna: bool = False def to_varname_without_excess_underscores(string): @@ -42,8 +44,24 @@ def to_varname_without_excess_underscores(string): return '_'.join(i for i in to_varname(string).split('_') if i) +def skipna_cases(cases): + """Generator. Replaces a test case containing check_skipna=True + with two cases containing parameters skipna=True and skipna=False + """ + for case in cases: + if case.check_skipna: + for skipna in [True, False]: + params = case.params + if params: + params += ', ' + params += f'skipna={skipna}' + yield case._replace(params=params) + else: + yield case + + def generate_test_cases(cases, class_add, typ, prefix=''): - for test_case in cases: + for test_case in skipna_cases(cases): test_name_parts = ['test', typ, prefix, test_case.name, gen_params_wo_data(test_case)] test_name = to_varname_without_excess_underscores('_'.join(test_name_parts)) diff --git a/sdc/tests/tests_perf/test_perf_df.py b/sdc/tests/tests_perf/test_perf_df.py index f21f61d07..37bbc939b 100644 --- a/sdc/tests/tests_perf/test_perf_df.py +++ b/sdc/tests/tests_perf/test_perf_df.py @@ -64,15 +64,15 @@ def _test_case(self, pyfunc, name, total_data_length, input_data, data_num=1): TC(name='append', size=[10 ** 7], params='other', data_num=2), TC(name='count', size=[10 ** 7]), TC(name='drop', size=[10 ** 8], params='columns="f0"'), - TC(name='max', size=[10 ** 7]), - TC(name='mean', size=[10 ** 7]), - TC(name='median', size=[10 ** 7]), - TC(name='min', size=[10 ** 7]), + TC(name='max', size=[10 ** 7], check_skipna=True), + TC(name='mean', size=[10 ** 7], check_skipna=True), + TC(name='median', size=[10 ** 7], check_skipna=True), + TC(name='min', size=[10 ** 7], check_skipna=True), TC(name='pct_change', size=[10 ** 7]), - TC(name='prod', size=[10 ** 7]), - TC(name='std', size=[10 ** 7]), - TC(name='sum', size=[10 ** 7]), - TC(name='var', size=[10 ** 7]), + TC(name='prod', size=[10 ** 7], check_skipna=True), + TC(name='std', size=[10 ** 7], check_skipna=True), + TC(name='sum', size=[10 ** 7], check_skipna=True), + TC(name='var', size=[10 ** 7], check_skipna=True), ] generate_test_cases(cases, TestDataFrameMethods, 'df') diff --git a/sdc/tests/tests_perf/test_perf_series.py b/sdc/tests/tests_perf/test_perf_series.py index 20f1c3e19..bbc2c90ee 100644 --- a/sdc/tests/tests_perf/test_perf_series.py +++ b/sdc/tests/tests_perf/test_perf_series.py @@ -77,7 +77,7 @@ def _test_case(self, pyfunc, name, total_data_length, data_num=1, input_data=tes TC(name='corr', size=[10 ** 7],params='other', data_num=2), TC(name='count', size=[10 ** 8]), TC(name='cov', size=[10 ** 8], params='other', data_num=2), - TC(name='cumsum', size=[10 ** 8]), + TC(name='cumsum', size=[10 ** 8], check_skipna=True), TC(name='describe', size=[10 ** 7]), TC(name='div', size=[10 ** 7], params='other', data_num=2), TC(name='dropna', size=[10 ** 7]), @@ -89,8 +89,8 @@ def _test_case(self, pyfunc, name, total_data_length, data_num=1, input_data=tes TC(name='gt', size=[10 ** 7],params='other', data_num=2), TC(name='head', size=[10 ** 8]), TC(name='iat', size=[10 ** 7], call_expr='data.iat[100000]', usecase_params='data'), - TC(name='idxmax', size=[10 ** 8]), - TC(name='idxmin', size=[10 ** 8]), + TC(name='idxmax', size=[10 ** 8], check_skipna=True), + TC(name='idxmin', size=[10 ** 8], check_skipna=True), TC(name='iloc', size=[10 ** 7], call_expr='data.iloc[100000]', usecase_params='data'), TC(name='index', size=[10 ** 7], call_expr='data.index', usecase_params='data'), TC(name='isin', size=[10 ** 7], call_expr='data.isin([0])', usecase_params='data'), @@ -101,13 +101,10 @@ def _test_case(self, pyfunc, name, total_data_length, data_num=1, input_data=tes TC(name='lt', size=[10 ** 7], params='other', data_num=2), TC(name='map', size=[10 ** 7], params='lambda x: x * 2'), TC(name='map', size=[10 ** 7], params='{2.: 42., 4.: 3.14}'), - TC(name='max', size=[10 ** 8], params='skipna=True'), - TC(name='max', size=[10 ** 8], params='skipna=False'), - TC(name='mean', size=[10 ** 8], params='skipna=True'), - TC(name='mean', size=[10 ** 8], params='skipna=False'), - TC(name='median', size=[10 ** 8]), - TC(name='min', size=[10 ** 8], params='skipna=True'), - TC(name='min', size=[10 ** 8], params='skipna=False'), + TC(name='max', size=[10 ** 8], check_skipna=True), + TC(name='mean', size=[10 ** 8], check_skipna=True), + TC(name='median', size=[10 ** 8], check_skipna=True), + TC(name='min', size=[10 ** 8], check_skipna=True), TC(name='mod', size=[10 ** 7], params='other', data_num=2), TC(name='mul', size=[10 ** 7], params='other', data_num=2), TC(name='ndim', size=[10 ** 7], call_expr='data.ndim', usecase_params='data'), @@ -116,8 +113,7 @@ def _test_case(self, pyfunc, name, total_data_length, data_num=1, input_data=tes TC(name='notna', size=[10 ** 7]), TC(name='nsmallest', size=[10 ** 6]), TC(name='nunique', size=[10 ** 7]), - TC(name='prod', size=[10 ** 8], params='skipna=True'), - TC(name='prod', size=[10 ** 8], params='skipna=False'), + TC(name='prod', size=[10 ** 8], check_skipna=True), TC(name='pct_change', size=[10 ** 7], params='periods=1, limit=None, freq=None'), TC(name='pow', size=[10 ** 7], params='other', data_num=2), TC(name='quantile', size=[10 ** 8]), @@ -127,16 +123,14 @@ def _test_case(self, pyfunc, name, total_data_length, data_num=1, input_data=tes TC(name='shift', size=[10 ** 8]), TC(name='size', size=[10 ** 7], call_expr='data.size', usecase_params='data'), TC(name='sort_values', size=[10 ** 5]), - TC(name='std', size=[10 ** 7], params='skipna=True'), - TC(name='std', size=[10 ** 7], params='skipna=False'), + TC(name='std', size=[10 ** 7], check_skipna=True), TC(name='sub', size=[10 ** 7], params='other', data_num=2), - TC(name='sum', size=[10 ** 8]), + TC(name='sum', size=[10 ** 8], check_skipna=True), TC(name='take', size=[10 ** 7], call_expr='data.take([0])', usecase_params='data'), TC(name='truediv', size=[10 ** 7], params='other', data_num=2), TC(name='values', size=[10 ** 7], call_expr='data.values', usecase_params='data'), TC(name='value_counts', size=[10 ** 6]), - TC(name='var', size=[10 ** 8], params='skipna=True'), - TC(name='var', size=[10 ** 8], params='skipna=False'), + TC(name='var', size=[10 ** 8], check_skipna=True), TC(name='unique', size=[10 ** 5]), ]