summaryrefslogtreecommitdiff
path: root/obnam/cmpTests.py
diff options
context:
space:
mode:
Diffstat (limited to 'obnam/cmpTests.py')
-rw-r--r--obnam/cmpTests.py377
1 files changed, 0 insertions, 377 deletions
diff --git a/obnam/cmpTests.py b/obnam/cmpTests.py
deleted file mode 100644
index 245b1349..00000000
--- a/obnam/cmpTests.py
+++ /dev/null
@@ -1,377 +0,0 @@
-# Copyright (C) 2006, 2007, 2008 Lars Wirzenius <liw@iki.fi>
-#
-# 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 2 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, write to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-
-"""Unit tests for obnam.cmp."""
-
-
-import os
-import unittest
-
-
-import obnam
-
-
-class ComponentKindNameTests(unittest.TestCase):
-
- def test(self):
- t = obnam.cmp.kind_name
- c = obnam.cmp
- self.failUnlessEqual(t(-12765), "UNKNOWN")
-
- names = (
- "OBJID",
- "OBJKIND",
- "BLKID",
- "FILECHUNK",
- "OBJECT",
- "OBJMAP",
- "CONTREF",
- "NAMEIPAIR",
- "FILENAME",
- "SIGDATA",
- "SIGREF",
- "GENREF",
- "OBJREF",
- "BLOCKREF",
- "MAPREF",
- "FILEPARTREF",
- "FORMATVERSION",
- "FILE",
- "FILELISTREF",
- "CONTMAPREF",
- "DELTAREF",
- "DELTADATA",
- "STAT",
- "GENSTART",
- "GENEND",
- "DELTAPARTREF",
- "DIRREF",
- "FILEGROUPREF",
- )
-
- for name in names:
- self.failUnlessEqual(t(getattr(c, name)), name)
-
-
-class RefComponentTests(unittest.TestCase):
-
- def test(self):
- kinds = obnam.cmp._component_kinds
- for kind in kinds:
- self.failUnlessEqual(kinds[kind][1].endswith("REF"),
- obnam.cmp.kind_is_reference(kind))
-
-
-class CreateComponentTests(unittest.TestCase):
-
- def testCreateLeaf(self):
- c = obnam.cmp.Component(1, "pink")
- self.failIfEqual(c, None)
- self.failUnlessEqual(c.get_kind(), 1)
- self.failUnlessEqual(c.get_string_value(), "pink")
- self.failUnlessEqual(c.is_composite(), False)
-
- def testCreateComposite(self):
- leaf1 = obnam.cmp.Component(1, "pink")
- leaf2 = obnam.cmp.Component(2, "pretty")
- c = obnam.cmp.Component(3, [leaf1, leaf2])
- self.failUnlessEqual(c.get_kind(), 3)
- self.failUnlessEqual(c.is_composite(), True)
- self.failUnlessEqual(c.get_subcomponents(), [leaf1, leaf2])
-
-
-class ComponentParserTest(unittest.TestCase):
-
- def testDecodeEmptyString(self):
- parser = obnam.cmp.Parser("")
- self.failUnlessEqual(parser.decode(), None)
-
- def testDecodePlainComponent(self):
- c = obnam.cmp.Component(obnam.cmp.OBJID, "pink")
- encoded = c.encode()
- parser = obnam.cmp.Parser(encoded)
- c2 = parser.decode()
- self.failUnlessEqual(parser.pos, len(encoded))
- self.failUnlessEqual(encoded, c2.encode())
-
- def testDecodeCompositeComponent(self):
- subs = [obnam.cmp.Component(obnam.cmp.OBJID, str(i))
- for i in range(100)]
- c = obnam.cmp.Component(obnam.cmp.OBJECT, subs)
- encoded = c.encode()
- parser = obnam.cmp.Parser(encoded)
- c2 = parser.decode()
- self.failUnlessEqual(parser.pos, len(encoded))
- self.failUnlessEqual(encoded, c2.encode())
-
- def testDecodeAllEmptyString(self):
- parser = obnam.cmp.Parser("")
- self.failUnlessEqual(parser.decode_all(), [])
-
- def testDecodeAllPlainComponents(self):
- list = [obnam.cmp.Component(obnam.cmp.OBJID, str(i))
- for i in range(100)]
- encoded = "".join(c.encode() for c in list)
-
- parser = obnam.cmp.Parser(encoded)
- list2 = parser.decode_all()
- self.failUnlessEqual(parser.pos, len(encoded))
-
- encoded2 = "".join(c.encode() for c in list2)
- self.failUnlessEqual(encoded, encoded2)
-
-
-class ComponentDecodeAllTests(unittest.TestCase):
-
- def remove_component(self, list, kind, value):
- self.failUnlessEqual(list[0].get_kind(), kind)
- self.failUnlessEqual(list[0].get_string_value(), value)
- del list[0]
-
- def testDecodeAll(self):
- c1 = obnam.cmp.Component(1, "pink")
- c2 = obnam.cmp.Component(2, "pretty")
- e1 = c1.encode()
- e2 = c2.encode()
- e = e1 + e2
- list = obnam.cmp.Parser(e).decode_all()
- self.remove_component(list, 1, "pink")
- self.remove_component(list, 2, "pretty")
- self.failUnlessEqual(list, [])
-
-
-class ComponentFindTests(unittest.TestCase):
-
- def setUp(self):
- list = [(1, "pink"), (2, "pretty"), (3, "black"), (3, "box")]
- list += [(4, obnam.varint.encode(4))]
- list = [obnam.cmp.Component(a, b) for a, b in list]
- self.c = obnam.cmp.Component(42, list)
-
- def match(self, result, kind, value):
- self.failUnless(len(result) > 0)
- c = result[0]
- self.failUnlessEqual(c.get_kind(), kind)
- self.failUnlessEqual(c.get_string_value(), value)
- del result[0]
-
- def testFindAllOnes(self):
- result = self.c.find_by_kind(1)
- self.match(result, 1, "pink")
- self.failUnlessEqual(result, [])
-
- def testFindAllTwos(self):
- result = self.c.find_by_kind(2)
- self.match(result, 2, "pretty")
- self.failUnlessEqual(result, [])
-
- def testFindAllThrees(self):
- result = self.c.find_by_kind(3)
- self.match(result, 3, "black")
- self.match(result, 3, "box")
- self.failUnlessEqual(result, [])
-
- def testFindAllNones(self):
- result = self.c.find_by_kind(0)
- self.failUnlessEqual(result, [])
-
- def testFindFirstOne(self):
- result = [self.c.first_by_kind(1)]
- self.match(result, 1, "pink")
- self.failUnlessEqual(result, [])
-
- def testFindFirstTwo(self):
- result = [self.c.first_by_kind(2)]
- self.match(result, 2, "pretty")
- self.failUnlessEqual(result, [])
-
- def testFindFirstThree(self):
- result = [self.c.first_by_kind(3)]
- self.match(result, 3, "black")
- self.failUnlessEqual(result, [])
-
- def testFindFirstNone(self):
- result = self.c.first_by_kind(0)
- self.failUnlessEqual(result, None)
-
- def testFindAllStringOnes(self):
- result = self.c.find_strings_by_kind(1)
- self.failUnlessEqual(result, ["pink"])
-
- def testFindAllStringTwos(self):
- result = self.c.find_strings_by_kind(2)
- self.failUnlessEqual(result, ["pretty"])
-
- def testFindAllStringThrees(self):
- result = self.c.find_strings_by_kind(3)
- self.failUnlessEqual(result, ["black", "box"])
-
- def testFindAllStringNones(self):
- result = self.c.find_strings_by_kind(0)
- self.failUnlessEqual(result, [])
-
- def testFindFirstStringOne(self):
- result = self.c.first_string_by_kind(1)
- self.failUnlessEqual(result, "pink")
-
- def testFindFirstStringTwo(self):
- result = self.c.first_string_by_kind(2)
- self.failUnlessEqual(result, "pretty")
-
- def testFindFirstStringThree(self):
- result = self.c.first_string_by_kind(3)
- self.failUnlessEqual(result, "black")
-
- def testFindFirstStringNone(self):
- result = self.c.first_string_by_kind(0)
- self.failUnlessEqual(result, None)
-
- def testFindFirstVarintByKind(self):
- result = self.c.first_varint_by_kind(4)
- self.failUnlessEqual(result, 4)
-
- def testFindFirstVarintByKindWhenMissing(self):
- result = self.c.first_varint_by_kind(0)
- self.failUnlessEqual(result, None)
-
-
-class FindTests(unittest.TestCase):
-
- def setUp(self):
- self.list = [(1, "pink"), (2, "pretty"), (3, "black"), (3, "box")]
- self.list = [obnam.cmp.Component(a, b) for a, b in self.list]
-
- def tearDown(self):
- del self.list
-
- def match(self, result, kind, value):
- self.failUnless(len(result) > 0)
- c = result[0]
- self.failUnlessEqual(c.get_kind(), kind)
- self.failUnlessEqual(c.get_string_value(), value)
- del result[0]
-
- def testFindAllOnes(self):
- result = obnam.cmp.find_by_kind(self.list, 1)
- self.match(result, 1, "pink")
- self.failUnlessEqual(result, [])
-
- def testFindAllTwos(self):
- result = obnam.cmp.find_by_kind(self.list, 2)
- self.match(result, 2, "pretty")
- self.failUnlessEqual(result, [])
-
- def testFindAllThrees(self):
- result = obnam.cmp.find_by_kind(self.list, 3)
- self.match(result, 3, "black")
- self.match(result, 3, "box")
- self.failUnlessEqual(result, [])
-
- def testFindAllNones(self):
- result = obnam.cmp.find_by_kind(self.list, 0)
- self.failUnlessEqual(result, [])
-
- def testFindFirstOne(self):
- result = [obnam.cmp.first_by_kind(self.list, 1)]
- self.match(result, 1, "pink")
- self.failUnlessEqual(result, [])
-
- def testFindFirstTwo(self):
- result = [obnam.cmp.first_by_kind(self.list, 2)]
- self.match(result, 2, "pretty")
- self.failUnlessEqual(result, [])
-
- def testFindFirstThree(self):
- result = [obnam.cmp.first_by_kind(self.list, 3)]
- self.match(result, 3, "black")
- self.failUnlessEqual(result, [])
-
- def testFindFirstNone(self):
- result = obnam.cmp.first_by_kind(self.list, 0)
- self.failUnlessEqual(result, None)
-
- def testFindAllStringOnes(self):
- result = obnam.cmp.find_strings_by_kind(self.list, 1)
- self.failUnlessEqual(result, ["pink"])
-
- def testFindAllStringTwos(self):
- result = obnam.cmp.find_strings_by_kind(self.list, 2)
- self.failUnlessEqual(result, ["pretty"])
-
- def testFindAllStringThrees(self):
- result = obnam.cmp.find_strings_by_kind(self.list, 3)
- self.failUnlessEqual(result, ["black", "box"])
-
- def testFindAllStringNones(self):
- result = obnam.cmp.find_strings_by_kind(self.list, 0)
- self.failUnlessEqual(result, [])
-
- def testFindFirstStringOne(self):
- result = obnam.cmp.first_string_by_kind(self.list, 1)
- self.failUnlessEqual(result, "pink")
-
- def testFindFirstStringTwo(self):
- result = obnam.cmp.first_string_by_kind(self.list, 2)
- self.failUnlessEqual(result, "pretty")
-
- def testFindFirstStringThree(self):
- result = obnam.cmp.first_string_by_kind(self.list, 3)
- self.failUnlessEqual(result, "black")
-
- def testFindFirstStringNone(self):
- result = obnam.cmp.first_string_by_kind(self.list, 0)
- self.failUnlessEqual(result, None)
-
-
-class GetVarintVAlueTest(unittest.TestCase):
-
- def test(self):
- c = obnam.cmp.Component(1, obnam.varint.encode(12765))
- self.failUnlessEqual(c.get_varint_value(), 12765)
-
-
-class FindVarintTests(unittest.TestCase):
-
- def test(self):
- values = range(0, 1024, 17)
-
- list = []
- for i in values:
- encoded = obnam.varint.encode(i)
- c = obnam.cmp.Component(i, encoded)
- list.append(c)
-
- for i in values:
- self.failUnlessEqual(obnam.cmp.first_varint_by_kind(list, i), i)
- self.failUnlessEqual(obnam.cmp.first_varint_by_kind(list, -1), None)
-
-
-class StatTests(unittest.TestCase):
-
- def testEncodeDecode(self):
- st1 = os.stat("Makefile")
- stat = obnam.cmp.create_stat_component(st1)
- st2 = obnam.cmp.parse_stat_component(stat)
-
- names1 = [x for x in dir(st1) if x.startswith("st_")]
- names2 = [x for x in dir(st2) if x.startswith("st_")]
- names1.sort()
- names2.sort()
- self.failUnlessEqual(names1, names2)
- for name in names1:
- self.failUnlessEqual(st1.__getattribute__(name),
- st2.__getattribute__(name))