Skip to content

Commit 7d798ef

Browse files
committed
fix bug with comp != ref
1 parent 6b539d0 commit 7d798ef

File tree

2 files changed

+51
-1
lines changed

2 files changed

+51
-1
lines changed

calphy/phase_diagram.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -332,7 +332,8 @@ def _create_composition_array(comp_range, interval, reference):
332332
is_reference = np.abs(comp_arr - reference) < COMPOSITION_TOLERANCE
333333
elif len(comp_range) == 1:
334334
comp_arr = [comp_range[0]]
335-
is_reference = [True]
335+
# Check if this single composition equals the reference
336+
is_reference = [np.abs(comp_range[0] - reference) < COMPOSITION_TOLERANCE]
336337
else:
337338
raise ValueError("Composition range should be scalar or list of two values!")
338339

tests/test_phase_diagram.py

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -191,3 +191,52 @@ def __init__(self):
191191
), f"Expected 1 element in pair_list_new, got {len(comp.pair_list_new)}: {comp.pair_list_new}"
192192
assert comp.pair_list_old == ["Cu"]
193193
assert comp.pair_list_new == ["Al"]
194+
195+
196+
def test_create_composition_array_single_non_reference():
197+
"""Test that single composition value different from reference is not marked as reference"""
198+
from calphy.phase_diagram import _create_composition_array
199+
200+
# Test: reference=0.0, single comp=1.0 (should NOT be marked as reference)
201+
comp_arr, is_reference = _create_composition_array(
202+
comp_range=1.0,
203+
interval=0.1,
204+
reference=0.0
205+
)
206+
207+
assert len(comp_arr) == 1
208+
assert comp_arr[0] == 1.0
209+
assert is_reference[0] == False, "Single composition at 1.0 should not be marked as reference when reference=0.0"
210+
211+
212+
def test_create_composition_array_single_is_reference():
213+
"""Test that single composition value equal to reference IS marked as reference"""
214+
from calphy.phase_diagram import _create_composition_array
215+
216+
# Test: reference=0.0, single comp=0.0 (SHOULD be marked as reference)
217+
comp_arr, is_reference = _create_composition_array(
218+
comp_range=0.0,
219+
interval=0.1,
220+
reference=0.0
221+
)
222+
223+
assert len(comp_arr) == 1
224+
assert comp_arr[0] == 0.0
225+
assert is_reference[0] == True, "Single composition at 0.0 should be marked as reference when reference=0.0"
226+
227+
228+
def test_create_composition_array_range():
229+
"""Test composition array creation with range"""
230+
from calphy.phase_diagram import _create_composition_array
231+
232+
# Test: reference=0.0, range [0.0, 1.0], interval=0.25
233+
comp_arr, is_reference = _create_composition_array(
234+
comp_range=[0.0, 1.0],
235+
interval=0.25,
236+
reference=0.0
237+
)
238+
239+
assert len(comp_arr) == 5 # 0.0, 0.25, 0.5, 0.75, 1.0
240+
assert is_reference[0] == True # 0.0 is reference
241+
assert all(not ref for ref in is_reference[1:]) # Others are not reference
242+

0 commit comments

Comments
 (0)