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)
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')]
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')]
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') == []
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')
def test_repeatable_dict_overwrite(): d = http.RepeatableDict([('foo', 'bar'), ('foo', 'fuzz'), ('bar', 'baz')]) d['foo'] = 'asdf' assert d.all_vals('foo') == ['asdf']