Files
sammykumar-ComfyUI-SwissArm…/tests/test_parse_string_to_bbox.py
T
Sammy Kumar a98e500430 feat(parse_string_to_bbox): update bbox parsing to return integer coordinates and dimensions for better usability
test(parse_string_to_bbox): update tests to validate new integer output format and add new test for rounding behavior
test(parse_string_to_bbox_ints): add new tests for parsing bbox strings to integer coordinates and validate error handling
2025-12-07 06:37:04 -06:00

42 lines
1.2 KiB
Python

import importlib.util
import os
import math
import pytest
# Load module directly by path to avoid importing the package top-level __init__.py
MODULE_PATH = os.path.join(os.path.dirname(__file__), "..", "nodes", "utils", "parse_string_to_bbox.py")
spec = importlib.util.spec_from_file_location("parse_string_to_bbox", os.path.abspath(MODULE_PATH))
parse_mod = importlib.util.module_from_spec(spec)
spec.loader.exec_module(parse_mod)
ParseStringToBBox = parse_mod.ParseStringToBBox
def test_valid_bbox_string():
s = "[ [170.6425323486328, 71.72273254394531, 300.5597229003906, 238.28350830078125] ]"
node = ParseStringToBBox()
x1, y1, x2, y2, width, height = node.parse_bbox(s)
# Values are rounded to nearest int
assert x1 == 171
assert y1 == 72
assert x2 == 301
assert y2 == 238
# width = x2 - x1, height = y2 - y1
assert width == 130
assert height == 166
def test_invalid_json_raises():
s = "not a json"
node = ParseStringToBBox()
with pytest.raises(ValueError):
node.parse_bbox(s)
def test_wrong_structure_raises():
s = "[1,2,3,4]" # not nested
node = ParseStringToBBox()
with pytest.raises(ValueError):
node.parse_bbox(s)