Lines Matching refs:self
27 def test_context_var_new_1(self):
28 with self.assertRaisesRegex(TypeError, 'takes exactly 1'):
31 with self.assertRaisesRegex(TypeError, 'must be a str'):
35 self.assertEqual(c.name, 'aaa')
37 with self.assertRaises(AttributeError):
40 self.assertNotEqual(hash(c), hash('aaa'))
43 def test_context_var_repr_1(self):
45 self.assertIn('a', repr(c))
48 self.assertIn('123', repr(c))
53 self.assertIn('...', repr(c))
54 self.assertIn('...', repr(lst))
57 self.assertIn(repr(c), repr(t))
58 self.assertNotIn(' used ', repr(t))
60 self.assertIn(' used ', repr(t))
62 def test_context_subclassing_1(self):
63 with self.assertRaisesRegex(TypeError, 'not an acceptable base type'):
68 with self.assertRaisesRegex(TypeError, 'not an acceptable base type'):
72 with self.assertRaisesRegex(TypeError, 'not an acceptable base type'):
76 def test_context_new_1(self):
77 with self.assertRaisesRegex(TypeError, 'any arguments'):
79 with self.assertRaisesRegex(TypeError, 'any arguments'):
81 with self.assertRaisesRegex(TypeError, 'any arguments'):
85 def test_context_typerrors_1(self):
88 with self.assertRaisesRegex(TypeError, 'ContextVar key was expected'):
90 with self.assertRaisesRegex(TypeError, 'ContextVar key was expected'):
92 with self.assertRaisesRegex(TypeError, 'ContextVar key was expected'):
95 def test_context_get_context_1(self):
97 self.assertIsInstance(ctx, contextvars.Context)
99 def test_context_run_1(self):
102 with self.assertRaisesRegex(TypeError, 'missing 1 required'):
105 def test_context_run_2(self):
116 self.assertEqual(ctx.run(f), (('bar',), {'spam': 'foo'}))
117 self.assertEqual(ctx.run(f, 1), ((1, 'bar'), {'spam': 'foo'}))
119 self.assertEqual(
123 self.assertEqual(
128 self.assertEqual(
131 self.assertEqual(a, {})
133 def test_context_run_3(self):
139 with self.assertRaises(ZeroDivisionError):
141 with self.assertRaises(ZeroDivisionError):
143 with self.assertRaises(ZeroDivisionError):
147 def test_context_run_4(self):
153 self.assertIsNone(var.get(None))
156 self.assertIsNone(var.get(None))
159 self.assertEqual(var.get(None), 'spam')
162 self.assertEqual(len(cur), 1)
163 self.assertEqual(cur[var], 'spam')
167 self.assertEqual(ctx1, returned_ctx)
168 self.assertEqual(returned_ctx[var], 'spam')
169 self.assertIn(var, returned_ctx)
171 def test_context_run_5(self):
176 self.assertIsNone(var.get(None))
180 with self.assertRaises(ZeroDivisionError):
183 self.assertIsNone(var.get(None))
185 def test_context_run_6(self):
190 self.assertEqual(c.get(), 0)
191 self.assertIsNone(ctx.get(c))
194 self.assertEqual(c.get(), 42)
195 self.assertEqual(ctx.get(c), 42)
199 def test_context_run_7(self):
203 with self.assertRaisesRegex(RuntimeError, 'is already entered'):
209 def test_context_getset_1(self):
211 with self.assertRaises(LookupError):
214 self.assertIsNone(c.get(None))
217 self.assertEqual(c.get(), 42)
218 self.assertEqual(c.get(None), 42)
219 self.assertIs(t0.old_value, t0.MISSING)
220 self.assertIs(t0.old_value, contextvars.Token.MISSING)
221 self.assertIs(t0.var, c)
224 self.assertEqual(c.get(), 'spam')
225 self.assertEqual(c.get(None), 'spam')
226 self.assertEqual(t.old_value, 42)
229 self.assertEqual(c.get(), 42)
230 self.assertEqual(c.get(None), 42)
233 with self.assertRaisesRegex(RuntimeError, 'has already been used'):
235 self.assertEqual(c.get(), 'spam2')
238 self.assertIn(c, ctx1)
241 with self.assertRaisesRegex(RuntimeError, 'has already been used'):
243 self.assertIsNone(c.get(None))
245 self.assertIn(c, ctx1)
246 self.assertEqual(ctx1[c], 'spam2')
247 self.assertEqual(ctx1.get(c, 'aa'), 'spam2')
248 self.assertEqual(len(ctx1), 1)
249 self.assertEqual(list(ctx1.items()), [(c, 'spam2')])
250 self.assertEqual(list(ctx1.values()), ['spam2'])
251 self.assertEqual(list(ctx1.keys()), [c])
252 self.assertEqual(list(ctx1), [c])
255 self.assertNotIn(c, ctx2)
256 with self.assertRaises(KeyError):
258 self.assertEqual(ctx2.get(c, 'aa'), 'aa')
259 self.assertEqual(len(ctx2), 0)
260 self.assertEqual(list(ctx2), [])
263 def test_context_getset_2(self):
268 with self.assertRaisesRegex(ValueError, 'by a different'):
272 def test_context_getset_3(self):
277 self.assertEqual(c.get(), 42)
278 with self.assertRaises(KeyError):
280 self.assertIsNone(ctx.get(c))
281 self.assertEqual(ctx.get(c, 'spam'), 'spam')
282 self.assertNotIn(c, ctx)
283 self.assertEqual(list(ctx.keys()), [])
286 self.assertEqual(list(ctx.keys()), [c])
287 self.assertEqual(ctx[c], 1)
290 self.assertEqual(list(ctx.keys()), [])
291 with self.assertRaises(KeyError):
297 def test_context_getset_4(self):
303 with self.assertRaisesRegex(ValueError, 'different Context'):
307 def test_context_getset_5(self):
314 self.assertEqual(c.get(), [42])
317 self.assertEqual(c.get(), [])
319 def test_context_copy_1(self):
327 self.assertEqual(ctx2[c], 10)
330 self.assertEqual(ctx1[c], 20)
331 self.assertEqual(ctx2[c], 10)
334 self.assertEqual(ctx1[c], 20)
335 self.assertEqual(ctx2[c], 30)
338 self.assertEqual(c.get(), 10)
340 self.assertEqual(c.get(), 30)
346 def test_context_threads_1(self):
353 self.assertEqual(cvar.get(), num + i)
361 self.assertEqual(results, list(range(10)))
370 def __init__(self, hash, name, *, error_on_eq_to=None):
372 self.name = name
373 self.hash = hash
374 self.error_on_eq_to = error_on_eq_to
376 def __repr__(self):
377 return f'<Key name:{self.name} hash:{self.hash}>'
379 def __hash__(self):
380 if self._crasher is not None and self._crasher.error_on_hash:
383 return self.hash
385 def __eq__(self, other):
389 if self._crasher is not None and self._crasher.error_on_eq:
392 if self.error_on_eq_to is not None and self.error_on_eq_to is other:
393 raise ValueError(f'cannot compare {self!r} to {other!r}')
394 if other.error_on_eq_to is not None and other.error_on_eq_to is self:
395 raise ValueError(f'cannot compare {other!r} to {self!r}')
397 return (self.name, self.hash) == (other.name, other.hash)
401 def __hash__(self):
406 def __eq__(self, other):
413 def __init__(self, *, error_on_hash=False, error_on_eq=False):
414 self.error_on_hash = error_on_hash
415 self.error_on_eq = error_on_eq
417 def __enter__(self):
420 HashKey._crasher = self
422 def __exit__(self, *exc):
437 def test_hashkey_helper_1(self):
441 self.assertNotEqual(k1, k2)
442 self.assertEqual(hash(k1), hash(k2))
448 self.assertEqual(d[k1], 'a')
449 self.assertEqual(d[k2], 'b')
451 def test_hamt_basics_1(self):
455 def test_hamt_basics_2(self):
457 self.assertEqual(len(h), 0)
460 self.assertIsNot(h, h2)
461 self.assertEqual(len(h), 0)
462 self.assertEqual(len(h2), 1)
464 self.assertIsNone(h.get('a'))
465 self.assertEqual(h.get('a', 42), 42)
467 self.assertEqual(h2.get('a'), 'b')
470 self.assertIsNot(h2, h3)
471 self.assertEqual(len(h), 0)
472 self.assertEqual(len(h2), 1)
473 self.assertEqual(len(h3), 2)
474 self.assertEqual(h3.get('a'), 'b')
475 self.assertEqual(h3.get('b'), 10)
477 self.assertIsNone(h.get('b'))
478 self.assertIsNone(h2.get('b'))
480 self.assertIsNone(h.get('a'))
481 self.assertEqual(h2.get('a'), 'b')
485 def test_hamt_basics_3(self):
490 self.assertIs(h1, h2)
492 def test_hamt_basics_4(self):
496 self.assertIsNot(h1, h2)
497 self.assertEqual(len(h1), 1)
498 self.assertEqual(len(h2), 1)
499 self.assertIsNot(h1.get('key'), h2.get('key'))
501 def test_hamt_collision_1(self):
510 self.assertEqual(h.get(k1), None)
511 self.assertEqual(h.get(k2), None)
513 self.assertEqual(h2.get(k1), 'a')
514 self.assertEqual(h2.get(k2), None)
516 self.assertEqual(h3.get(k1), 'a')
517 self.assertEqual(h3.get(k2), 'b')
522 self.assertEqual(h3.get(k1), 'a')
523 self.assertEqual(h3.get(k2), 'b')
524 self.assertEqual(h4.get(k1), 'a')
525 self.assertEqual(h4.get(k2), 'cc')
526 self.assertEqual(h4.get(k3), None)
527 self.assertEqual(h5.get(k1), 'a')
528 self.assertEqual(h5.get(k2), 'cc')
529 self.assertEqual(h5.get(k2), 'cc')
530 self.assertEqual(h5.get(k3), 'aa')
532 self.assertEqual(len(h), 0)
533 self.assertEqual(len(h2), 1)
534 self.assertEqual(len(h3), 2)
535 self.assertEqual(len(h4), 2)
536 self.assertEqual(len(h5), 3)
538 def test_hamt_collision_3(self):
571 self.assertEqual({k.name for k in h.keys()}, {'C', 'D', 'E'})
573 def test_hamt_stress(self):
589 with self.assertRaises(HashingError):
596 with self.assertRaises(EqError):
600 self.assertEqual(len(d), len(h))
603 self.assertEqual(set(h.items()), set(d.items()))
604 self.assertEqual(len(h.items()), len(d.items()))
606 self.assertEqual(len(h), COLLECTION_SIZE)
609 self.assertEqual(h.get(KeyStr(key), 'not found'), key)
618 with self.assertRaises(HashingError):
623 with self.assertRaises(EqError):
627 self.assertEqual(h.get(key, 'not found'), 'not found')
629 self.assertEqual(len(d), len(h))
636 self.assertEqual(set(h.keys()), set(d.keys()))
637 self.assertEqual(len(h.keys()), len(d.keys()))
639 self.assertEqual(len(d), 0)
640 self.assertEqual(len(h), 0)
645 self.assertEqual(hm.get(str(key)), dm[key])
646 self.assertEqual(len(dm), len(hm))
650 self.assertEqual(hm.get(str(key), 'not found'), 'not found')
652 self.assertEqual(len(d), len(h))
655 self.assertEqual(set(h.values()), set(d.values()))
656 self.assertEqual(len(h.values()), len(d.values()))
658 self.assertEqual(len(d), 0)
659 self.assertEqual(len(h), 0)
660 self.assertEqual(list(h.items()), [])
662 def test_hamt_delete_1(self):
689 self.assertEqual(len(h), orig_len - 1)
691 with self.assertRaisesRegex(ValueError, 'cannot compare'):
695 self.assertEqual(len(h), orig_len - 2)
698 self.assertIs(h2, h)
701 self.assertEqual(len(h), orig_len - 3)
703 self.assertEqual(h.get(A, 42), 42)
704 self.assertEqual(h.get(B), 'b')
705 self.assertEqual(h.get(E), 'e')
707 def test_hamt_delete_2(self):
735 with self.assertRaisesRegex(ValueError, 'cannot compare'):
739 self.assertEqual(len(h), orig_len)
742 self.assertEqual(len(h), orig_len - 1)
745 self.assertEqual(len(h), orig_len - 2)
748 self.assertEqual(len(h), orig_len - 3)
750 self.assertEqual(h.get(D), 'd')
751 self.assertEqual(h.get(E), 'e')
757 self.assertEqual(len(h), 0)
759 def test_hamt_delete_3(self):
787 self.assertEqual(len(h), orig_len - 1)
790 self.assertEqual(len(h), orig_len - 2)
792 self.assertEqual(h.get(C), 'c')
793 self.assertEqual(h.get(B), 'b')
795 def test_hamt_delete_4(self):
823 self.assertEqual(len(h), orig_len - 1)
826 self.assertEqual(len(h), orig_len - 2)
829 self.assertEqual(len(h), orig_len - 3)
832 self.assertEqual(len(h), orig_len - 4)
835 self.assertEqual(len(h), 0)
837 def test_hamt_delete_5(self):
867 self.assertEqual(len(h), 18)
870 self.assertEqual(len(h), 17)
873 self.assertEqual(len(h), 16)
875 self.assertEqual(len(h), 15)
878 self.assertEqual(len(h), 14)
880 self.assertEqual(len(h), 14)
884 self.assertEqual(len(h), 0)
886 def test_hamt_items_1(self):
903 self.assertEqual(
907 def test_hamt_items_2(self):
924 self.assertEqual(
928 def test_hamt_keys_1(self):
944 self.assertEqual(set(list(h.keys())), {A, B, C, D, E, F})
945 self.assertEqual(set(list(h)), {A, B, C, D, E, F})
947 def test_hamt_items_3(self):
949 self.assertEqual(len(h.items()), 0)
950 self.assertEqual(list(h.items()), [])
952 def test_hamt_eq_1(self):
968 self.assertFalse(h1 == h2)
969 self.assertTrue(h1 != h2)
972 self.assertFalse(h1 == h2)
973 self.assertTrue(h1 != h2)
976 self.assertFalse(h1 == h2)
977 self.assertTrue(h1 != h2)
980 self.assertFalse(h1 == h2)
981 self.assertTrue(h1 != h2)
984 self.assertTrue(h1 == h2)
985 self.assertFalse(h1 != h2)
988 self.assertFalse(h1 == h2)
989 self.assertTrue(h1 != h2)
992 self.assertFalse(h1 == h2)
993 self.assertTrue(h1 != h2)
996 self.assertFalse(h1 == h2)
997 self.assertTrue(h1 != h2)
999 def test_hamt_eq_2(self):
1009 with self.assertRaisesRegex(ValueError, 'cannot compare'):
1012 with self.assertRaisesRegex(ValueError, 'cannot compare'):
1015 def test_hamt_gc_1(self):
1036 self.assertIsNone(ref())
1038 def test_hamt_gc_2(self):
1056 self.assertIsNone(ref())
1058 def test_hamt_in_1(self):
1067 self.assertTrue(A in h)
1068 self.assertFalse(B in h)
1070 with self.assertRaises(EqError):
1074 with self.assertRaises(HashingError):
1078 def test_hamt_getitem_1(self):
1087 self.assertEqual(h[A], 1)
1088 self.assertEqual(h[AA], 1)
1090 with self.assertRaises(KeyError):
1093 with self.assertRaises(EqError):
1097 with self.assertRaises(HashingError):