Files
ComfyAssets-ComfyUI-KikoTools/tests/unit/tools/test_width_height_to_vec2.py
T

82 lines
2.8 KiB
Python

"""Unit tests for Width Height to VEC2 node."""
import pytest
from kikotools.tools.width_height_to_vec2 import WidthHeightToVec2Node
class TestWidthHeightToVec2Node:
"""Test cases for WidthHeightToVec2Node."""
def setup_method(self):
"""Set up test fixtures."""
self.node = WidthHeightToVec2Node()
def test_basic_int_conversion(self):
"""Test basic integer inputs."""
result = self.node.convert_to_vec2(512, 768)
assert result == ((512, 768),)
def test_float_conversion(self):
"""Test float inputs are converted to int."""
result = self.node.convert_to_vec2(512.7, 768.3)
assert result == ((512, 768),)
def test_string_conversion(self):
"""Test string inputs are parsed correctly."""
result = self.node.convert_to_vec2("1024", "768")
assert result == ((1024, 768),)
def test_string_with_decimal(self):
"""Test string with decimal point."""
result = self.node.convert_to_vec2("1024.5", "768.0")
assert result == ((1024, 768),)
def test_clamp_max_values(self):
"""Test values are clamped to maximum."""
result = self.node.convert_to_vec2(10000, 9999)
assert result == ((8192, 8192),)
def test_clamp_min_values(self):
"""Test values are clamped to minimum."""
result = self.node.convert_to_vec2(0, -5)
assert result == ((1, 1),)
def test_return_type_is_tuple_of_tuple(self):
"""Test return type is correct for ComfyUI."""
result = self.node.convert_to_vec2(512, 512)
assert isinstance(result, tuple)
assert len(result) == 1
assert isinstance(result[0], tuple)
assert len(result[0]) == 2
def test_input_types_defined(self):
"""Test INPUT_TYPES is properly defined."""
input_types = WidthHeightToVec2Node.INPUT_TYPES()
assert "required" in input_types
assert "width" in input_types["required"]
assert "height" in input_types["required"]
def test_return_types_defined(self):
"""Test RETURN_TYPES is properly defined."""
assert WidthHeightToVec2Node.RETURN_TYPES == ("VEC2",)
assert WidthHeightToVec2Node.RETURN_NAMES == ("vec2",)
def test_category_set(self):
"""Test node category is set."""
assert "ComfyAssets" in WidthHeightToVec2Node.CATEGORY
class TestWidthHeightToVec2Errors:
"""Test error handling for WidthHeightToVec2Node."""
def setup_method(self):
"""Set up test fixtures."""
self.node = WidthHeightToVec2Node()
def test_invalid_string_raises_error(self):
"""Test invalid string input raises error."""
with pytest.raises(ValueError) as excinfo:
self.node.convert_to_vec2("not_a_number", 512)
assert "Cannot convert width" in str(excinfo.value)