@@ -2082,6 +2082,80 @@ def test_present_vars(self):
2082
2082
right .add_captured_var (a_u8_other )
2083
2083
self .assertNotEqual (left , right )
2084
2084
2085
+ def test_pickle_vars (self ):
2086
+ """Test vars preserved through pickle."""
2087
+ a = expr .Var .new ("a" , types .Bool ())
2088
+ b = expr .Var .new ("b" , types .Uint (8 ))
2089
+
2090
+ # Check inputs.
2091
+ dag = DAGCircuit ()
2092
+ dag .add_input_var (a )
2093
+
2094
+ self .assertEqual (dag .num_vars , 1 )
2095
+ self .assertEqual (dag .num_input_vars , 1 )
2096
+
2097
+ with io .BytesIO () as buf :
2098
+ pickle .dump (dag , buf )
2099
+ buf .seek (0 )
2100
+ output = pickle .load (buf )
2101
+
2102
+ self .assertEqual (output .num_vars , 1 )
2103
+ self .assertEqual (output .num_input_vars , 1 )
2104
+ self .assertEqual (output , dag )
2105
+
2106
+ # Check captures and declarations.
2107
+ dag = DAGCircuit ()
2108
+ dag .add_declared_var (a )
2109
+ dag .add_captured_var (b )
2110
+
2111
+ self .assertEqual (dag .num_vars , 2 )
2112
+ self .assertEqual (dag .num_captured_vars , 1 )
2113
+ self .assertEqual (dag .num_declared_vars , 1 )
2114
+
2115
+ with io .BytesIO () as buf :
2116
+ pickle .dump (dag , buf )
2117
+ buf .seek (0 )
2118
+ output = pickle .load (buf )
2119
+
2120
+ self .assertEqual (output .num_vars , 2 )
2121
+ self .assertEqual (output .num_captured_vars , 1 )
2122
+ self .assertEqual (output .num_declared_vars , 1 )
2123
+ self .assertEqual (output , dag )
2124
+
2125
+ def test_deepcopy_vars (self ):
2126
+ """Test vars preserved through deepcopy."""
2127
+ a = expr .Var .new ("a" , types .Bool ())
2128
+ b = expr .Var .new ("b" , types .Uint (8 ))
2129
+
2130
+ # Check inputs.
2131
+ dag = DAGCircuit ()
2132
+ dag .add_input_var (a )
2133
+
2134
+ self .assertEqual (dag .num_vars , 1 )
2135
+ self .assertEqual (dag .num_input_vars , 1 )
2136
+
2137
+ output = copy .deepcopy (dag )
2138
+
2139
+ self .assertEqual (output .num_vars , 1 )
2140
+ self .assertEqual (output .num_input_vars , 1 )
2141
+ self .assertEqual (output , dag )
2142
+
2143
+ # Check captures and declarations.
2144
+ dag = DAGCircuit ()
2145
+ dag .add_declared_var (a )
2146
+ dag .add_captured_var (b )
2147
+
2148
+ self .assertEqual (dag .num_vars , 2 )
2149
+ self .assertEqual (dag .num_captured_vars , 1 )
2150
+ self .assertEqual (dag .num_declared_vars , 1 )
2151
+
2152
+ output = copy .deepcopy (dag )
2153
+
2154
+ self .assertEqual (output .num_vars , 2 )
2155
+ self .assertEqual (output .num_captured_vars , 1 )
2156
+ self .assertEqual (output .num_declared_vars , 1 )
2157
+ self .assertEqual (output , dag )
2158
+
2085
2159
def test_wires_added_for_simple_classical_vars (self ):
2086
2160
"""Var uses should be represented in the wire structure."""
2087
2161
a = expr .Var .new ("a" , types .Bool ())
0 commit comments