@@ -4261,213 +4261,6 @@ def _circuit_diagram_info_(self, args):
42614261 assert '|c>' in circuit ._repr_html_ ()
42624262
42634263
4264- def test_tetris_concat_deprecated ():
4265- a , b = cirq .LineQubit .range (2 )
4266- empty = cirq .Circuit ()
4267-
4268- with cirq .testing .assert_deprecated ('ragged' , deadline = 'v0.16' , count = None ):
4269- assert cirq .Circuit .tetris_concat (empty , empty ) == empty
4270- assert cirq .Circuit .tetris_concat () == empty
4271- assert empty .tetris_concat (empty ) == empty
4272- assert empty .tetris_concat (empty , empty ) == empty
4273-
4274- ha = cirq .Circuit (cirq .H (a ))
4275- hb = cirq .Circuit (cirq .H (b ))
4276- assert ha .tetris_concat (hb ) == ha .zip (hb )
4277-
4278- assert ha .tetris_concat (empty ) == ha
4279- assert empty .tetris_concat (ha ) == ha
4280-
4281- hac = cirq .Circuit (cirq .H (a ), cirq .CNOT (a , b ))
4282- assert hac .tetris_concat (hb ) == hac + hb
4283- assert hb .tetris_concat (hac ) == hb .zip (hac )
4284-
4285- zig = cirq .Circuit (cirq .H (a ), cirq .CNOT (a , b ), cirq .H (b ))
4286- assert zig .tetris_concat (zig ) == cirq .Circuit (
4287- cirq .H (a ),
4288- cirq .CNOT (a , b ),
4289- cirq .Moment (cirq .H (a ), cirq .H (b )),
4290- cirq .CNOT (a , b ),
4291- cirq .H (b ),
4292- )
4293-
4294- zag = cirq .Circuit (cirq .H (a ), cirq .H (a ), cirq .CNOT (a , b ), cirq .H (b ), cirq .H (b ))
4295- assert zag .tetris_concat (zag ) == cirq .Circuit (
4296- cirq .H (a ),
4297- cirq .H (a ),
4298- cirq .CNOT (a , b ),
4299- cirq .Moment (cirq .H (a ), cirq .H (b )),
4300- cirq .Moment (cirq .H (a ), cirq .H (b )),
4301- cirq .CNOT (a , b ),
4302- cirq .H (b ),
4303- cirq .H (b ),
4304- )
4305-
4306- space = cirq .Circuit (cirq .Moment ()) * 10
4307- f = cirq .Circuit .tetris_concat
4308- assert len (f (space , ha )) == 10
4309- assert len (f (space , ha , ha , ha )) == 10
4310- assert len (f (space , f (ha , ha , ha ))) == 10
4311- assert len (f (space , ha , align = 'LEFT' )) == 10
4312- assert len (f (space , ha , ha , ha , align = 'RIGHT' )) == 12
4313- assert len (f (space , f (ha , ha , ha , align = 'LEFT' ))) == 10
4314- assert len (f (space , f (ha , ha , ha , align = 'RIGHT' ))) == 10
4315- assert len (f (space , f (ha , ha , ha ), align = 'LEFT' )) == 10
4316- assert len (f (space , f (ha , ha , ha ), align = 'RIGHT' )) == 10
4317-
4318- # L shape overlap (vary c1).
4319- assert 7 == len (
4320- f (
4321- cirq .Circuit (cirq .CZ (a , b ), [cirq .H (a )] * 5 ),
4322- cirq .Circuit ([cirq .H (b )] * 5 , cirq .CZ (a , b )),
4323- )
4324- )
4325- assert 7 == len (
4326- f (
4327- cirq .Circuit (cirq .CZ (a , b ), [cirq .H (a )] * 4 ),
4328- cirq .Circuit ([cirq .H (b )] * 5 , cirq .CZ (a , b )),
4329- )
4330- )
4331- assert 7 == len (
4332- f (
4333- cirq .Circuit (cirq .CZ (a , b ), [cirq .H (a )] * 1 ),
4334- cirq .Circuit ([cirq .H (b )] * 5 , cirq .CZ (a , b )),
4335- )
4336- )
4337- assert 8 == len (
4338- f (
4339- cirq .Circuit (cirq .CZ (a , b ), [cirq .H (a )] * 6 ),
4340- cirq .Circuit ([cirq .H (b )] * 5 , cirq .CZ (a , b )),
4341- )
4342- )
4343- assert 9 == len (
4344- f (
4345- cirq .Circuit (cirq .CZ (a , b ), [cirq .H (a )] * 7 ),
4346- cirq .Circuit ([cirq .H (b )] * 5 , cirq .CZ (a , b )),
4347- )
4348- )
4349-
4350- # L shape overlap (vary c2).
4351- assert 7 == len (
4352- f (
4353- cirq .Circuit (cirq .CZ (a , b ), [cirq .H (a )] * 5 ),
4354- cirq .Circuit ([cirq .H (b )] * 5 , cirq .CZ (a , b )),
4355- )
4356- )
4357- assert 7 == len (
4358- f (
4359- cirq .Circuit (cirq .CZ (a , b ), [cirq .H (a )] * 5 ),
4360- cirq .Circuit ([cirq .H (b )] * 4 , cirq .CZ (a , b )),
4361- )
4362- )
4363- assert 7 == len (
4364- f (
4365- cirq .Circuit (cirq .CZ (a , b ), [cirq .H (a )] * 5 ),
4366- cirq .Circuit ([cirq .H (b )] * 1 , cirq .CZ (a , b )),
4367- )
4368- )
4369- assert 8 == len (
4370- f (
4371- cirq .Circuit (cirq .CZ (a , b ), [cirq .H (a )] * 5 ),
4372- cirq .Circuit ([cirq .H (b )] * 6 , cirq .CZ (a , b )),
4373- )
4374- )
4375- assert 9 == len (
4376- f (
4377- cirq .Circuit (cirq .CZ (a , b ), [cirq .H (a )] * 5 ),
4378- cirq .Circuit ([cirq .H (b )] * 7 , cirq .CZ (a , b )),
4379- )
4380- )
4381-
4382- # When scanning sees a possible hit, continues scanning for earlier hit.
4383- assert 10 == len (
4384- f (
4385- cirq .Circuit (
4386- cirq .Moment (),
4387- cirq .Moment (),
4388- cirq .Moment (),
4389- cirq .Moment (),
4390- cirq .Moment (),
4391- cirq .Moment (cirq .H (a )),
4392- cirq .Moment (),
4393- cirq .Moment (),
4394- cirq .Moment (cirq .H (b )),
4395- ),
4396- cirq .Circuit (
4397- cirq .Moment (),
4398- cirq .Moment (),
4399- cirq .Moment (),
4400- cirq .Moment (cirq .H (a )),
4401- cirq .Moment (),
4402- cirq .Moment (cirq .H (b )),
4403- ),
4404- )
4405- )
4406- # Correct tie breaker when one operation sees two possible hits.
4407- for cz_order in [cirq .CZ (a , b ), cirq .CZ (b , a )]:
4408- assert 3 == len (
4409- f (
4410- cirq .Circuit (cirq .Moment (cz_order ), cirq .Moment (), cirq .Moment ()),
4411- cirq .Circuit (cirq .Moment (cirq .H (a )), cirq .Moment (cirq .H (b ))),
4412- )
4413- )
4414-
4415- # Types.
4416- v = ha .freeze ().tetris_concat (empty )
4417- assert type (v ) is cirq .FrozenCircuit and v == ha .freeze ()
4418- v = ha .tetris_concat (empty .freeze ())
4419- assert type (v ) is cirq .Circuit and v == ha
4420- v = ha .freeze ().tetris_concat (empty )
4421- assert type (v ) is cirq .FrozenCircuit and v == ha .freeze ()
4422- v = cirq .Circuit .tetris_concat (ha , empty )
4423- assert type (v ) is cirq .Circuit and v == ha
4424- v = cirq .FrozenCircuit .tetris_concat (ha , empty )
4425- assert type (v ) is cirq .FrozenCircuit and v == ha .freeze ()
4426-
4427-
4428- def test_tetris_concat_alignment_deprecated ():
4429- a , b = cirq .LineQubit .range (2 )
4430-
4431- with cirq .testing .assert_deprecated ('ragged' , deadline = 'v0.16' , count = None ):
4432-
4433- assert cirq .Circuit .tetris_concat (
4434- cirq .Circuit (cirq .X (a )),
4435- cirq .Circuit (cirq .Y (b )) * 4 ,
4436- cirq .Circuit (cirq .Z (a )),
4437- align = 'first' ,
4438- ) == cirq .Circuit (
4439- cirq .Moment (cirq .X (a ), cirq .Y (b )),
4440- cirq .Moment (cirq .Y (b )),
4441- cirq .Moment (cirq .Y (b )),
4442- cirq .Moment (cirq .Z (a ), cirq .Y (b )),
4443- )
4444-
4445- assert cirq .Circuit .tetris_concat (
4446- cirq .Circuit (cirq .X (a )),
4447- cirq .Circuit (cirq .Y (b )) * 4 ,
4448- cirq .Circuit (cirq .Z (a )),
4449- align = 'left' ,
4450- ) == cirq .Circuit (
4451- cirq .Moment (cirq .X (a ), cirq .Y (b )),
4452- cirq .Moment (cirq .Z (a ), cirq .Y (b )),
4453- cirq .Moment (cirq .Y (b )),
4454- cirq .Moment (cirq .Y (b )),
4455- )
4456-
4457- assert cirq .Circuit .tetris_concat (
4458- cirq .Circuit (cirq .X (a )),
4459- cirq .Circuit (cirq .Y (b )) * 4 ,
4460- cirq .Circuit (cirq .Z (a )),
4461- align = 'right' ,
4462- ) == cirq .Circuit (
4463- cirq .Moment (cirq .Y (b )),
4464- cirq .Moment (cirq .Y (b )),
4465- cirq .Moment (cirq .Y (b )),
4466- cirq .Moment (cirq .X (a ), cirq .Y (b )),
4467- cirq .Moment (cirq .Z (a )),
4468- )
4469-
4470-
44714264def test_concat_ragged ():
44724265 a , b = cirq .LineQubit .range (2 )
44734266 empty = cirq .Circuit ()
0 commit comments