@@ -117,6 +117,33 @@ def test_floatasratio(self):
117117 self .assertRaises (OverflowError , float ('-inf' ).as_integer_ratio )
118118 self .assertRaises (ValueError , float ('nan' ).as_integer_ratio )
119119
120+ def test_float_containment (self ):
121+ floats = (INF , - INF , 0.0 , 1.0 , NAN )
122+ for f in floats :
123+ self .assert_ (f in [f ], "'%r' not in []" % f )
124+ self .assert_ (f in (f ,), "'%r' not in ()" % f )
125+ self .assert_ (f in {f }, "'%r' not in set()" % f )
126+ self .assert_ (f in {f : None }, "'%r' not in {}" % f )
127+ self .assertEqual ([f ].count (f ), 1 , "[].count('%r') != 1" % f )
128+ self .assert_ (f in floats , "'%r' not in container" % f )
129+
130+ for f in floats :
131+ # nonidentical containers, same type, same contents
132+ self .assert_ ([f ] == [f ], "[%r] != [%r]" % (f , f ))
133+ self .assert_ ((f ,) == (f ,), "(%r,) != (%r,)" % (f , f ))
134+ self .assert_ ({f } == {f }, "{%r} != {%r}" % (f , f ))
135+ self .assert_ ({f : None } == {f : None }, "{%r : None} != "
136+ "{%r : None}" % (f , f ))
137+
138+ # identical containers
139+ l , t , s , d = [f ], (f ,), {f }, {f : None }
140+ self .assert_ (l == l , "[%r] not equal to itself" % f )
141+ self .assert_ (t == t , "(%r,) not equal to itself" % f )
142+ self .assert_ (s == s , "{%r} not equal to itself" % f )
143+ self .assert_ (d == d , "{%r : None} not equal to itself" % f )
144+
145+
146+
120147class FormatFunctionsTestCase (unittest .TestCase ):
121148
122149 def setUp (self ):
0 commit comments