def test_as_float_with_existent_key(self):
        config = MemoryConfig()
        config.set('key', '2')

        container = PropertyContainer('key', config, version=Version())
        self.assertIsInstance(container.as_float(1.0).get(), float)
        self.assertEqual(2, container.as_float(1.0).get())
Beispiel #2
0
    def test_get_value_with_overridden_key(self):
        config = ChainConfig(
            MemoryConfig(data={'key': 1}),
            MemoryConfig(data={'key': 2})
        )

        self.assertEqual(2, config.get_value('key', int))
    def test_as_type_for_same_existent_key(self):
        config = MemoryConfig()
        config.set('key', '2')

        container = PropertyContainer('key', config, version=Version())

        self.assertEqual(container.as_type(int, 1), container.as_type(int, 1))
    def test_as_list_with_existent_key(self):
        config = MemoryConfig()
        config.set('key', ['value'])

        container = PropertyContainer('key', config, version=Version())
        self.assertIsInstance(container.as_list([]).get(), list)
        self.assertEqual(['value'], container.as_list([]).get())
    def test_as_dict_with_existent_key(self):
        config = MemoryConfig()
        config.set('key', {'key': 'value'})

        container = PropertyContainer('key', config, version=Version())
        self.assertIsInstance(container.as_dict({}).get(), MutableMapping)
        self.assertEqual({'key': 'value'}, container.as_dict({}).get())
    def test_as_bool_with_existent_key(self):
        config = MemoryConfig()
        config.set('key', '0')

        container = PropertyContainer('key', config, version=Version())

        self.assertIsInstance(container.as_bool(True).get(), bool)
        self.assertEqual(False, container.as_bool(True).get())
    def test_as_str_with_existent_key(self):
        config = MemoryConfig()
        config.set('key', 'value')

        container = PropertyContainer('key', config, version=Version())
        self.assertIsInstance(
            container.as_str('default value').get(), string_types)
        self.assertEqual('value', container.as_str('default value').get())
    def test_resolve_with_variable_in_a_composite_config(self):
        config = MemoryConfig()

        root = ChainConfig(MemoryConfig(data={'key': 'value'}),
                           ChainConfig(config))

        self.assertEqual('value',
                         self._interpolator.resolve('${key}', config.lookup))
    def test_invalidate_properties(self):
        config = MemoryConfig()
        properties = PropertyManager(config)

        self.assertEqual(0, properties._version.number)

        config.set('key', 'value')

        self.assertEqual(1, properties._version.number)
Beispiel #10
0
    def test_str(self):
        config = MemoryConfig()
        config.set('key', '2')

        prop = Property(name='key',
                        default=1,
                        type=int,
                        config=config,
                        version=Version())
        self.assertEqual('2', str(prop))
Beispiel #11
0
    def test_updated_trigger(self):
        child = MemoryConfig()

        config = MergeConfig(child)

        passed = []
        config.updated.add(lambda: passed.append(True))

        child.set('key', 'value')

        self.assertEqual(1, len(passed))
Beispiel #12
0
    def test_trigger_updated_event_on_set_key(self):
        ev = Event()

        config = MemoryConfig()

        @config.on_updated
        def on_updated():
            ev.set()

        config.set('key1', 'value1')

        self.assertTrue(ev.is_set)
Beispiel #13
0
    def test_init_data_with_dict_value(self):
        data = {'key1': 'value'}
        config = MemoryConfig(data)

        self.assertEqual('value', config['key1'])

        config.set('key1', 'value1')

        self.assertEqual('value1', config['key1'])

        # the initial dict should be cloned by MemoryConfig
        self.assertEqual(data['key1'], 'value')
Beispiel #14
0
    def test_reload_with_updated_error(self):
        config = MemoryConfig().reload_every(0.005)

        ev = Event()

        @config.on_updated
        def updated():
            ev.set()
            raise MemoryError()

        config.load()

        time.sleep(0.02)

        self.assertTrue(ev.is_set())
Beispiel #15
0
 def test_init_version_with_int_value(self):
     with self.assertRaises(TypeError):
         Property(name='key',
                  default=1,
                  type=int,
                  config=MemoryConfig(),
                  version=123)
Beispiel #16
0
 def test_init_name_with_none_value(self):
     with self.assertRaises(TypeError):
         Property(name=None,
                  default=1,
                  type=int,
                  config=MemoryConfig(),
                  version=Version())
