1616
1717#include " gtest/gtest.h"
1818
19- #include " stim/test_util.test.h"
20-
2119using namespace stim ;
2220
2321TEST (gate_target, xyz) {
@@ -35,6 +33,8 @@ TEST(gate_target, xyz) {
3533 ASSERT_EQ (t.is_z_target (), false );
3634 ASSERT_EQ (t.str (), " stim.target_x(5)" );
3735 ASSERT_EQ (t.value (), 5 );
36+ ASSERT_TRUE (t.has_qubit_value ());
37+ ASSERT_FALSE (t.is_sweep_bit_target ());
3838
3939 t = GateTarget::x (7 , true );
4040 ASSERT_EQ (t.is_combiner (), false );
@@ -46,6 +46,8 @@ TEST(gate_target, xyz) {
4646 ASSERT_EQ (t.is_z_target (), false );
4747 ASSERT_EQ (t.str (), " stim.target_x(7, invert=True)" );
4848 ASSERT_EQ (t.value (), 7 );
49+ ASSERT_TRUE (t.has_qubit_value ());
50+ ASSERT_FALSE (t.is_sweep_bit_target ());
4951
5052 t = GateTarget::y (11 , false );
5153 ASSERT_EQ (t.is_combiner (), false );
@@ -57,6 +59,8 @@ TEST(gate_target, xyz) {
5759 ASSERT_EQ (t.is_z_target (), false );
5860 ASSERT_EQ (t.str (), " stim.target_y(11)" );
5961 ASSERT_EQ (t.value (), 11 );
62+ ASSERT_TRUE (t.has_qubit_value ());
63+ ASSERT_FALSE (t.is_sweep_bit_target ());
6064
6165 t = GateTarget::y (13 , true );
6266 ASSERT_EQ (t.is_combiner (), false );
@@ -68,6 +72,7 @@ TEST(gate_target, xyz) {
6872 ASSERT_EQ (t.is_z_target (), false );
6973 ASSERT_EQ (t.str (), " stim.target_y(13, invert=True)" );
7074 ASSERT_EQ (t.value (), 13 );
75+ ASSERT_FALSE (t.is_sweep_bit_target ());
7176
7277 t = GateTarget::z (17 , false );
7378 ASSERT_EQ (t.is_combiner (), false );
@@ -79,6 +84,8 @@ TEST(gate_target, xyz) {
7984 ASSERT_EQ (t.is_z_target (), true );
8085 ASSERT_EQ (t.str (), " stim.target_z(17)" );
8186 ASSERT_EQ (t.value (), 17 );
87+ ASSERT_TRUE (t.has_qubit_value ());
88+ ASSERT_FALSE (t.is_sweep_bit_target ());
8289
8390 t = GateTarget::z (19 , true );
8491 ASSERT_EQ (t.is_combiner (), false );
@@ -91,6 +98,8 @@ TEST(gate_target, xyz) {
9198 ASSERT_EQ (t.str (), " stim.target_z(19, invert=True)" );
9299 ASSERT_EQ (t.value (), 19 );
93100 ASSERT_EQ (t.qubit_value (), 19 );
101+ ASSERT_TRUE (t.has_qubit_value ());
102+ ASSERT_FALSE (t.is_sweep_bit_target ());
94103}
95104
96105TEST (gate_target, qubit) {
@@ -107,6 +116,8 @@ TEST(gate_target, qubit) {
107116 ASSERT_EQ (t.str (), " 5" );
108117 ASSERT_EQ (t.value (), 5 );
109118 ASSERT_EQ (t.qubit_value (), 5 );
119+ ASSERT_TRUE (t.has_qubit_value ());
120+ ASSERT_FALSE (t.is_sweep_bit_target ());
110121
111122 t = GateTarget::qubit (7 , true );
112123 ASSERT_EQ (t.is_combiner (), false );
@@ -118,6 +129,8 @@ TEST(gate_target, qubit) {
118129 ASSERT_EQ (t.is_z_target (), false );
119130 ASSERT_EQ (t.str (), " stim.target_inv(7)" );
120131 ASSERT_EQ (t.value (), 7 );
132+ ASSERT_TRUE (t.has_qubit_value ());
133+ ASSERT_FALSE (t.is_sweep_bit_target ());
121134}
122135
123136TEST (gate_target, record) {
@@ -136,6 +149,23 @@ TEST(gate_target, record) {
136149 ASSERT_EQ (t.str (), " stim.target_rec(-5)" );
137150 ASSERT_EQ (t.value (), -5 );
138151 ASSERT_EQ (t.qubit_value (), 5 );
152+ ASSERT_FALSE (t.has_qubit_value ());
153+ ASSERT_FALSE (t.is_sweep_bit_target ());
154+ }
155+
156+ TEST (gate_target, sweep) {
157+ auto t = GateTarget::sweep_bit (5 );
158+ ASSERT_EQ (t.is_combiner (), false );
159+ ASSERT_EQ (t.is_inverted_result_target (), false );
160+ ASSERT_EQ (t.is_measurement_record_target (), false );
161+ ASSERT_EQ (t.is_qubit_target (), false );
162+ ASSERT_EQ (t.is_x_target (), false );
163+ ASSERT_EQ (t.is_y_target (), false );
164+ ASSERT_EQ (t.is_z_target (), false );
165+ ASSERT_EQ (t.str (), " stim.target_sweep_bit(5)" );
166+ ASSERT_EQ (t.value (), 5 );
167+ ASSERT_FALSE (t.has_qubit_value ());
168+ ASSERT_TRUE (t.is_sweep_bit_target ());
139169}
140170
141171TEST (gate_target, combiner) {
@@ -149,6 +179,8 @@ TEST(gate_target, combiner) {
149179 ASSERT_EQ (t.is_z_target (), false );
150180 ASSERT_EQ (t.str (), " stim.GateTarget.combiner()" );
151181 ASSERT_EQ (t.qubit_value (), 0 );
182+ ASSERT_FALSE (t.has_qubit_value ());
183+ ASSERT_FALSE (t.is_sweep_bit_target ());
152184}
153185
154186TEST (gate_target, equality) {
0 commit comments