diff options
author | Nicholas Schwab <git@nicholas-schwab.de> | 2021-04-08 16:21:44 +0200 |
---|---|---|
committer | Nicholas Schwab <git@nicholas-schwab.de> | 2021-04-08 16:21:44 +0200 |
commit | 525548a2024e1befada8cc939c66c72f00234d76 (patch) | |
tree | 71a87a2a15b55432fac1bc70c254706542a73d71 | |
parent | 02a64630aa83e37e47a28a60366e1c65f0eba3ac (diff) | |
download | qutebrowser-525548a2024e1befada8cc939c66c72f00234d76.tar.gz qutebrowser-525548a2024e1befada8cc939c66c72f00234d76.zip |
Added tests for ValidPrefixes.
-rw-r--r-- | tests/unit/config/test_configtypes.py | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/tests/unit/config/test_configtypes.py b/tests/unit/config/test_configtypes.py index 28c52a1e0..22674c812 100644 --- a/tests/unit/config/test_configtypes.py +++ b/tests/unit/config/test_configtypes.py @@ -186,6 +186,93 @@ class TestValidValues: assert vv.descriptions['bar'] == "bar desc" +class TestValidPrefixes: + + @pytest.fixture + def klass(self): + return configtypes.ValidPrefixes + + @pytest.mark.parametrize('valid_values, separator, contained, not_contained', [ + # Without description + (['foo', 'bar'], ':', ['foo:blub'], ['bar.blah', 'baz:blub', 'foo']), + # With description + ([('foo', "foo desc"), ('bar', "bar desc")], '/', ['foo/blub'], + ['bar:blah', 'baz/blub', 'foo']), + # With mixed description + ([('foo', "foo desc"), 'bar'], '.', ['foo.blub'], + ['bar:blah', 'baz.blub', 'foo']), + ]) + def test_contains(self, klass, valid_values, separator, contained, not_contained): + """Test __contains___ with various values.""" + vv = klass(*valid_values, separator=separator) + for elem in contained: + assert elem in vv + for elem in not_contained: + assert elem not in vv + + @pytest.mark.parametrize('valid_values', [ + # With description + ['foo', 'bar'], + [('foo', "foo desc"), ('bar', "bar desc")], + [('foo', "foo desc"), 'bar'], + ]) + def test_iter_without_desc(self, klass, valid_values): + """Test __iter__ without a description.""" + vv = klass(*valid_values) + assert list(vv) == ['foo:', 'bar:'] + + def test_descriptions(self, klass): + """Test descriptions.""" + vv = klass( + ('one-with', "desc 1"), + ('two-with', "desc 2"), + 'three-without', + ('four-without', None) + ) + assert vv.descriptions['one-with'] == "desc 1" + assert vv.descriptions['two-with'] == "desc 2" + assert 'three-without' not in vv.descriptions + assert 'four-without' not in vv.descriptions + + @pytest.mark.parametrize('args, separator, expected', [ + (['a', 'b'], ':', "<qutebrowser.config.configtypes.ValidPrefixes " + "descriptions={} separator=':' values=['a', 'b']>"), + ([('val', 'desc')], '/', "<qutebrowser.config.configtypes.ValidPrefixes " + "descriptions={'val': 'desc'} separator='/' " + "values=['val']>"), + ]) + def test_repr(self, klass, args, separator, expected): + assert repr(klass(*args, separator=separator)) == expected + + def test_empty(self, klass): + with pytest.raises(ValueError): + klass() + + @pytest.mark.parametrize('args1, args2, is_equal', [ + ((('foo', 'bar'), {}), (('foo', 'bar'), {}), True), + ((('foo', 'bar'), {}), (('foo', 'baz'), {}), False), + ((('foo', 'bar'), {'separator': '/'}), (('foo', 'bar'), {}), False), + (((('foo', 'foo desc'), ('bar', 'bar desc')), {}), + ((('foo', 'foo desc'), ('bar', 'bar desc')), {}), + True), + (((('foo', 'foo desc'), ('bar', 'bar desc')), {}), + ((('foo', 'foo desc'), ('bar', 'bar desc2')), {}), + False), + ]) + def test_equal(self, klass, args1, args2, is_equal): + obj1 = klass(*args1[0], **args1[1]) + obj2 = klass(*args2[0], **args2[1]) + assert (obj1 == obj2) == is_equal + + def test_from_dict(self, klass): + """Test initializing from a list of dicts.""" + vv = klass({'foo': "foo desc"}, {'bar': "bar desc"}) + assert 'foo:blah' in vv + assert 'bar:blub' in vv + assert vv.descriptions['foo'] == "foo desc" + assert vv.descriptions['bar'] == "bar desc" + + class TestAll: """Various tests which apply to all available config types.""" |