Spaces:
Running on Zero
Running on Zero
| from src.Core.AbstractModel import ModelCapabilities | |
| def test_validate_resolution_within_limits(): | |
| caps = ModelCapabilities(min_resolution=256, max_resolution=2048, requires_resolution_multiple=64) | |
| # 1024x1024 should remain unchanged | |
| w, h = caps.validate_resolution(1024, 1024) | |
| assert w == 1024 | |
| assert h == 1024 | |
| def test_validate_resolution_clamping_width(): | |
| caps = ModelCapabilities(min_resolution=256, max_resolution=2048, requires_resolution_multiple=64) | |
| # 2688x1536 (Ratio 1.75) | |
| # Width exceeds 2048. Scale = 2048/2688 = 0.7619 | |
| # New width = 2048 | |
| # New height = 1536 * 0.7619 = 1170.28 | |
| # Rounded to 64: (1170 // 64) * 64 = 18 * 64 = 1152 | |
| w, h = caps.validate_resolution(2688, 1536) | |
| assert w == 2048 | |
| assert h == 1152 | |
| assert abs(w/h - 2688/1536) < 0.05 | |
| def test_validate_resolution_clamping_height(): | |
| caps = ModelCapabilities(min_resolution=256, max_resolution=2048, requires_resolution_multiple=64) | |
| # 1536x2688 (Ratio 0.5714) | |
| # Height exceeds 2048. Scale = 2048/2688 = 0.7619 | |
| # New height = 2048 | |
| # New width = 1536 * 0.7619 = 1170.28 | |
| # Rounded to 64: 1152 | |
| w, h = caps.validate_resolution(1536, 2688) | |
| assert w == 1152 | |
| assert h == 2048 | |
| assert abs(w/h - 1536/2688) < 0.05 | |
| def test_validate_resolution_clamping_both(): | |
| caps = ModelCapabilities(min_resolution=256, max_resolution=2048, requires_resolution_multiple=64) | |
| # 4096x3072 (Ratio 1.33) | |
| # Width exceeds 2048 more than height. | |
| # Scale = min(2048/4096, 2048/3072) = min(0.5, 0.66) = 0.5 | |
| # New width = 2048 | |
| # New height = 1536 | |
| w, h = caps.validate_resolution(4096, 3072) | |
| assert w == 2048 | |
| assert h == 1536 | |
| def test_flux_resolution_limits(): | |
| # Flux has multiple 16 | |
| caps = ModelCapabilities(min_resolution=256, max_resolution=4096, requires_resolution_multiple=16) | |
| # 1344x768 -> 2x Hires Fix -> 2688x1536 | |
| # Should NOT be clamped if max_resolution is 4096 | |
| w, h = caps.validate_resolution(2688, 1536) | |
| assert w == 2688 | |
| assert h == 1536 | |