예제 #1
0
 def test_io_out_adder_inactive(self):
     """
     _io_out_adder() doesn't do anything when io_out not specified
     """
     parser = MagicMock()
     parser.add_argument = MagicMock()
     args = []
     arg_lib._io_out_adder(parser, {}, *args)
     self.assertFalse(parser.add_argument.called)
예제 #2
0
    def test_io_out_adder_active(self):
        """
        _io_out_adder() adds proper arguments
        """
        # set up mock parser
        parser = MagicMock()
        group = MagicMock()
        group.add_argument = MagicMock()
        parser.add_argument_group = MagicMock(return_value=group)

        # create  expected call signature
        io_opt_list = [
            'csv', 'table', 'html', 'header', 'noheader', 'index', 'noindex'
        ]
        # define the current defaults
        default_for_output = ['csv', 'header', 'noindex']
        msg = 'Must be one of {}'.format(repr(io_opt_list))
        call_obj1 = call('-o',
                         '--output_options',
                         nargs='+',
                         type=str,
                         dest='output_options',
                         metavar='option',
                         default=default_for_output,
                         help=msg)

        msg = ('Replace NaNs with this string. '
               'A string containing \'nan\' will set na_rep to numpy NaN. '
               'Current default is {}').format(
                   repr(str(config_lib.get_config()['io_output_na_rep'])))
        call_obj2 = call('--output_na_rep',
                         nargs=1,
                         type=str,
                         dest='io_output_na_rep',
                         help=msg)

        # run the code under test
        args = ['io_out']
        config_dict = {
            'io_output_type': 'csv',
            'io_output_header': 'header',
            'io_output_index': 'noindex',
            'io_output_na_rep': 'nan'
        }
        arg_lib._io_out_adder(parser, config_dict, *args)

        # make sure proper calls were made
        self.assertEqual(group.add_argument.call_args_list[0], call_obj1)
        self.assertEqual(group.add_argument.call_args_list[1], call_obj2)
예제 #3
0
    def test_io_out_adder_active(self):
        """
        _io_out_adder() adds proper arguments
        """
        # set up mock parser
        parser = MagicMock()
        group = MagicMock()
        group.add_argument = MagicMock()
        parser.add_argument_group = MagicMock(return_value=group)

        # create  expected call signature
        io_opt_list = ['csv', 'table', 'json', 'html',
                       'header', 'noheader', 'index', 'noindex']
        # define the current defaults
        default_for_output = ['csv', 'header', 'noindex']
        msg = 'Must be one of {}'.format(repr(io_opt_list))
        call_obj1 = call(
            '-o', '--output_options', nargs='+',
            type=str, dest='output_options', metavar='option',
            default=default_for_output, help=msg)

        msg = (
            'Replace NaNs with this string. '
            'A string containing \'nan\' will set na_rep to numpy NaN. '
            'Current default is {}'
        ).format(repr(str(config_lib.get_config()['io_output_na_rep'])))
        call_obj2 = call(
            '--output_na_rep', nargs=1, type=str, dest='io_output_na_rep',
            help=msg)

        # run the code under test
        args = ['io_out']
        config_dict = {
            'io_output_type': 'csv',
            'io_output_header': 'header',
            'io_output_index': 'noindex',
            'io_output_na_rep': 'nan'
        }
        arg_lib._io_out_adder(parser, config_dict, *args)

        # make sure proper calls were made
        self.assertEqual(group.add_argument.call_args_list[0], call_obj1)
        self.assertEqual(group.add_argument.call_args_list[1], call_obj2)