~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/test__static_tuple.py

  • Committer: John Arbash Meinel
  • Date: 2009-10-12 20:12:32 UTC
  • mfrom: (4736 +trunk)
  • mto: This revision was merged to the branch mainline in revision 4749.
  • Revision ID: john@arbash-meinel.com-20091012201232-ccnceqvk29u7v22u
Merge bzr.dev 4736

This includes the updates to StaticTuple, etc, to build using Pyrex 0.9.6.4

Show diffs side-by-side

added added

removed removed

Lines of Context:
141
141
        self.assertEqual('foo', k[0])
142
142
        self.assertEqual('z', k[6])
143
143
        self.assertEqual('z', k[-1])
 
144
        self.assertRaises(IndexError, k.__getitem__, 7)
 
145
        self.assertRaises(IndexError, k.__getitem__, 256+7)
 
146
        self.assertRaises(IndexError, k.__getitem__, 12024)
 
147
        # Python's [] resolver handles the negative arguments, so we can't
 
148
        # really test StaticTuple_item() with negative values.
 
149
        self.assertRaises(TypeError, k.__getitem__, 'not-an-int')
 
150
        self.assertRaises(TypeError, k.__getitem__, '5')
144
151
 
145
152
    def test_refcount(self):
146
153
        f = 'fo' + 'oo'
202
209
        self.assertTrue(k_small <= k_big)
203
210
        self.assertTrue(k_small < k_big)
204
211
 
 
212
    def assertCompareNoRelation(self, k1, k2):
 
213
        """Run the comparison operators, make sure they do something.
 
214
 
 
215
        However, we don't actually care what comes first or second. This is
 
216
        stuff like cross-class comparisons. We don't want to segfault/raise an
 
217
        exception, but we don't care about the sort order.
 
218
        """
 
219
        self.assertFalse(k1 == k2)
 
220
        self.assertTrue(k1 != k2)
 
221
        # Do the comparison, but we don't care about the result
 
222
        k1 >= k2
 
223
        k1 > k2
 
224
        k1 <= k2
 
225
        k1 < k2
 
226
 
205
227
    def test_compare_vs_none(self):
206
228
        k1 = self.module.StaticTuple('baz', 'bing')
207
229
        self.assertCompareDifferent(None, k1)
208
 
        self.assertCompareDifferent(10, k1)
209
 
        # Comparison with a string is poorly-defined, I seem to get failures
210
 
        # regardless of which one comes first...
211
 
        # self.assertCompareDifferent('baz', k1)
 
230
    
 
231
    def test_compare_cross_class(self):
 
232
        k1 = self.module.StaticTuple('baz', 'bing')
 
233
        self.assertCompareNoRelation(10, k1)
 
234
        self.assertCompareNoRelation('baz', k1)
212
235
 
213
236
    def test_compare_all_different_same_width(self):
214
237
        k1 = self.module.StaticTuple('baz', 'bing')
277
300
        k = self.module.StaticTuple('foo', 'bar', 'baz', 'bing')
278
301
        self.assertEqual(('foo', 'bar'), k[:2])
279
302
        self.assertEqual(('baz',), k[2:-1])
 
303
        try:
 
304
            val = k[::2]
 
305
        except TypeError:
 
306
            # C implementation raises a TypeError, we don't need the
 
307
            # implementation yet, so allow this to pass
 
308
            pass
 
309
        else:
 
310
            # Python implementation uses a regular Tuple, so make sure it gives
 
311
            # the right result
 
312
            self.assertEqual(('foo', 'baz'), val)
280
313
 
281
314
    def test_referents(self):
282
315
        # We implement tp_traverse so that things like 'meliae' can measure the
283
316
        # amount of referenced memory. Unfortunately gc.get_referents() first
284
 
        # checks the IS_GC flag before it traverses anything. So there isn't a
285
 
        # way to expose it that I can see.
 
317
        # checks the IS_GC flag before it traverses anything. We could write a
 
318
        # helper func, but that won't work for the generic implementation...
286
319
        self.requireFeature(Meliae)
287
320
        from meliae import scanner
288
321
        strs = ['foo', 'bar', 'baz', 'bing']