# Copyright 2014 Lars Wirzenius # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # # =*= License: GPL-3+ =*= import unittest import distixlib class MetadataTests(unittest.TestCase): def setUp(self): self.metadata = distixlib.Metadata() def test_is_empty_initially(self): self.assertListEqual(self.metadata.keys(), []) def test_adds_key_value_pair(self): self.metadata.add('key', 'value') self.assertListEqual(self.metadata.keys(), ['key']) self.assertListEqual(self.metadata.get_all_values('key'), ['value']) def test_adds_second_value_to_key(self): self.metadata.add('key', 'value1') self.metadata.add('key', 'value2') self.assertListEqual(self.metadata.keys(), ['key']) self.assertItemsEqual( self.metadata.get_all_values('key'), ['value1', 'value2']) def test_get_first_value_returns_value_that_was_added_first(self): self.metadata.add('key', 'value1') self.metadata.add('key', 'value2') self.assertEqual(self.metadata.get_first_value('key'), 'value1') def test_get_first_value_returns_default_if_key_not_present(self): self.assertEqual( self.metadata.get_first_value('key', default='foo'), 'foo') def test_add_second_key(self): self.metadata.add('key1', 'value1') self.metadata.add('key2', 'value2') self.assertItemsEqual( self.metadata.keys(), ['key1', 'key2']) self.assertListEqual(self.metadata.get_all_values('key1'), ['value1']) self.assertListEqual(self.metadata.get_all_values('key2'), ['value2']) def test_remove_only_value_from_key(self): self.metadata.add('key', 'value') self.metadata.remove('key', 'value') self.assertListEqual(self.metadata.keys(), []) def test_remove_second_value_from_key(self): self.metadata.add('key1', 'value1') self.metadata.add('key2', 'value2') self.metadata.remove('key1', 'value1') self.assertListEqual(self.metadata.keys(), ['key2']) self.assertListEqual(self.metadata.get_all_values('key2'), ['value2']) def test_remove_both_values_from_key(self): self.metadata.add('key1', 'value1') self.metadata.add('key2', 'value2') self.metadata.remove('key2', 'value2') self.metadata.remove('key1', 'value1') self.assertListEqual(self.metadata.keys(), []) def test_removes_all_values(self): self.metadata.add('key', 'value1') self.metadata.add('key', 'value2') self.metadata.remove_all_values('key') self.assertListEqual(self.metadata.keys(), []) def test_doesnt_contain_initially(self): self.assertFalse('key' in self.metadata) def test_contains_added_key(self): self.metadata.add('key', 'value') self.assertTrue('key' in self.metadata)