Ejemplo n.º 1
0
def test_setting_an_empty_dict_does_not_break_flow():
    sample1 = AutoDict()

    sample1['this'] = {}
    sample1['this']['is']['a']['test'] = 'success'

    assert sample1['this']['is']['a']['test'] == 'success'

    sample2 = AutoDict()

    sample2['this'] = {'is another potential': 'edge'}
    sample2['this']['is']['a']['test'] = 'success'

    expected = {  # :off
        'this': {
            'is another potential': 'edge',
            'is': {
                'a': {
                    'test': 'success'
                }
            }
        }
    }  # :on

    assert sample2 == expected
Ejemplo n.º 2
0
def test_repr_offers_some_reasonable_output():
    sample1 = AutoDict()
    assert repr(sample1) == 'AutoDict({})'

    sample2 = AutoDict({'this is': 'a test'})
    assert repr(sample2) == "AutoDict({'this is': 'a test'})"

    sample3 = AutoDict()
    sample3['this']['is']['a']['test'] = 'success'

    assert repr(sample3['this']['is']['a']) == repr({'test': 'success'})
Ejemplo n.º 3
0
def test_knows_its_roots():
    sample = AutoDict()

    sample['this']['is']['a']['test'] = 'success'

    assert sample['this']._is_root is False
    assert sample._is_root is True
Ejemplo n.º 4
0
def test_can_find_its_root():
    sample = AutoDict()

    sample['this']['is']['a']['test'] = 'success'

    assert sample is sample
    assert sample['this']['is']['a']._root is sample
Ejemplo n.º 5
0
def test_values_can_be_updated_without_replacing_the_entire_tree():
    sample = AutoDict()

    sample['this']['is']['a']['test'] = 'success'
    sample['this']['is']['not']['a']['test'] = 'more success'
    sample['this']['is']['a']['different']['test'] = 'still good'

    expected = {  # :off
        'this': {
            'is': {
                'a': {
                    'different': {
                        'test': 'still good'
                    },
                    'test': 'success'
                },
                'not': {
                    'a': {
                        'test': 'more success'
                    }
                }
            }
        }
    }  # :on

    assert sample == expected
Ejemplo n.º 6
0
def test_deleted_leafs_also_remove_branch():
    sample = AutoDict()

    sample['this']['is']['a']['test'] = 'success'
    sample['this']['is']['not']['a']['test'] = 'more success'
    del sample['this']['is']
    assert sample == {}
Ejemplo n.º 7
0
def test_knows_the_difference_between_a_list_and_not_a_list_when_manually_setting_root(
):
    sample = AutoDict()
    sample['this']['is']['a']['test'] = 'success'

    expected_obj = {'expected': 'object'}
    sample['this']['is']._root = [expected_obj]

    assert sample['this']['is']._root is expected_obj
Ejemplo n.º 8
0
def test_items_can_be_deleted():
    sample1 = AutoDict()

    sample1['this']['is']['a']['test'] = 'success'
    del sample1['this']['is']['a']['test']
    assert sample1 == {}

    sample2 = AutoDict()

    sample2['this']['is']['a']['test'] = 'success'
    sample2['this']['is']['not']['a']['test'] = 'more success'
    del sample2['this']['is']['a']
    # :off
    assert sample2 == {
        'this': {
            'is': {
                'not': {
                    'a': {
                        'test': 'more success'
                    }
                }
            }
        }
    }  # :on
Ejemplo n.º 9
0
def test_quacks_like_an_ordinary_dict():
    result = AutoDict()

    assert result == {}
Ejemplo n.º 10
0
def test_automatically_creates_nested_dict():
    sample = AutoDict()

    sample['this']['is']['a']['test'] = 'success'

    assert sample == {'this': {'is': {'a': {'test': 'success'}}}}
Ejemplo n.º 11
0
def test_can_be_initialized_with_value():
    sample = {'this is a': 'test'}
    result = AutoDict(obj=sample)

    assert result == sample