Lines Matching refs:self
27 def __init__(self, typecode, newarg=None):
28 array.array.__init__(self)
34 def test_array_is_sequence(self):
35 self.assertIsInstance(array.array("B"), collections.abc.MutableSequence)
36 self.assertIsInstance(array.array("B"), collections.abc.Reversible)
38 def test_bad_constructor(self):
39 self.assertRaises(TypeError, array.array)
40 self.assertRaises(TypeError, array.array, spam=42)
41 self.assertRaises(TypeError, array.array, 'xx')
42 self.assertRaises(ValueError, array.array, 'x')
45 def test_disallow_instantiation(self):
48 self, type(iter(my_array)), my_array
52 def test_immutable(self):
54 with self.assertRaises(TypeError):
57 def test_empty(self):
61 self.assertEqual(len(a), 0)
62 self.assertEqual(len(a + a), 0)
63 self.assertEqual(len(a * 3), 0)
65 self.assertEqual(len(a), 0)
98 def test_error(self):
99 self.assertRaises(TypeError, array_reconstructor,
101 self.assertRaises(TypeError, array_reconstructor,
103 self.assertRaises(TypeError, array_reconstructor,
105 self.assertRaises(TypeError, array_reconstructor,
107 self.assertRaises(ValueError, array_reconstructor,
109 self.assertRaises(ValueError, array_reconstructor,
111 self.assertRaises(ValueError, array_reconstructor,
113 self.assertRaises(ValueError, array_reconstructor,
116 def test_numbers(self):
176 self.assertEqual(a, b,
179 def test_unicode(self):
192 self.assertEqual(a, b,
205 def assertEntryEqual(self, entry1, entry2):
206 self.assertEqual(entry1, entry2)
208 def badtypecode(self):
210 return typecodes[(typecodes.index(self.typecode)+1) % len(typecodes)]
212 def test_constructor(self):
213 a = array.array(self.typecode)
214 self.assertEqual(a.typecode, self.typecode)
215 self.assertGreaterEqual(a.itemsize, self.minitemsize)
216 self.assertRaises(TypeError, array.array, self.typecode, None)
218 def test_len(self):
219 a = array.array(self.typecode)
220 a.append(self.example[0])
221 self.assertEqual(len(a), 1)
223 a = array.array(self.typecode, self.example)
224 self.assertEqual(len(a), len(self.example))
226 def test_buffer_info(self):
227 a = array.array(self.typecode, self.example)
228 self.assertRaises(TypeError, a.buffer_info, 42)
230 self.assertIsInstance(bi, tuple)
231 self.assertEqual(len(bi), 2)
232 self.assertIsInstance(bi[0], int)
233 self.assertIsInstance(bi[1], int)
234 self.assertEqual(bi[1], len(a))
236 def test_byteswap(self):
237 if self.typecode == 'u':
240 example = self.example
241 a = array.array(self.typecode, example)
242 self.assertRaises(TypeError, a.byteswap, 42)
244 b = array.array(self.typecode, example)
247 self.assertEqual(a, b)
249 self.assertNotEqual(a, b)
251 self.assertEqual(a, b)
253 def test_copy(self):
255 a = array.array(self.typecode, self.example)
257 self.assertNotEqual(id(a), id(b))
258 self.assertEqual(a, b)
260 def test_deepcopy(self):
262 a = array.array(self.typecode, self.example)
264 self.assertNotEqual(id(a), id(b))
265 self.assertEqual(a, b)
267 def test_reduce_ex(self):
268 a = array.array(self.typecode, self.example)
270 self.assertIs(a.__reduce_ex__(protocol)[0], array.array)
272 self.assertIs(a.__reduce_ex__(protocol)[0], array_reconstructor)
274 def test_pickle(self):
276 a = array.array(self.typecode, self.example)
278 self.assertNotEqual(id(a), id(b))
279 self.assertEqual(a, b)
281 a = ArraySubclass(self.typecode, self.example)
284 self.assertNotEqual(id(a), id(b))
285 self.assertEqual(a, b)
286 self.assertEqual(a.x, b.x)
287 self.assertEqual(type(a), type(b))
289 def test_pickle_for_empty_array(self):
291 a = array.array(self.typecode)
293 self.assertNotEqual(id(a), id(b))
294 self.assertEqual(a, b)
296 a = ArraySubclass(self.typecode)
299 self.assertNotEqual(id(a), id(b))
300 self.assertEqual(a, b)
301 self.assertEqual(a.x, b.x)
302 self.assertEqual(type(a), type(b))
304 def test_iterator_pickle(self):
305 orig = array.array(self.typecode, self.example)
314 self.assertEqual(type(it), type(itorig))
315 self.assertEqual(list(it), data + data2)
322 self.assertEqual(type(it), type(itorig))
323 self.assertEqual(list(it), data[1:] + data2)
331 self.assertEqual(type(it), type(itorig))
332 self.assertEqual(list(it), data2)
335 self.assertRaises(StopIteration, next, itorig)
339 self.assertEqual(list(it), [])
341 def test_exhausted_iterator(self):
342 a = array.array(self.typecode, self.example)
343 self.assertEqual(list(a), list(self.example))
348 a.append(self.outside)
349 self.assertEqual(list(exhit), [])
350 self.assertEqual(list(empit), [self.outside])
351 self.assertEqual(list(a), list(self.example) + [self.outside])
353 def test_reverse_iterator(self):
354 a = array.array(self.typecode, self.example)
355 self.assertEqual(list(a), list(self.example))
356 self.assertEqual(list(reversed(a)), list(iter(a))[::-1])
358 def test_reverse_iterator_picking(self):
359 orig = array.array(self.typecode, self.example)
361 data2 = [self.outside] + data
362 rev_data = data[len(data)-2::-1] + [self.outside]
368 a.insert(0, self.outside)
369 self.assertEqual(type(it), type(itorig))
370 self.assertEqual(list(it), rev_data)
371 self.assertEqual(list(a), data2)
377 a.insert(0, self.outside)
378 self.assertEqual(type(it), type(itorig))
379 self.assertEqual(list(it), rev_data[1:])
380 self.assertEqual(list(a), data2)
387 a.insert(0, self.outside)
388 self.assertEqual(type(it), type(itorig))
389 self.assertEqual(list(it), [])
390 self.assertEqual(list(a), data2)
393 self.assertRaises(StopIteration, next, itorig)
396 a.insert(0, self.outside)
397 self.assertEqual(list(it), [])
398 self.assertEqual(list(a), data2)
400 def test_exhausted_reverse_iterator(self):
401 a = array.array(self.typecode, self.example)
402 self.assertEqual(list(a), list(self.example))
407 a.insert(0, self.outside)
408 self.assertEqual(list(exhit), [])
411 self.assertEqual(list(empit), [])
412 self.assertEqual(list(a), [self.outside] + list(self.example))
414 def test_insert(self):
415 a = array.array(self.typecode, self.example)
416 a.insert(0, self.example[0])
417 self.assertEqual(len(a), 1+len(self.example))
418 self.assertEqual(a[0], a[1])
419 self.assertRaises(TypeError, a.insert)
420 self.assertRaises(TypeError, a.insert, None)
421 self.assertRaises(TypeError, a.insert, 0, None)
423 a = array.array(self.typecode, self.example)
424 a.insert(-1, self.example[0])
425 self.assertEqual(
428 self.typecode,
429 self.example[:-1] + self.example[:1] + self.example[-1:]
433 a = array.array(self.typecode, self.example)
434 a.insert(-1000, self.example[0])
435 self.assertEqual(
437 array.array(self.typecode, self.example[:1] + self.example)
440 a = array.array(self.typecode, self.example)
441 a.insert(1000, self.example[0])
442 self.assertEqual(
444 array.array(self.typecode, self.example + self.example[:1])
447 def test_tofromfile(self):
448 a = array.array(self.typecode, 2*self.example)
449 self.assertRaises(TypeError, a.tofile)
455 b = array.array(self.typecode)
457 self.assertRaises(TypeError, b.fromfile)
458 b.fromfile(f, len(self.example))
459 self.assertEqual(b, array.array(self.typecode, self.example))
460 self.assertNotEqual(a, b)
461 self.assertRaises(EOFError, b.fromfile, f, len(self.example)+1)
462 self.assertEqual(a, b)
469 def test_fromfile_ioerror(self):
472 a = array.array(self.typecode)
475 self.assertRaises(OSError, a.fromfile, f, len(self.example))
480 def test_filewrite(self):
481 a = array.array(self.typecode, 2*self.example)
486 b = array.array(self.typecode)
488 b.fromfile(f, len(self.example))
489 self.assertEqual(b, array.array(self.typecode, self.example))
490 self.assertNotEqual(a, b)
491 b.fromfile(f, len(self.example))
492 self.assertEqual(a, b)
499 def test_tofromlist(self):
500 a = array.array(self.typecode, 2*self.example)
501 b = array.array(self.typecode)
502 self.assertRaises(TypeError, a.tolist, 42)
503 self.assertRaises(TypeError, b.fromlist)
504 self.assertRaises(TypeError, b.fromlist, 42)
505 self.assertRaises(TypeError, b.fromlist, [None])
507 self.assertEqual(a, b)
509 def test_tofrombytes(self):
510 a = array.array(self.typecode, 2*self.example)
511 b = array.array(self.typecode)
512 self.assertRaises(TypeError, a.tobytes, 42)
513 self.assertRaises(TypeError, b.frombytes)
514 self.assertRaises(TypeError, b.frombytes, 42)
516 c = array.array(self.typecode, bytearray(a.tobytes()))
517 self.assertEqual(a, b)
518 self.assertEqual(a, c)
520 self.assertRaises(ValueError, b.frombytes, b"x")
522 def test_fromarray(self):
523 a = array.array(self.typecode, self.example)
524 b = array.array(self.typecode, a)
525 self.assertEqual(a, b)
527 def test_repr(self):
528 a = array.array(self.typecode, 2*self.example)
529 self.assertEqual(a, eval(repr(a), {"array": array.array}))
531 a = array.array(self.typecode)
532 self.assertEqual(repr(a), "array('%s')" % self.typecode)
534 def test_str(self):
535 a = array.array(self.typecode, 2*self.example)
538 def test_cmp(self):
539 a = array.array(self.typecode, self.example)
540 self.assertIs(a == 42, False)
541 self.assertIs(a != 42, True)
543 self.assertIs(a == a, True)
544 self.assertIs(a != a, False)
545 self.assertIs(a < a, False)
546 self.assertIs(a <= a, True)
547 self.assertIs(a > a, False)
548 self.assertIs(a >= a, True)
550 al = array.array(self.typecode, self.smallerexample)
551 ab = array.array(self.typecode, self.biggerexample)
553 self.assertIs(a == 2*a, False)
554 self.assertIs(a != 2*a, True)
555 self.assertIs(a < 2*a, True)
556 self.assertIs(a <= 2*a, True)
557 self.assertIs(a > 2*a, False)
558 self.assertIs(a >= 2*a, False)
560 self.assertIs(a == al, False)
561 self.assertIs(a != al, True)
562 self.assertIs(a < al, False)
563 self.assertIs(a <= al, False)
564 self.assertIs(a > al, True)
565 self.assertIs(a >= al, True)
567 self.assertIs(a == ab, False)
568 self.assertIs(a != ab, True)
569 self.assertIs(a < ab, True)
570 self.assertIs(a <= ab, True)
571 self.assertIs(a > ab, False)
572 self.assertIs(a >= ab, False)
574 def test_add(self):
575 a = array.array(self.typecode, self.example) \
576 + array.array(self.typecode, self.example[::-1])
577 self.assertEqual(
579 array.array(self.typecode, self.example + self.example[::-1])
582 b = array.array(self.badtypecode())
583 self.assertRaises(TypeError, a.__add__, b)
585 self.assertRaises(TypeError, a.__add__, "bad")
587 def test_iadd(self):
588 a = array.array(self.typecode, self.example[::-1])
590 a += array.array(self.typecode, 2*self.example)
591 self.assertIs(a, b)
592 self.assertEqual(
594 array.array(self.typecode, self.example[::-1]+2*self.example)
596 a = array.array(self.typecode, self.example)
598 self.assertEqual(
600 array.array(self.typecode, self.example + self.example)
603 b = array.array(self.badtypecode())
604 self.assertRaises(TypeError, a.__add__, b)
606 self.assertRaises(TypeError, a.__iadd__, "bad")
608 def test_mul(self):
609 a = 5*array.array(self.typecode, self.example)
610 self.assertEqual(
612 array.array(self.typecode, 5*self.example)
615 a = array.array(self.typecode, self.example)*5
616 self.assertEqual(
618 array.array(self.typecode, self.example*5)
621 a = 0*array.array(self.typecode, self.example)
622 self.assertEqual(
624 array.array(self.typecode)
627 a = (-1)*array.array(self.typecode, self.example)
628 self.assertEqual(
630 array.array(self.typecode)
633 a = 5 * array.array(self.typecode, self.example[:1])
634 self.assertEqual(
636 array.array(self.typecode, [a[0]] * 5)
639 self.assertRaises(TypeError, a.__mul__, "bad")
641 def test_imul(self):
642 a = array.array(self.typecode, self.example)
646 self.assertIs(a, b)
647 self.assertEqual(
649 array.array(self.typecode, 5*self.example)
653 self.assertIs(a, b)
654 self.assertEqual(a, array.array(self.typecode))
657 self.assertIs(a, b)
658 self.assertEqual(a, array.array(self.typecode))
661 self.assertIs(a, b)
662 self.assertEqual(a, array.array(self.typecode))
664 a = array.array(self.typecode, self.example)
666 self.assertEqual(a, array.array(self.typecode))
668 self.assertRaises(TypeError, a.__imul__, "bad")
670 def test_getitem(self):
671 a = array.array(self.typecode, self.example)
672 self.assertEntryEqual(a[0], self.example[0])
673 self.assertEntryEqual(a[0], self.example[0])
674 self.assertEntryEqual(a[-1], self.example[-1])
675 self.assertEntryEqual(a[-1], self.example[-1])
676 self.assertEntryEqual(a[len(self.example)-1], self.example[-1])
677 self.assertEntryEqual(a[-len(self.example)], self.example[0])
678 self.assertRaises(TypeError, a.__getitem__)
679 self.assertRaises(IndexError, a.__getitem__, len(self.example))
680 self.assertRaises(IndexError, a.__getitem__, -len(self.example)-1)
682 def test_setitem(self):
683 a = array.array(self.typecode, self.example)
685 self.assertEntryEqual(a[0], a[-1])
687 a = array.array(self.typecode, self.example)
689 self.assertEntryEqual(a[0], a[-1])
691 a = array.array(self.typecode, self.example)
693 self.assertEntryEqual(a[0], a[-1])
695 a = array.array(self.typecode, self.example)
697 self.assertEntryEqual(a[0], a[-1])
699 a = array.array(self.typecode, self.example)
700 a[len(self.example)-1] = a[0]
701 self.assertEntryEqual(a[0], a[-1])
703 a = array.array(self.typecode, self.example)
704 a[-len(self.example)] = a[-1]
705 self.assertEntryEqual(a[0], a[-1])
707 self.assertRaises(TypeError, a.__setitem__)
708 self.assertRaises(TypeError, a.__setitem__, None)
709 self.assertRaises(TypeError, a.__setitem__, 0, None)
710 self.assertRaises(
713 len(self.example), self.example[0]
715 self.assertRaises(
718 -len(self.example)-1, self.example[0]
721 def test_delitem(self):
722 a = array.array(self.typecode, self.example)
724 self.assertEqual(
726 array.array(self.typecode, self.example[1:])
729 a = array.array(self.typecode, self.example)
731 self.assertEqual(
733 array.array(self.typecode, self.example[:-1])
736 a = array.array(self.typecode, self.example)
737 del a[len(self.example)-1]
738 self.assertEqual(
740 array.array(self.typecode, self.example[:-1])
743 a = array.array(self.typecode, self.example)
744 del a[-len(self.example)]
745 self.assertEqual(
747 array.array(self.typecode, self.example[1:])
750 self.assertRaises(TypeError, a.__delitem__)
751 self.assertRaises(TypeError, a.__delitem__, None)
752 self.assertRaises(IndexError, a.__delitem__, len(self.example))
753 self.assertRaises(IndexError, a.__delitem__, -len(self.example)-1)
755 def test_getslice(self):
756 a = array.array(self.typecode, self.example)
757 self.assertEqual(a[:], a)
759 self.assertEqual(
761 array.array(self.typecode, self.example[1:])
764 self.assertEqual(
766 array.array(self.typecode, self.example[:1])
769 self.assertEqual(
771 array.array(self.typecode, self.example[:-1])
774 self.assertEqual(
776 array.array(self.typecode, self.example[-1:])
779 self.assertEqual(
781 array.array(self.typecode)
784 self.assertEqual(
786 array.array(self.typecode)
789 self.assertEqual(
791 array.array(self.typecode)
793 self.assertEqual(a[-1000:], a)
794 self.assertEqual(a[:1000], a)
795 self.assertEqual(
797 array.array(self.typecode)
799 self.assertEqual(a[-1000:1000], a)
800 self.assertEqual(
802 array.array(self.typecode)
805 def test_extended_getslice(self):
808 a = array.array(self.typecode, self.example)
814 self.assertEqual(list(a[start:stop:step]),
817 def test_setslice(self):
818 a = array.array(self.typecode, self.example)
820 self.assertEqual(
822 array.array(self.typecode, self.example + self.example[1:])
825 a = array.array(self.typecode, self.example)
827 self.assertEqual(
829 array.array(self.typecode, self.example + self.example[-1:])
832 a = array.array(self.typecode, self.example)
834 self.assertEqual(
836 array.array(self.typecode, self.example[:-1] + self.example)
839 a = array.array(self.typecode, self.example)
841 self.assertEqual(
843 array.array(self.typecode, self.example[:1] + self.example)
846 a = array.array(self.typecode, self.example)
848 self.assertEqual(
851 self.typecode,
852 self.example[:1] + self.example + self.example[-1:]
856 a = array.array(self.typecode, self.example)
858 self.assertEqual(
860 array.array(self.typecode, 2*self.example)
863 a = array.array(self.typecode, self.example)
865 self.assertEqual(
867 array.array(self.typecode, self.example)
870 a = array.array(self.typecode, self.example)
872 self.assertEqual(
874 array.array(self.typecode, self.example)
877 a = array.array(self.typecode, self.example)
879 self.assertEqual(
881 array.array(self.typecode, 2*self.example)
884 a = array.array(self.typecode, self.example)
886 self.assertEqual(
888 array.array(self.typecode, self.example[:1] + self.example + self.example[1:])
891 a = array.array(self.typecode, self.example)
893 self.assertEqual(
895 array.array(self.typecode, 2*self.example)
898 a = array.array(self.typecode, self.example)
899 self.assertRaises(TypeError, a.__setitem__, slice(0, 0), None)
900 self.assertRaises(TypeError, a.__setitem__, slice(0, 1), None)
902 b = array.array(self.badtypecode())
903 self.assertRaises(TypeError, a.__setitem__, slice(0, 0), b)
904 self.assertRaises(TypeError, a.__setitem__, slice(0, 1), b)
906 def test_extended_set_del_slice(self):
912 a = array.array(self.typecode, self.example)
919 a[start:stop:step] = array.array(self.typecode, data)
920 self.assertEqual(a, array.array(self.typecode, L))
924 self.assertEqual(a, array.array(self.typecode, L))
926 def test_index(self):
927 example = 2*self.example
928 a = array.array(self.typecode, example)
929 self.assertRaises(TypeError, a.index)
931 self.assertEqual(a.index(x), example.index(x))
932 self.assertRaises(ValueError, a.index, None)
933 self.assertRaises(ValueError, a.index, self.outside)
936 self.assertEqual(a.index(0), 2)
937 self.assertEqual(a.index(0, 2), 2)
938 self.assertEqual(a.index(0, -4), 2)
939 self.assertEqual(a.index(-2, -10), 0)
940 self.assertEqual(a.index(0, 3), 3)
941 self.assertEqual(a.index(0, -3), 3)
942 self.assertEqual(a.index(0, 3, 4), 3)
943 self.assertEqual(a.index(0, -3, -2), 3)
944 self.assertRaises(ValueError, a.index, 2, 0, -10)
946 def test_count(self):
947 example = 2*self.example
948 a = array.array(self.typecode, example)
949 self.assertRaises(TypeError, a.count)
951 self.assertEqual(a.count(x), example.count(x))
952 self.assertEqual(a.count(self.outside), 0)
953 self.assertEqual(a.count(None), 0)
955 def test_remove(self):
956 for x in self.example:
957 example = 2*self.example
958 a = array.array(self.typecode, example)
962 self.assertEqual(a, array.array(self.typecode, example2))
964 a = array.array(self.typecode, self.example)
965 self.assertRaises(ValueError, a.remove, self.outside)
967 self.assertRaises(ValueError, a.remove, None)
969 def test_pop(self):
970 a = array.array(self.typecode)
971 self.assertRaises(IndexError, a.pop)
973 a = array.array(self.typecode, 2*self.example)
974 self.assertRaises(TypeError, a.pop, 42, 42)
975 self.assertRaises(TypeError, a.pop, None)
976 self.assertRaises(IndexError, a.pop, len(a))
977 self.assertRaises(IndexError, a.pop, -len(a)-1)
979 self.assertEntryEqual(a.pop(0), self.example[0])
980 self.assertEqual(
982 array.array(self.typecode, self.example[1:]+self.example)
984 self.assertEntryEqual(a.pop(1), self.example[2])
985 self.assertEqual(
987 array.array(self.typecode, self.example[1:2]+self.example[3:]+self.example)
989 self.assertEntryEqual(a.pop(0), self.example[1])
990 self.assertEntryEqual(a.pop(), self.example[-1])
991 self.assertEqual(
993 array.array(self.typecode, self.example[3:]+self.example[:-1])
996 def test_reverse(self):
997 a = array.array(self.typecode, self.example)
998 self.assertRaises(TypeError, a.reverse, 42)
1000 self.assertEqual(
1002 array.array(self.typecode, self.example[::-1])
1005 def test_extend(self):
1006 a = array.array(self.typecode, self.example)
1007 self.assertRaises(TypeError, a.extend)
1008 a.extend(array.array(self.typecode, self.example[::-1]))
1009 self.assertEqual(
1011 array.array(self.typecode, self.example+self.example[::-1])
1014 a = array.array(self.typecode, self.example)
1016 self.assertEqual(
1018 array.array(self.typecode, self.example+self.example)
1021 b = array.array(self.badtypecode())
1022 self.assertRaises(TypeError, a.extend, b)
1024 a = array.array(self.typecode, self.example)
1025 a.extend(self.example[::-1])
1026 self.assertEqual(
1028 array.array(self.typecode, self.example+self.example[::-1])
1031 def test_constructor_with_iterable_argument(self):
1032 a = array.array(self.typecode, iter(self.example))
1033 b = array.array(self.typecode, self.example)
1034 self.assertEqual(a, b)
1037 self.assertRaises(TypeError, array.array, self.typecode, 10)
1041 def __iter__(self):
1043 self.assertRaises(UnicodeError, array.array, self.typecode, A())
1049 self.assertRaises(UnicodeError, array.array, self.typecode, B())
1051 def test_coveritertraverse(self):
1055 self.skipTest('gc module not available')
1056 a = array.array(self.typecode)
1061 def test_buffer(self):
1062 a = array.array(self.typecode, self.example)
1065 self.assertEqual(a.tobytes(), expected)
1066 self.assertEqual(a.tobytes()[0], expected[0])
1070 self.assertRaises(BufferError, a.append, a[0])
1071 self.assertEqual(m.tobytes(), expected)
1072 self.assertRaises(BufferError, a.extend, a[0:1])
1073 self.assertEqual(m.tobytes(), expected)
1074 self.assertRaises(BufferError, a.remove, a[0])
1075 self.assertEqual(m.tobytes(), expected)
1076 self.assertRaises(BufferError, a.pop, 0)
1077 self.assertEqual(m.tobytes(), expected)
1078 self.assertRaises(BufferError, a.fromlist, a.tolist())
1079 self.assertEqual(m.tobytes(), expected)
1080 self.assertRaises(BufferError, a.frombytes, a.tobytes())
1081 self.assertEqual(m.tobytes(), expected)
1082 if self.typecode == 'u':
1083 self.assertRaises(BufferError, a.fromunicode, a.tounicode())
1084 self.assertEqual(m.tobytes(), expected)
1085 self.assertRaises(BufferError, operator.imul, a, 2)
1086 self.assertEqual(m.tobytes(), expected)
1087 self.assertRaises(BufferError, operator.imul, a, 0)
1088 self.assertEqual(m.tobytes(), expected)
1089 self.assertRaises(BufferError, operator.setitem, a, slice(0, 0), a)
1090 self.assertEqual(m.tobytes(), expected)
1091 self.assertRaises(BufferError, operator.delitem, a, 0)
1092 self.assertEqual(m.tobytes(), expected)
1093 self.assertRaises(BufferError, operator.delitem, a, slice(0, 1))
1094 self.assertEqual(m.tobytes(), expected)
1096 def test_weakref(self):
1097 s = array.array(self.typecode, self.example)
1099 self.assertEqual(p.tobytes(), s.tobytes())
1102 self.assertRaises(ReferenceError, len, p)
1106 def test_bug_782369(self):
1112 self.assertEqual(rc, sys.getrefcount(10))
1114 def test_subclass_with_kwargs(self):
1118 def test_create_from_bytes(self):
1120 # generalized to use self.typecode.
1122 self.assertEqual(len(a) * a.itemsize, 4)
1125 def test_sizeof_with_buffer(self):
1126 a = array.array(self.typecode, self.example)
1129 support.check_sizeof(self, a, basesize + buffer_size)
1132 def test_sizeof_without_buffer(self):
1133 a = array.array(self.typecode)
1135 support.check_sizeof(self, a, basesize)
1137 def test_initialize_with_unicode(self):
1138 if self.typecode != 'u':
1139 with self.assertRaises(TypeError) as cm:
1140 a = array.array(self.typecode, 'foo')
1141 self.assertIn("cannot use a str", str(cm.exception))
1142 with self.assertRaises(TypeError) as cm:
1143 a = array.array(self.typecode, array.array('u', 'foo'))
1144 self.assertIn("cannot use a unicode array", str(cm.exception))
1146 a = array.array(self.typecode, "foo")
1147 a = array.array(self.typecode, array.array('u', 'foo'))
1150 def test_obsolete_write_lock(self):
1153 self.assertRaises(BufferError, _testcapi.getbuffer_with_null_view, a)
1155 def test_free_after_iterating(self):
1156 support.check_free_after_iterating(self, iter, array.array,
1157 (self.typecode,))
1158 support.check_free_after_iterating(self, reversed, array.array,
1159 (self.typecode,))
1163 def test_setitem(self):
1165 a = array.array(self.typecode, self.example)
1166 self.assertRaises(TypeError, a.__setitem__, 0, self.example[:2])
1176 def test_unicode(self):
1177 self.assertRaises(TypeError, array.array, 'b', 'foo')
1185 self.assertEqual(s, '\xa0\xc2\u1234 \x11abc\xff\u1234')
1186 self.assertEqual(a.itemsize, sizeof_wchar)
1190 self.assertEqual(
1194 self.assertRaises(TypeError, a.fromunicode)
1196 def test_issue17223(self):
1203 self.skipTest("specific to 32-bit wchar_t")
1205 self.assertRaises(ValueError, a.tounicode)
1206 self.assertRaises(ValueError, str, a)
1210 def test_extslice(self):
1211 a = array.array(self.typecode, range(5))
1212 self.assertEqual(a[::], a)
1213 self.assertEqual(a[::2], array.array(self.typecode, [0,2,4]))
1214 self.assertEqual(a[1::2], array.array(self.typecode, [1,3]))
1215 self.assertEqual(a[::-1], array.array(self.typecode, [4,3,2,1,0]))
1216 self.assertEqual(a[::-2], array.array(self.typecode, [4,2,0]))
1217 self.assertEqual(a[3::-2], array.array(self.typecode, [3,1]))
1218 self.assertEqual(a[-100:100:], a)
1219 self.assertEqual(a[100:-100:-1], a[::-1])
1220 self.assertEqual(a[-100:100:2], array.array(self.typecode, [0,2,4]))
1221 self.assertEqual(a[1000:2000:2], array.array(self.typecode, []))
1222 self.assertEqual(a[-1000:-2000:-2], array.array(self.typecode, []))
1224 def test_delslice(self):
1225 a = array.array(self.typecode, range(5))
1227 self.assertEqual(a, array.array(self.typecode, [1,3]))
1228 a = array.array(self.typecode, range(5))
1230 self.assertEqual(a, array.array(self.typecode, [0,2,4]))
1231 a = array.array(self.typecode, range(5))
1233 self.assertEqual(a, array.array(self.typecode, [0,2,3,4]))
1234 a = array.array(self.typecode, range(10))
1236 self.assertEqual(a, array.array(self.typecode, [1,2,3,4,5,6,7,8,9]))
1238 a = array.array(self.typecode, range(10))
1241 def test_assignment(self):
1242 a = array.array(self.typecode, range(10))
1243 a[::2] = array.array(self.typecode, [42]*5)
1244 self.assertEqual(a, array.array(self.typecode, [42, 1, 42, 3, 42, 5, 42, 7, 42, 9]))
1245 a = array.array(self.typecode, range(10))
1246 a[::-4] = array.array(self.typecode, [10]*3)
1247 self.assertEqual(a, array.array(self.typecode, [0, 10, 2, 3, 4, 10, 6, 7, 8 ,10]))
1248 a = array.array(self.typecode, range(4))
1250 self.assertEqual(a, array.array(self.typecode, [3, 2, 1, 0]))
1251 a = array.array(self.typecode, range(10))
1254 ins = array.array(self.typecode, range(2))
1259 def test_iterationcontains(self):
1260 a = array.array(self.typecode, range(10))
1261 self.assertEqual(list(a), list(range(10)))
1262 b = array.array(self.typecode, [20])
1263 self.assertEqual(a[-1] in a, True)
1264 self.assertEqual(b[0] not in a, True)
1266 def check_overflow(self, lower, upper):
1270 a = array.array(self.typecode, [lower])
1273 self.assertRaises(OverflowError, array.array, self.typecode, [lower-1])
1274 self.assertRaises(OverflowError, a.__setitem__, 0, lower-1)
1276 a = array.array(self.typecode, [upper])
1279 self.assertRaises(OverflowError, array.array, self.typecode, [upper+1])
1280 self.assertRaises(OverflowError, a.__setitem__, 0, upper+1)
1282 def test_subclassing(self):
1283 typecode = self.typecode
1290 def __init__(self, typecode, data, offset):
1291 self.offset = offset
1293 def __getitem__(self, i):
1294 return array.array.__getitem__(self, i) + self.offset
1296 a = ExaggeratingArray(self.typecode, [3, 6, 7, 11], 4)
1297 self.assertEntryEqual(a[0], 7)
1299 self.assertRaises(AttributeError, setattr, a, "color", "blue")
1301 def test_frombytearray(self):
1303 b = array.array(self.typecode, a)
1304 self.assertEqual(a, b)
1307 def test_type_error(self):
1308 a = array.array(self.typecode)
1310 with self.assertRaises(TypeError):
1312 with self.assertRaises(TypeError):
1316 def __init__(self, num):
1317 self._num = num
1318 def __index__(self):
1319 return self._num
1320 def __int__(self):
1321 return self._num
1322 def __sub__(self, other):
1323 return Intable(int(self) - int(other))
1324 def __add__(self, other):
1325 return Intable(int(self) + int(other))
1333 def test_overflow(self):
1334 a = array.array(self.typecode)
1337 self.check_overflow(lower, upper)
1338 self.check_overflow(Intable(lower), Intable(upper))
1346 def test_overflow(self):
1347 a = array.array(self.typecode)
1350 self.check_overflow(lower, upper)
1351 self.check_overflow(Intable(lower), Intable(upper))
1353 def test_bytes_extend(self):
1354 s = bytes(self.example)
1356 a = array.array(self.typecode, self.example)
1358 self.assertEqual(
1360 array.array(self.typecode, self.example+self.example)
1363 a = array.array(self.typecode, self.example)
1365 self.assertEqual(
1367 array.array(self.typecode, self.example+self.example[::-1])
1417 def assertEntryEqual(self, entry1, entry2):
1418 self.assertAlmostEqual(entry1, entry2)
1420 def test_nan(self):
1421 a = array.array(self.typecode, [float('nan')])
1422 b = array.array(self.typecode, [float('nan')])
1423 self.assertIs(a != b, True)
1424 self.assertIs(a == b, False)
1425 self.assertIs(a > b, False)
1426 self.assertIs(a >= b, False)
1427 self.assertIs(a < b, False)
1428 self.assertIs(a <= b, False)
1430 def test_byteswap(self):
1431 a = array.array(self.typecode, self.example)
1432 self.assertRaises(TypeError, a.byteswap, 42)
1434 b = array.array(self.typecode, self.example)
1437 self.assertEqual(a, b)
1442 self.assertNotEqual(a.tobytes(), b.tobytes())
1444 self.assertEqual(a, b)
1454 def test_alloc_overflow(self):
1462 self.fail("Array of size > maxsize created - MemoryError expected")
1469 self.fail("Array of size > maxsize created - MemoryError expected")
1475 def example(self, size):
1477 base = array.array(self.typecode, [0, 1, 2, 3, 4, 5, 6, 7]) * (size // 8)
1478 base += array.array(self.typecode, [99]*(size % 8) + [8, 9, 10, 11])
1482 def test_example_data(self, size):
1483 example = self.example(size)
1484 self.assertEqual(len(example), size+4)
1487 def test_access(self, size):
1488 example = self.example(size)
1489 self.assertEqual(example[0], 0)
1490 self.assertEqual(example[-(size+4)], 0)
1491 self.assertEqual(example[size], 8)
1492 self.assertEqual(example[-4], 8)
1493 self.assertEqual(example[size+3], 11)
1494 self.assertEqual(example[-1], 11)
1497 def test_slice(self, size):
1498 example = self.example(size)
1499 self.assertEqual(list(example[:4]), [0, 1, 2, 3])
1500 self.assertEqual(list(example[-4:]), [8, 9, 10, 11])
1502 self.assertEqual(len(part), size+2)
1503 self.assertEqual(part[0], 1)
1504 self.assertEqual(part[-1], 10)
1507 self.assertEqual(len(part), (size+5)//2)
1508 self.assertEqual(list(part[:4]), [0, 2, 4, 6])
1510 self.assertEqual(list(part[-2:]), [9, 11])
1512 self.assertEqual(list(part[-2:]), [8, 10])
1515 def test_count(self, size):
1516 example = self.example(size)
1517 self.assertEqual(example.count(0), size//8)
1518 self.assertEqual(example.count(11), 1)
1521 def test_append(self, size):
1522 example = self.example(size)
1524 self.assertEqual(example[-1], 12)
1527 def test_extend(self, size):
1528 example = self.example(size)
1530 self.assertEqual(len(example), size+8)
1531 self.assertEqual(list(example[-8:]), [8, 9, 10, 11, 12, 13, 14, 15])
1534 def test_frombytes(self, size):
1535 example = self.example(size)
1537 self.assertEqual(len(example), size+8)
1538 self.assertEqual(list(example[-8:]), [8, 9, 10, 11] + list(b'abcd'))
1541 def test_fromlist(self, size):
1542 example = self.example(size)
1544 self.assertEqual(len(example), size+8)
1545 self.assertEqual(list(example[-8:]), [8, 9, 10, 11, 12, 13, 14, 15])
1548 def test_index(self, size):
1549 example = self.example(size)
1550 self.assertEqual(example.index(0), 0)
1551 self.assertEqual(example.index(1), 1)
1552 self.assertEqual(example.index(7), 7)
1553 self.assertEqual(example.index(11), size+3)
1556 def test_insert(self, size):
1557 example = self.example(size)
1561 self.assertEqual(len(example), size+7)
1562 self.assertEqual(example[0], 12)
1563 self.assertEqual(example[10], 13)
1564 self.assertEqual(example[size+1], 14)
1567 def test_pop(self, size):
1568 example = self.example(size)
1569 self.assertEqual(example.pop(0), 0)
1570 self.assertEqual(example[0], 1)
1571 self.assertEqual(example.pop(size+1), 10)
1572 self.assertEqual(example[size+1], 11)
1573 self.assertEqual(example.pop(1), 2)
1574 self.assertEqual(example[1], 3)
1575 self.assertEqual(len(example), size+1)
1576 self.assertEqual(example.pop(), 11)
1577 self.assertEqual(len(example), size)
1580 def test_remove(self, size):
1581 example = self.example(size)
1583 self.assertEqual(len(example), size+3)
1584 self.assertEqual(example[0], 1)
1586 self.assertEqual(len(example), size+2)
1587 self.assertEqual(example[size], 9)
1588 self.assertEqual(example[size+1], 11)
1591 def test_reverse(self, size):
1592 example = self.example(size)
1594 self.assertEqual(len(example), size+4)
1595 self.assertEqual(example[0], 11)
1596 self.assertEqual(example[3], 8)
1597 self.assertEqual(example[-1], 0)
1599 self.assertEqual(len(example), size+4)
1600 self.assertEqual(list(example[:4]), [0, 1, 2, 3])
1601 self.assertEqual(list(example[-4:]), [8, 9, 10, 11])
1605 def test_tolist(self, size):
1606 example = self.example(size)
1608 self.assertEqual(len(ls), len(example))
1609 self.assertEqual(ls[:8], list(example[:8]))
1610 self.assertEqual(ls[-8:], list(example[-8:]))