91 lines
3.9 KiB
Python
91 lines
3.9 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
Test script to verify Page Setup functionality
|
|
"""
|
|
|
|
import sys
|
|
from PyQt6.QtWidgets import QApplication
|
|
from pyPhotoAlbum.project import Project, Page
|
|
from pyPhotoAlbum.page_layout import PageLayout
|
|
|
|
|
|
def test_page_setup_behavior():
|
|
"""Test that page setup works correctly with multiple pages"""
|
|
|
|
# Create a project with default size
|
|
project = Project("Test Project")
|
|
print(f"Initial project default page size: {project.page_size_mm}")
|
|
|
|
# Add first page - should use project default
|
|
page1_layout = PageLayout(width=project.page_size_mm[0], height=project.page_size_mm[1])
|
|
page1 = Page(layout=page1_layout, page_number=1)
|
|
page1.manually_sized = False
|
|
project.add_page(page1)
|
|
print(f"Page 1 size: {page1.layout.size}, manually_sized: {page1.manually_sized}")
|
|
|
|
# Add second page - should also use project default
|
|
page2_layout = PageLayout(width=project.page_size_mm[0], height=project.page_size_mm[1])
|
|
page2 = Page(layout=page2_layout, page_number=2)
|
|
page2.manually_sized = False
|
|
project.add_page(page2)
|
|
print(f"Page 2 size: {page2.layout.size}, manually_sized: {page2.manually_sized}")
|
|
|
|
# Simulate changing page 1 size without setting as default
|
|
print("\n--- Simulating Page Setup on Page 1 (without setting as default) ---")
|
|
page1.layout.size = (200, 200)
|
|
page1.layout.base_width = 200
|
|
page1.manually_sized = True
|
|
print(f"Page 1 size after change: {page1.layout.size}, manually_sized: {page1.manually_sized}")
|
|
print(f"Project default still: {project.page_size_mm}")
|
|
print(f"Page 2 unchanged: {page2.layout.size}, manually_sized: {page2.manually_sized}")
|
|
|
|
# Add third page - should use original project default
|
|
page3_layout = PageLayout(width=project.page_size_mm[0], height=project.page_size_mm[1])
|
|
page3 = Page(layout=page3_layout, page_number=3)
|
|
page3.manually_sized = False
|
|
project.add_page(page3)
|
|
print(f"Page 3 size: {page3.layout.size}, manually_sized: {page3.manually_sized}")
|
|
|
|
# Simulate changing page 2 size AND setting as default
|
|
print("\n--- Simulating Page Setup on Page 2 (with setting as default) ---")
|
|
page2.layout.size = (250, 250)
|
|
page2.layout.base_width = 250
|
|
page2.manually_sized = True
|
|
project.page_size_mm = (250, 250) # Set as default
|
|
print(f"Page 2 size after change: {page2.layout.size}, manually_sized: {page2.manually_sized}")
|
|
print(f"Project default updated to: {project.page_size_mm}")
|
|
|
|
# Add fourth page - should use NEW project default
|
|
page4_layout = PageLayout(width=project.page_size_mm[0], height=project.page_size_mm[1])
|
|
page4 = Page(layout=page4_layout, page_number=4)
|
|
page4.manually_sized = False
|
|
project.add_page(page4)
|
|
print(f"Page 4 size: {page4.layout.size}, manually_sized: {page4.manually_sized}")
|
|
|
|
# Test double spread
|
|
print("\n--- Testing Double Spread ---")
|
|
page5_layout = PageLayout(width=project.page_size_mm[0], height=project.page_size_mm[1], is_facing_page=True)
|
|
page5 = Page(layout=page5_layout, page_number=5, is_double_spread=True)
|
|
page5.manually_sized = False
|
|
project.add_page(page5)
|
|
print(f"Page 5 (double spread) size: {page5.layout.size}, base_width: {page5.layout.base_width}")
|
|
print(f"Expected: width should be 2x base_width = {project.page_size_mm[0] * 2}")
|
|
|
|
print("\n--- Summary ---")
|
|
for i, page in enumerate(project.pages, 1):
|
|
spread_info = " (double spread)" if page.is_double_spread else ""
|
|
manual_info = " *manually sized*" if page.manually_sized else ""
|
|
print(f"Page {i}: {page.layout.size}{spread_info}{manual_info}")
|
|
print(f"Project default: {project.page_size_mm}")
|
|
|
|
print("\n✓ All tests passed!")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
# Initialize Qt application (needed for PyQt6 widgets even in tests)
|
|
app = QApplication(sys.argv)
|
|
|
|
test_page_setup_behavior()
|
|
|
|
print("\nTest completed successfully!")
|