def test_ds2_variables_dict_input(): target = [ DS2Variable(name='x1', type='double', out=False), DS2Variable(name='x2', type='double', out=False) ] # Standard input result = ds2_variables( OrderedDict([('x1', ('double', False)), ('x2', ('double', False))])) assert result == target # No return value flag result = ds2_variables(OrderedDict([('x1', 'double'), ('x2', 'double')])) assert result == target assert [ DS2Variable('a', 'int', False), DS2Variable('b', 'char', False), DS2Variable('c', 'double', False) ] == ds2_variables(OrderedDict([('a', int), ('b', str), ('c', float)])) assert [DS2Variable('x', 'str', True)] == ds2_variables(OrderedDict(x=str), output_vars=True) assert [ DS2Variable('a', 'int', False), DS2Variable('b', 'char', False), DS2Variable('x', 'double', True) ] == ds2_variables( OrderedDict([('a', int), ('b', str), ('x', (float, True))]))
def test_ds2_variables_numpy_input(): np = pytest.importorskip('numpy') assert [DS2Variable('var1', 'int', False), DS2Variable('var2', 'int', False), DS2Variable('var3', 'int', False)] == ds2_variables(np.array([1, 2, 3])) assert [DS2Variable('var1', 'double', False), DS2Variable('var2', 'double', False)] == ds2_variables(np.array([1., 2.]))
def test_ds2_variables_func_input(): target = [DS2Variable(name='x1', type='double', out=False), DS2Variable(name='x2', type='double', out=False)] # Only function as input with mock.patch('sasctl.utils.pymas.python.parse_type_hints') as mocked: mocked.return_value = OrderedDict([('x1', ('double', False)), ('x2', ('double', False))]) result = ds2_variables(lambda x: x) # Input function doesn't matter since response is mocked assert 1 == mocked.call_count assert result == target
def test_ds2_variables_pandas_input(): pd = pytest.importorskip('pandas') target = [DS2Variable('a', 'int', False), DS2Variable('b', 'char', False), DS2Variable('c', 'double', False)] df = pd.DataFrame(dict(a=[1,2,3], b=['1', '2', '3'], c=[1., 2., 3.])) df = df[['a', 'b', 'c']] # Ensure columns are ordered correctly assert target == ds2_variables(df)