@@ -509,11 +509,6 @@ def test_ctor(self):
509
509
d = self .make_dict (k1 = 'v1' )
510
510
self .assertEqual ('v1' , d ['K1' ])
511
511
512
- def test_add (self ):
513
- d = self .make_dict ()
514
- d .add ('k1' , 'v1' )
515
- self .assertEqual ('v1' , d ['K1' ])
516
-
517
512
def test_setitem (self ):
518
513
d = self .make_dict ()
519
514
d ['k1' ] = 'v1'
@@ -526,6 +521,142 @@ def test_delitem(self):
526
521
del d ['k1' ]
527
522
self .assertNotIn ('K1' , d )
528
523
524
+ def test_copy (self ):
525
+ d1 = self .make_dict (key = 'KEY' , a = 'b' )
526
+
527
+ d2 = d1 .copy ()
528
+ self .assertEqual (d1 , d2 )
529
+ self .assertIsNot (d1 , d2 )
530
+
531
+ def test__repr__ (self ):
532
+ d = self .make_dict ()
533
+ self .assertEqual (str (d ), "<%s {}>" % self .cls .__name__ )
534
+
535
+ d = self .make_dict ([('KEY' , 'one' ), ('KEY' , 'two' )])
536
+
537
+ self .assertEqual (
538
+ str (d ),
539
+ "<%s {'KEY': 'one', 'KEY': 'two'}>" % self .cls .__name__ )
540
+
541
+ def test_add (self ):
542
+ d = self .make_dict ()
543
+
544
+ self .assertEqual (d , {})
545
+ d ['KEY' ] = 'one'
546
+ self .assertEqual (d , {'KEY' : 'one' })
547
+ self .assertEqual (d .getall ('key' ), ['one' ])
548
+
549
+ d ['KEY' ] = 'two'
550
+ self .assertEqual (d , {'KEY' : 'two' })
551
+ self .assertEqual (d .getall ('key' ), ['two' ])
552
+
553
+ d .add ('KEY' , 'one' )
554
+ self .assertEqual (2 , len (d ))
555
+ self .assertEqual (d .getall ('key' ), ['two' , 'one' ])
556
+
557
+ d .add ('FOO' , 'bar' )
558
+ self .assertEqual (3 , len (d ))
559
+ self .assertEqual (d .getall ('foo' ), ['bar' ])
560
+
561
+ def test_extend (self ):
562
+ d = self .make_dict ()
563
+ self .assertEqual (d , {})
564
+
565
+ d .extend ([('KEY' , 'one' ), ('key' , 'two' )], key = 3 , foo = 'bar' )
566
+ self .assertNotEqual (d , {'KEY' : 'one' , 'FOO' : 'bar' })
567
+ self .assertEqual (4 , len (d ))
568
+ itms = d .items (getall = True )
569
+ # we can't guarantee order of kwargs
570
+ self .assertTrue (('KEY' , 'one' ) in itms )
571
+ self .assertTrue (('KEY' , 'two' ) in itms )
572
+ self .assertTrue (('KEY' , 3 ) in itms )
573
+ self .assertTrue (('FOO' , 'bar' ) in itms )
574
+
575
+ other = self .make_dict (bar = 'baz' )
576
+ self .assertEqual (other , {'BAR' : 'baz' })
577
+
578
+ d .extend (other )
579
+ self .assertIn (('BAR' , 'baz' ), d .items (getall = True ))
580
+
581
+ d .extend ({'FOO' : 'moo' })
582
+ self .assertIn (('FOO' , 'moo' ), d .items (getall = True ))
583
+
584
+ d .extend ()
585
+ self .assertEqual (6 , len (d ))
586
+
587
+ with self .assertRaises (TypeError ):
588
+ d .extend ('foo' , 'bar' )
589
+
590
+ def test_clear (self ):
591
+ d = self .make_dict ([('KEY' , 'one' )], key = 'two' , foo = 'bar' )
592
+
593
+ d .clear ()
594
+ self .assertEqual (d , {})
595
+ self .assertEqual (list (d .items ()), [])
596
+
597
+ def test_del (self ):
598
+ d = self .make_dict ([('KEY' , 'one' ), ('key' , 'two' )], foo = 'bar' )
599
+
600
+ del d ['key' ]
601
+ self .assertEqual (d , {'FOO' : 'bar' })
602
+ self .assertEqual (list (d .items ()), [('FOO' , 'bar' )])
603
+
604
+ with self .assertRaises (KeyError ):
605
+ del d ['key' ]
606
+
607
+ def test_set_default (self ):
608
+ d = self .make_dict ([('KEY' , 'one' ), ('key' , 'two' )], foo = 'bar' )
609
+ self .assertEqual ('one' , d .setdefault ('key' , 'three' ))
610
+ self .assertEqual ('three' , d .setdefault ('otherkey' , 'three' ))
611
+ self .assertIn ('otherkey' , d )
612
+ self .assertEqual ('three' , d ['OTHERKEY' ])
613
+
614
+ def test_popitem (self ):
615
+ d = self .make_dict ()
616
+ d .add ('KEY' , 'val1' )
617
+ d .add ('key' , 'val2' )
618
+
619
+ self .assertEqual (('KEY' , 'val1' ), d .popitem ())
620
+ self .assertEqual ([('KEY' , 'val2' )], list (d .items ()))
621
+
622
+ def test_popitem_empty_multidict (self ):
623
+ d = self .make_dict ()
624
+
625
+ with self .assertRaises (KeyError ):
626
+ d .popitem ()
627
+
628
+ def test_pop (self ):
629
+ d = self .make_dict ()
630
+ d .add ('KEY' , 'val1' )
631
+ d .add ('key' , 'val2' )
632
+
633
+ self .assertEqual ('val1' , d .pop ('KEY' ))
634
+ self .assertFalse (d )
635
+
636
+ def test_pop_default (self ):
637
+ d = self .make_dict (other = 'val' )
638
+
639
+ self .assertEqual ('default' , d .pop ('key' , 'default' ))
640
+ self .assertIn ('other' , d )
641
+
642
+ def test_pop_raises (self ):
643
+ d = self .make_dict (other = 'val' )
644
+
645
+ with self .assertRaises (KeyError ):
646
+ d .pop ('key' )
647
+
648
+ self .assertIn ('other' , d )
649
+
650
+ def test_update (self ):
651
+ d = self .make_dict ()
652
+ d .add ('KEY' , 'val1' )
653
+ d .add ('key' , 'val2' )
654
+ d .add ('key2' , 'val3' )
655
+
656
+ d .update (key = 'val' )
657
+
658
+ self .assertEqual ([('KEY2' , 'val3' ), ('KEY' , 'val' )], list (d .items ()))
659
+
529
660
530
661
class TestPyMultiDictProxy (_TestProxy , unittest .TestCase ):
531
662
0 commit comments