def make_configs(self):
        config = Config()

        config.add_item(name='iter', val=30)
        config.add_item(name='hidden_sizes', val=[64, 32, 16])
        config.add_random_eps(name='lr', base=10, low=-6, high=0, num_sample=10)
        config.add_random_continuous(name='values', low=-5, high=5, num_sample=5)
        config.add_random_discrete(name='select', list_val=[43223, 5434, 21314], num_sample=10, replace=True)

        configs = config.make_configs()

        return configs
def test_config():
    config = Config()

    config.add_item(name='algo', val='RL')
    config.add_item(name='iter', val=30)
    config.add_item(name='hidden_sizes', val=[64, 32, 16])

    config.add_grid(name='cuda_num', val=[1, 2, 3])

    config.add_random_eps(name='lr', base=10, low=-6, high=0, num_sample=10)
    config.add_random_continuous(name='values', low=-5, high=5, num_sample=5)
    config.add_random_discrete(name='select',
                               list_val=[43223, 5434, 21314],
                               num_sample=10,
                               replace=True)

    configs = config.make_configs()

    assert len(configs) == 1500

    assert np.alltrue([config['ID'] == i for i, config in enumerate(configs)])

    assert np.alltrue([config['algo'] == 'RL' for config in configs])

    assert np.alltrue(['iter' in config for config in configs])

    assert np.alltrue(
        [config['hidden_sizes'] == [64, 32, 16] for config in configs])

    assert np.alltrue([config['cuda_num'] in [1, 2, 3] for config in configs])

    assert np.alltrue(
        [config['lr'] > 0 and config['lr'] < 1 for config in configs])

    assert np.alltrue([
        config['values'] >= -5 and config['values'] < 5 for config in configs
    ])

    assert np.alltrue(
        [config['select'] in [43223, 5434, 21314] for config in configs])

    with pytest.raises(AssertionError):
        config.add_grid(name='wrong', val='yes')