@@ -114,6 +114,105 @@ def _run() -> None:
114114 repr (md .keys ())
115115
116116
117+ def test_items_view_equals (benchmark : BenchmarkFixture , any_multidict_class : Type [MultiDict [str ]]) -> None :
118+ md1 : MultiDict [str ] = any_multidict_class ({str (i ): str (i ) for i in range (100 )})
119+ md2 : MultiDict [str ] = any_multidict_class ({str (i ): str (i ) for i in range (100 )})
120+
121+ @benchmark
122+ def _run () -> None :
123+ assert md1 .items () == md2 .items ()
124+
125+
126+ def test_items_view_not_equals (benchmark : BenchmarkFixture , any_multidict_class : Type [MultiDict [str ]]) -> None :
127+ md1 : MultiDict [str ] = any_multidict_class ({str (i ): str (i ) for i in range (100 )})
128+ md2 : MultiDict [str ] = any_multidict_class ({str (i ): str (i ) for i in range (20 , 120 )})
129+
130+ @benchmark
131+ def _run () -> None :
132+ assert md1 .items () != md2 .items ()
133+
134+
135+ def test_items_view_more (benchmark : BenchmarkFixture , any_multidict_class : Type [MultiDict [str ]]) -> None :
136+ md : MultiDict [str ] = any_multidict_class ({str (i ): str (i ) for i in range (100 )})
137+ s = {(str (i ), str (i )) for i in range (50 )}
138+
139+ @benchmark
140+ def _run () -> None :
141+ assert md .items () > s
142+
143+
144+ def test_items_view_more_or_equal (benchmark : BenchmarkFixture , any_multidict_class : Type [MultiDict [str ]]) -> None :
145+ md : MultiDict [str ] = any_multidict_class ({str (i ): str (i ) for i in range (100 )})
146+ s = {(str (i ), str (i )) for i in range (100 )}
147+
148+ @benchmark
149+ def _run () -> None :
150+ assert md .items () >= s
151+
152+
153+ def test_items_view_less (benchmark : BenchmarkFixture , any_multidict_class : Type [MultiDict [str ]]) -> None :
154+ md : MultiDict [str ] = any_multidict_class ({str (i ): str (i ) for i in range (100 )})
155+ s = {(str (i ), str (i )) for i in range (150 )}
156+
157+ @benchmark
158+ def _run () -> None :
159+ assert md .items () < s
160+
161+
162+ def test_items_view_less_or_equal (benchmark : BenchmarkFixture , any_multidict_class : Type [MultiDict [str ]]) -> None :
163+ md : MultiDict [str ] = any_multidict_class ({str (i ): str (i ) for i in range (100 )})
164+ s = {(str (i ), str (i )) for i in range (100 )}
165+
166+ @benchmark
167+ def _run () -> None :
168+ assert md .items () <= s
169+
170+
171+ def test_items_view_and (benchmark : BenchmarkFixture , any_multidict_class : Type [MultiDict [str ]]) -> None :
172+ md1 : MultiDict [str ] = any_multidict_class ({str (i ): str (i ) for i in range (100 )})
173+ md2 : MultiDict [str ] = any_multidict_class ({str (i ): str (i ) for i in range (50 , 150 )})
174+
175+ @benchmark
176+ def _run () -> None :
177+ assert len (md1 .items () & md2 .items ()) == 50
178+
179+
180+ def test_items_view_or (benchmark : BenchmarkFixture , any_multidict_class : Type [MultiDict [str ]]) -> None :
181+ md1 : MultiDict [str ] = any_multidict_class ({str (i ): str (i ) for i in range (100 )})
182+ md2 : MultiDict [str ] = any_multidict_class ({str (i ): str (i ) for i in range (50 , 150 )})
183+
184+ @benchmark
185+ def _run () -> None :
186+ assert len (md1 .items () | md2 .items ()) == 150
187+
188+
189+ def test_items_view_sub (benchmark : BenchmarkFixture , any_multidict_class : Type [MultiDict [str ]]) -> None :
190+ md1 : MultiDict [str ] = any_multidict_class ({str (i ): str (i ) for i in range (100 )})
191+ md2 : MultiDict [str ] = any_multidict_class ({str (i ): str (i ) for i in range (50 , 150 )})
192+
193+ @benchmark
194+ def _run () -> None :
195+ assert len (md1 .items () - md2 .items ()) == 50
196+
197+
198+ def test_items_view_xor (benchmark : BenchmarkFixture , any_multidict_class : Type [MultiDict [str ]]) -> None :
199+ md1 : MultiDict [str ] = any_multidict_class ({str (i ): str (i ) for i in range (100 )})
200+ md2 : MultiDict [str ] = any_multidict_class ({str (i ): str (i ) for i in range (50 , 150 )})
201+
202+ @benchmark
203+ def _run () -> None :
204+ assert len (md1 .items () ^ md2 .items ()) == 100
205+
206+
207+ def test_items_view_is_disjoint (benchmark : BenchmarkFixture , any_multidict_class : Type [MultiDict [str ]]) -> None :
208+ md1 : MultiDict [str ] = any_multidict_class ({str (i ): str (i ) for i in range (100 )})
209+ md2 : MultiDict [str ] = any_multidict_class ({str (i ): str (i ) for i in range (100 , 200 )})
210+
211+ @benchmark
212+ def _run () -> None :
213+ assert md1 .items ().isdisjoint (md2 .items ())
214+
215+
117216def test_items_view_repr (benchmark : BenchmarkFixture , any_multidict_class : Type [MultiDict [str ]]) -> None :
118217 md : MultiDict [str ] = any_multidict_class ({str (i ): str (i ) for i in range (100 )})
119218
0 commit comments