@@ -118,3 +118,45 @@ def test_from_sum_rejects_non_sum_observable():
118118def test_from_sum_rejects_non_pauli_observable_terms ():
119119 with pytest .raises (TypeError , match = "Unsupported observable factor H" ):
120120 PauliStringSum .from_sum (H () + X ())
121+
122+
123+ def test_empty_sum_has_zero_qubit_count_and_repr ():
124+ empty_sum = PauliStringSum ()
125+
126+ assert empty_sum .qubit_count == 0
127+ assert repr (empty_sum ) == "PauliStringSum([])"
128+
129+
130+ def test_zero_coefficient_terms_cancel_to_empty_sum ():
131+ pauli_sum = PauliStringSum ([(1.0 , "X" ), (- 1.0 , "X" ), (2.0 , "Y" )])
132+
133+ assert pauli_sum .to_list () == [(2.0 , "+Y" )]
134+
135+
136+ def test_zero_coefficient_term_is_ignored ():
137+ pauli_sum = PauliStringSum ([(0.0 , "X" ), (2.0 , "Y" )])
138+
139+ assert pauli_sum .to_list () == [(2.0 , "+Y" )]
140+
141+
142+ def test_radd_and_non_matching_eq_type ():
143+ assert "ZY" + PauliStringSum ([(1.0 , "X" )]) == PauliStringSum (
144+ [(1.0 , "X" ), (1.0 , "ZY" )]
145+ )
146+ assert PauliStringSum ([(1.0 , "X" )]) != 1
147+
148+
149+ def test_from_sum_uses_default_target_for_standard_observables_and_rejects_unmapped_observable ():
150+ from braket .circuits .observables import Sum
151+
152+ from_sum_with_no_targets = PauliStringSum .from_sum (Sum ([1.0 * X ()]))
153+ assert from_sum_with_no_targets .to_list () == [(1.0 , "+X" )]
154+
155+ class NonStandardObservable :
156+ coefficient = 1.0
157+
158+ def _unscaled (self ):
159+ return object ()
160+
161+ with pytest .raises (TypeError , match = "Unsupported observable type" ):
162+ PauliStringSum ._term_from_observable (NonStandardObservable ())
0 commit comments