Beispiel #17
0
 def test_init_name_with_str_value(self):
     prop = Property(name='name',
                     default=1,
                     type=int,
                     config=MemoryConfig(),
                     version=Version())
     self.assertEqual('name', prop.name)
Beispiel #18
0
 def test_init_cast_with_none_value(self):
     with self.assertRaises(ValueError):
         Property(name='key',
                  default=1,
                  type=None,
                  config=MemoryConfig(),
                  version=Version())
Beispiel #19
0
 def test_get_updated_with_default_value(self):
     prop = Property(name='key',
                     default=1,
                     type=int,
                     config=MemoryConfig(),
                     version=Version())
     self.assertEqual(EventHandler, type(prop.updated))
Beispiel #20
0
 def test_init_cast_with_int_value(self):
     prop = Property(name='key',
                     default=1,
                     type=int,
                     config=MemoryConfig(),
                     version=Version())
     self.assertEqual(int, prop.type)
 def test_resolve_with_variable(self):
     self.assertEqual(
         'value',
         self._interpolator.resolve(
             '${key}',
             MemoryConfig(data={
                 'key': 'value'
             }).lookup))
Beispiel #22
0
    def test_set_with_ignore_case_dict_as_value(self):
        data = IgnoreCaseDict(item='value')

        config = MemoryConfig()
        config.set('key', data)
        self.assertIsInstance(config.get('key'), IgnoreCaseDict)
        self.assertEqual(id(config.get('key')), id(data))
Beispiel #23
0
    def test_on_updated_with_func_value(self):
        prop = Property(name='key',
                        default=1,
                        type=int,
                        config=MemoryConfig(),
                        version=Version())

        def dummy():
            pass

        prop.on_updated(dummy)

        self.assertEqual(1, len(prop.updated))
Beispiel #24
0
    def _create_base_config(self, load_data=False):
        if load_data:
            config = ChainConfig(
                MemoryConfig(data={
                    'key_str': 'value',
                    'key_int': 1,
                    'key_int_as_str': '1',
                    'key_dict': {'key_str': 'value'},
                    'key_dict_as_str': 'item_key=value',
                    'key_list_as_str': 'item1,item2'}),

                MemoryConfig(data={
                    'key_interpolated': '${key_str}',
                    'key_ignore_case': 'value',
                    'key_IGNORE_case': 'value1',
                    'key_delimited': {'key_str': 'value'}})
            )
            config.load()
        else:
            config = ChainConfig()

        return config
Beispiel #25
0
    def test_add_updated_with_func_value(self):
        config = MemoryConfig()
        version = Version()
        ev = Event()

        prop = Property(name='key',
                        default=1,
                        type=int,
                        config=config,
                        version=version)

        def dummy(v):
            ev.set()

        prop.updated.add(dummy)

        version.number += 1

        self.assertTrue(ev.is_set())
Beispiel #26
0
    def test_get_for_invalidated_key(self):
        config = MemoryConfig()
        config.set('key', '2')

        version = Version()

        prop = Property('key', 1, int, config, version)

        self.assertEqual(2, prop.get())

        config.set('key', '3')

        version.number += 1

        self.assertEqual(3, prop.get())
Beispiel #27
0
    def _create_base_config(self, load_data=False):
        config = MemoryConfig()

        if load_data:
            config.set('prefix', {
                'key_str': 'value',
                'key_int': 1,
                'key_int_as_str': '1',
                'key_dict': {'key_str': 'value'},
                'key_dict_as_str': 'item_key=value',
                'key_list_as_str': 'item1,item2',
                'key_interpolated': '${key_str}',
                'key_ignore_case': 'value',
                'key_IGNORE_case': 'value1',
                'key_delimited': {'key_str': 'value'}
            })
            config.set('prefix.nested_delimited', 'value')

        prefixed = config.prefixed('prefix')

        if load_data:
            prefixed.load()

        return prefixed
 def test_lookup_with_nonexistent_key(self):
     config = MemoryConfig()
     lookup = ConfigLookup(config)
     self.assertEqual(None, lookup.lookup('key'))
 def test_lookup_with_existent_key(self):
     config = MemoryConfig(data={'key': 1})
     lookup = ConfigLookup(config)
     self.assertEqual('1', lookup.lookup('key'))
 def test_init_config_with_config_value(self):
     config = MemoryConfig()
     lookup = ConfigLookup(config)
     self.assertEqual(config, lookup.config)