Exemplo n.º 1
0
def test_repeatable_dict_case_insensitive():
    def test(d):
        assert 'foo' in d
        assert 'fOo' in d
        assert d['foo'] == 'fuzz'
        assert d['Foo'] == 'fuzz'
        assert d['FoO'] == 'fuzz'

        assert d.all_vals('foo') == ['bar', 'fuzz']
        assert d.all_vals('Foo') == ['bar', 'fuzz']
        assert d.all_vals('FoO') == ['bar', 'fuzz']

        assert d.all_pairs() == [('foo', 'bar'), ('fOo', 'fuzz')]

    d = http.RepeatableDict([('foo', 'bar'), ('fOo', 'fuzz')],
                            case_insensitive=True)
    test(d)

    d = http.RepeatableDict(case_insensitive=True)
    d['foo'] = 'bar'
    d.append('fOo', 'fuzz')
    test(d)

    d = http.RepeatableDict(case_insensitive=True)
    d.add_pairs([('foo', 'bar'), ('fOo', 'fuzz')])
    test(d)
Exemplo n.º 2
0
def test_repeatable_dict_constructor():
    d = http.RepeatableDict([('foo', 'bar'), ('baz', 'fuzz')])
    assert 'foo' in d
    assert d['foo'] == 'bar'
    assert d['baz'] == 'fuzz'
    assert d.all_vals('foo') == ['bar']
    assert d.all_pairs() == [('foo', 'bar'), ('baz', 'fuzz')]
Exemplo n.º 3
0
def test_repeatable_dict_simple():
    d = http.RepeatableDict()
    assert not 'foo' in d
    d['foo'] = 'bar'
    assert 'foo' in d
    d['baz'] = 'fuzz'
    d.append('foo', 'fizz')
    assert d['foo'] == 'fizz'
    assert d['baz'] == 'fuzz'
    assert d.all_vals('foo') == ['bar', 'fizz']
    assert d.all_pairs() == [('foo', 'bar'),
                             ('baz', 'fuzz'),
                             ('foo', 'fizz')]
    assert not 'fee' in d
    d.add_pairs([('fee', 'fi'),
                 ('foo', 'fo')])
    assert 'fee' in d
    assert d['fee'] == 'fi'
    assert d['baz'] == 'fuzz'
    assert d['foo'] == 'fo'
    assert d.all_vals('foo') == ['bar', 'fizz', 'fo']
    assert d.all_pairs() == [('foo', 'bar'),
                             ('baz', 'fuzz'),
                             ('foo', 'fizz'),
                             ('fee', 'fi'),
                             ('foo', 'fo')]
Exemplo n.º 4
0
def test_repeatable_dict_deletion():
    d = http.RepeatableDict([('foo', 'bar'), ('fOo', 'fuzz'), ('bar', 'baz')],
                            case_insensitive=True)
    assert 'foo' in d
    del d['foo']
    assert not 'foo' in d

    with pytest.raises(KeyError):
        x = d['foo']

    with pytest.raises(KeyError):
        x = d['fOo']

    assert d['bar'] == 'baz'
    assert d.all_vals('foo') == []
Exemplo n.º 5
0
def test_repeatable_dict_callback():
    def f():
        raise TException()

    r = http.RepeatableDict()
    r['a'] = 'b'
    r.add_pairs([('c', 'd')])
    r.update('a', 'c')

    r.set_modify_callback(f)
    with pytest.raises(TException):
        r['a'] = 'b'
    with pytest.raises(TException):
        r.add_pairs([('c', 'd')])
    with pytest.raises(TException):
        r.update('a', 'c')
Exemplo n.º 6
0
def test_repeatable_dict_overwrite():
    d = http.RepeatableDict([('foo', 'bar'), ('foo', 'fuzz'), ('bar', 'baz')])
    d['foo'] = 'asdf'
    assert d.all_vals('foo') == ['asdf']