# 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 MetadataSerialiserTests(unittest.TestCase): # These tests check for precise YAML output. This is important, because # making the output always be the same minimises merge deltas and, I hope, # merge conflicts. def setUp(self): self.metadata = distixlib.Metadata() self.serialiser = distixlib.MetadataSerialiser() def test_serialises_empty_metadata(self): self.assertEqual(self.serialiser.serialise(self.metadata), '{}\n') def test_serialises_one_key_value_pair(self): self.metadata.add('key', 'value') self.assertEqual( self.serialiser.serialise(self.metadata), 'key:\n- value\n') def test_serialises_key_with_two_values(self): self.metadata.add('key', 'value2') self.metadata.add('key', 'value1') self.assertEqual( self.serialiser.serialise(self.metadata), 'key:\n- value1\n- value2\n') def test_serialises_two_keys(self): self.metadata.add('key2', 'value2') self.metadata.add('key1', 'value1') self.assertEqual( self.serialiser.serialise(self.metadata), 'key1:\n- value1\nkey2:\n- value2\n') def test_deserialises_empty_file(self): new = self.serialiser.deserialise('') self.assertListEqual(new.keys(), []) def test_deserialises_one_key_value_pair(self): new = self.serialiser.deserialise('key:\n- value\n') self.assertListEqual(new.keys(), ['key']) self.assertListEqual(new.get_all_values('key'), ['value']) def test_deserialises_key_with_two_values(self): new = self.serialiser.deserialise('key:\n- value1\n- value2\n') self.assertListEqual(new.keys(), ['key']) self.assertItemsEqual(new.get_all_values('key'), ['value1', 'value2']) def test_deserialises_two_key_value_pairs(self): new = self.serialiser.deserialise('key1:\n- value1\nkey2:\n- value2\n') self.assertItemsEqual(new.keys(), ['key1', 'key2']) self.assertListEqual(new.get_all_values('key1'), ['value1']) self.assertListEqual(new.get_all_values('key2'), ['value2'])