Files
by-ae-ae-in-workflow/tests/test_interpolate_float.py
T
by-aeandCursor Agent fe0d1d27fd test: add comprehensive tests for CropImageBatchToMaskBounds and InterpolateFloatList nodes
Add 29 new tests covering:
- CropImageBatchToMaskBoundsNodeAE: both cropping modes, empty masks, mask inversion, padding, forced dimensions, and input validation
- InterpolateFloatListNodeAE: interpolation, trimming/padding, newline/whitespace handling, rounding, negative values, and error cases

All tests pass. Coverage expanded for previously untested node functionality.

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
2026-10-24 20:53:06 +00:00

191 lines
6.0 KiB
Python

"""
Tests for InterpolateFloatListNodeAE
"""
import sys
import os
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
import pytest
def test_interpolate_node_imports():
"""Test that InterpolateFloatListNodeAE can be imported"""
from __init__ import InterpolateFloatListNodeAE
assert InterpolateFloatListNodeAE is not None
def test_interpolate_basic():
"""Test basic interpolation"""
from __init__ import InterpolateFloatListNodeAE
node = InterpolateFloatListNodeAE()
result_list, result_csv = node.interpolate_floats("1.0,2.0,3.0", count=5, interpolate_across_count=True)
assert len(result_list) == 5
assert result_list[0] == 1.0
assert result_list[-1] == 3.0
assert result_csv == "1.0,1.5,2.0,2.5,3.0"
def test_interpolate_no_count():
"""Test with count=0 (return original)"""
from __init__ import InterpolateFloatListNodeAE
node = InterpolateFloatListNodeAE()
result_list, result_csv = node.interpolate_floats("1.5,2.5,3.5", count=0)
assert len(result_list) == 3
assert result_list == [1.5, 2.5, 3.5]
def test_interpolate_newlines():
"""Test handling of newlines in input"""
from __init__ import InterpolateFloatListNodeAE
node = InterpolateFloatListNodeAE()
result_list, _ = node.interpolate_floats("1.0\n2.0\n3.0", count=3)
assert len(result_list) == 3
assert result_list == [1.0, 2.0, 3.0]
def test_interpolate_whitespace():
"""Test handling of whitespace"""
from __init__ import InterpolateFloatListNodeAE
node = InterpolateFloatListNodeAE()
result_list, _ = node.interpolate_floats("1.0 , 2.0 , 3.0", count=3)
assert len(result_list) == 3
assert result_list == [1.0, 2.0, 3.0]
def test_interpolate_trim_mode():
"""Test trim/pad mode (interpolate_across_count=False)"""
from __init__ import InterpolateFloatListNodeAE
node = InterpolateFloatListNodeAE()
# Trim: more values than count
result_list, _ = node.interpolate_floats("1.0,2.0,3.0,4.0,5.0", count=3, interpolate_across_count=False)
assert len(result_list) == 3
assert result_list == [1.0, 2.0, 3.0]
# Pad: fewer values than count
result_list, _ = node.interpolate_floats("1.0,2.0", count=5, interpolate_across_count=False)
assert len(result_list) == 5
assert result_list == [1.0, 2.0, 1.0, 1.0, 1.0] # Padded with 1.0
def test_interpolate_single_value():
"""Test interpolation with single value"""
from __init__ import InterpolateFloatListNodeAE
node = InterpolateFloatListNodeAE()
result_list, _ = node.interpolate_floats("5.0", count=4, interpolate_across_count=True)
assert len(result_list) == 4
# Single value should be repeated
assert all(v == 5.0 for v in result_list)
def test_interpolate_empty_string():
"""Test with empty string input"""
from __init__ import InterpolateFloatListNodeAE
node = InterpolateFloatListNodeAE()
result_list, result_csv = node.interpolate_floats("", count=3, interpolate_across_count=True)
# Should return default values (1.0 repeated)
assert len(result_list) == 3
assert result_list == [1.0, 1.0, 1.0]
def test_interpolate_rounding():
"""Test that values are rounded to 6 decimal places"""
from __init__ import InterpolateFloatListNodeAE
node = InterpolateFloatListNodeAE()
result_list, _ = node.interpolate_floats("1.0,3.0", count=3, interpolate_across_count=True)
# Should have 1.0, 2.0, 3.0
assert result_list[1] == 2.0
# Check that rounding is applied
assert all(isinstance(v, float) for v in result_list)
def test_interpolate_csv_output():
"""Test CSV string output format"""
from __init__ import InterpolateFloatListNodeAE
node = InterpolateFloatListNodeAE()
_, result_csv = node.interpolate_floats("1.0,2.0,3.0", count=3)
assert isinstance(result_csv, str)
assert result_csv.count(",") == 2 # Two commas for three values
def test_interpolate_negative_values():
"""Test with negative values"""
from __init__ import InterpolateFloatListNodeAE
node = InterpolateFloatListNodeAE()
result_list, _ = node.interpolate_floats("-1.0,0.0,1.0", count=5, interpolate_across_count=True)
assert len(result_list) == 5
assert result_list[0] == -1.0
assert result_list[2] == 0.0
assert result_list[-1] == 1.0
def test_interpolate_large_count():
"""Test with large count value"""
from __init__ import InterpolateFloatListNodeAE
node = InterpolateFloatListNodeAE()
result_list, _ = node.interpolate_floats("0.0,1.0", count=100, interpolate_across_count=True)
assert len(result_list) == 100
assert result_list[0] == 0.0
assert result_list[-1] == 1.0
def test_interpolate_non_uniform_spacing():
"""Test interpolation with non-uniform input spacing"""
from __init__ import InterpolateFloatListNodeAE
node = InterpolateFloatListNodeAE()
result_list, _ = node.interpolate_floats("0.0,1.0,10.0", count=5, interpolate_across_count=True)
assert len(result_list) == 5
assert result_list[0] == 0.0
assert result_list[-1] == 10.0
# Middle values should be interpolated
assert result_list[2] == 1.0
def test_interpolate_error_handling():
"""Test error handling with invalid input"""
from __init__ import InterpolateFloatListNodeAE
node = InterpolateFloatListNodeAE()
# Should return empty list and string on error
result_list, result_csv = node.interpolate_floats("invalid,data", count=3)
assert result_list == []
assert result_csv == ""
def test_interpolate_mixed_valid_invalid():
"""Test with mix of valid and invalid values"""
from __init__ import InterpolateFloatListNodeAE
node = InterpolateFloatListNodeAE()
# Should parse only valid floats
result_list, result_csv = node.interpolate_floats("1.0,,2.0,,,3.0", count=3, interpolate_across_count=True)
assert len(result_list) == 3
assert result_list[0] == 1.0
assert result_list[-1] == 3.0