~ahasenack/landscape-client/landscape-client-1.5.5-0ubuntu0.9.04.0

« back to all changes in this revision

Viewing changes to landscape/lib/tests/test_bpickle_dbus.py

  • Committer: Bazaar Package Importer
  • Author(s): Rick Clark
  • Date: 2008-09-08 16:35:57 UTC
  • mfrom: (1.1.1 upstream)
  • Revision ID: james.westby@ubuntu.com-20080908163557-l3ixzj5dxz37wnw2
Tags: 1.0.18-0ubuntu1
New upstream release 

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
import unittest
 
2
 
 
3
from dbus.types import Double
 
4
 
 
5
from landscape.lib import bpickle
 
6
from landscape.lib.bpickle_dbus import install, uninstall, dumps_utf8string
 
7
 
 
8
 
 
9
original = dict(bpickle.dumps_table)
 
10
 
 
11
 
 
12
class DBusBPickleExtensionsTest(unittest.TestCase):
 
13
 
 
14
    def tearDown(self):
 
15
        # Mutate the original object back to the original version
 
16
        # because rebinding it will cause bizarre failures.
 
17
        bpickle.dumps_table.clear()
 
18
        bpickle.dumps_table.update(original)
 
19
 
 
20
    def test_install(self):
 
21
        """
 
22
        Installing bpickle extensions for DBus types should add to the
 
23
        existing table.  Existing bpickle mappings shouldn't be
 
24
        changed.
 
25
        """
 
26
        install()
 
27
        self.assertNotEquals(original, bpickle.dumps_table)
 
28
        pre = set(original.iteritems())
 
29
        post = set(bpickle.dumps_table.iteritems())
 
30
        self.assertTrue(pre.issubset(post))
 
31
 
 
32
    def test_uninstall(self):
 
33
        """
 
34
        Uninstalling bpickle extensions for DBus types should remove
 
35
        whatever was added during installation.  Extensions installed
 
36
        by external components should not be affected by this
 
37
        operation.
 
38
        """
 
39
        install()
 
40
        self.assertFalse(object in bpickle.dumps_table)
 
41
        bpickle.dumps_table[object] = lambda obj: None
 
42
 
 
43
        uninstall()
 
44
        pre = set(original.iteritems())
 
45
        post = set(bpickle.dumps_table.iteritems())
 
46
        self.assertTrue(pre.issubset(post))
 
47
        self.assertTrue(object in bpickle.dumps_table)
 
48
        self.assertTrue(len(original)+1, len(bpickle.dumps_table))
 
49
 
 
50
    def test_dumps_utf8string(self):
 
51
        """
 
52
        Dumping a L{dbus.types.UTF8String} should produce the same
 
53
        bpickle output as would be produced for a C{unicode} value.
 
54
        """
 
55
        try:
 
56
            from dbus.types import UTF8String
 
57
 
 
58
            value = UTF8String("")
 
59
            self.assertEquals(dumps_utf8string(value), "u0:")
 
60
            value = UTF8String("Charlie!")
 
61
            self.assertEquals(dumps_utf8string(value), "u8:Charlie!")
 
62
        except ImportError:
 
63
            pass
 
64
 
 
65
    def test_dumps_double(self):
 
66
        """
 
67
        Dumping and restoring a L{dbus.types.Double} should result in the
 
68
        same value.
 
69
        """
 
70
        install()
 
71
        try:
 
72
            value = Double(480.0, variant_level=1)
 
73
        except TypeError:
 
74
            value = Double(480.0)
 
75
        self.assertAlmostEquals(bpickle.loads(bpickle.dumps(value)), 480.0)