def test_options_recursive_inherit():
    options = OptionsDict({
        'key': {
            'subkey': {
                'subsubkey': 2
            },
        },
    })

    options.inherit(
        OptionsDict({
            'key': {
                'subkey': {
                    'subsubkey': 1
                },
                'kept': 1,
            },
        }))

    assert options == {
        'key': {
            'subkey': {
                'subsubkey': 2
            },
            'kept': 1,
        },
    }
def test_adding_dict():
    value = 'value'
    options = OptionsDict()

    options.x = {}
    options.x.y = value

    assert options.x.y == value
def test_dot_access():
    key, value = 'key', 'value'
    options = OptionsDict({key: value})

    assert options.key == value

    options2 = OptionsDict()
    options2.key = value

    assert options2.key == value
def test_options_inherit():
    options = OptionsDict({'overridden': 1, 'kept': 1})
    suboptions = OptionsDict({'overridden': 2, 'new': 1})

    suboptions.inherit(options)

    assert suboptions == {
        'overridden': 2,
        'new': 1,
        'kept': 1,
    }
def test_options_equality():
    options = OptionsDict({'key1': 'value', 'key2': 3})
    test = {'key1': 'value', 'key2': 3}

    assert options == test