~ubuntu-branches/debian/sid/meliae/sid

« back to all changes in this revision

Viewing changes to meliae/tests/test__intset.py

  • Committer: Bazaar Package Importer
  • Author(s): Jelmer Vernooij
  • Date: 2010-07-20 18:26:22 UTC
  • mto: This revision was merged to the branch mainline in revision 3.
  • Revision ID: james.westby@ubuntu.com-20100720182622-b0ks0nu34mify1lj
Tags: upstream-0.2.1
ImportĀ upstreamĀ versionĀ 0.2.1

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2009 Canonical Ltd
 
1
# Copyright (C) 2009, 2010 Canonical Ltd
2
2
3
3
# This program is free software: you can redistribute it and/or modify
4
4
# it under the terms of the GNU General Public License version 3 as
14
14
 
15
15
"""Test the Set of Integers object."""
16
16
 
 
17
import sys
 
18
 
17
19
from meliae import (
18
20
    _intset,
19
21
    tests,
84
86
 
85
87
    def test_add_and_grow(self):
86
88
        iset = self._set_type()
87
 
        for i in xrange(-5, 10000):
 
89
        for i in xrange(0, 10000):
88
90
            iset.add(i)
89
 
        self.assertEqual(10005, len(iset))
 
91
        self.assertEqual(10000, len(iset))
90
92
 
91
93
    def test_from_list(self):
92
 
        iset = self._set_type([-1, 0, 1, 2, 3, 4])
93
 
        self.assertTrue(-1 in iset)
 
94
        iset = self._set_type([0, 1, 2, 3, 4, 5])
94
95
        self.assertTrue(0 in iset)
95
96
        self.assertTrue(1 in iset)
96
97
        self.assertTrue(2 in iset)
97
98
        self.assertTrue(3 in iset)
98
99
        self.assertTrue(4 in iset)
99
 
        self.assertFalse(5 in iset)
 
100
        self.assertTrue(5 in iset)
 
101
        self.assertFalse(6 in iset)
100
102
 
101
103
    def test_discard(self):
102
104
        # Not supported yet... KnownFailure
110
112
class TestIDSet(TestIntSet):
111
113
 
112
114
    _set_type = _intset.IDSet
 
115
 
 
116
    def test_high_bit(self):
 
117
        # Python ids() are considered to be unsigned values, but python
 
118
        # integers are considered to be signed longs. As such, we need to play
 
119
        # some tricks to get them to fit properly. Otherwise we get
 
120
        # 'Overflow' exceptions
 
121
        bigint = sys.maxint + 1
 
122
        self.assertTrue(isinstance(bigint, long))
 
123
        iset = self._set_type()
 
124
        self.assertFalse(bigint in iset)
 
125
        iset.add(bigint)
 
126
        self.assertTrue(bigint in iset)
 
127
        
 
128
    def test_add_singletons(self):
 
129
        pass
 
130
        # Negative values cannot be checked in IDSet, because we cast them to
 
131
        # unsigned long first.