#!/usr/bin/env python3 """ Test the enhanced Page class with HTML loading capabilities """ from pyWebLayout.concrete.page import Page from pyWebLayout.style.fonts import Font from PIL import Image import tempfile import os def test_page_html_loading(): """Test loading HTML content into a Page""" # Create a test HTML content html_content = """
This is a test paragraph with some formatting.
Another paragraph with different content.
""" # Create a page and load the HTML page = Page(size=(800, 600)) page.load_html_string(html_content) # Render the page try: image = page.render() print(f"✓ Successfully rendered page: {image.size}") # Save the rendered image for inspection output_path = "test_page_output.png" image.save(output_path) print(f"✓ Saved rendered page to: {output_path}") return True except Exception as e: print(f"✗ Error rendering page: {e}") return False def test_page_html_file_loading(): """Test loading HTML from a file""" # Create a temporary HTML file html_content = """This content was loaded from a file.
Text with bold and italic formatting.
""" # Write to temporary file with tempfile.NamedTemporaryFile(mode='w', suffix='.html', delete=False) as f: f.write(html_content) temp_file = f.name try: # Create a page and load the file page = Page(size=(800, 600)) page.load_html_file(temp_file) # Render the page image = page.render() print(f"✓ Successfully loaded and rendered HTML file: {image.size}") # Save the rendered image output_path = "test_file_page_output.png" image.save(output_path) print(f"✓ Saved file-loaded page to: {output_path}") return True except Exception as e: print(f"✗ Error loading HTML file: {e}") return False finally: # Clean up temporary file try: os.unlink(temp_file) except OSError: pass def test_epub_reader_imports(): """Test that the EPUB reader can be imported without errors""" try: from epub_reader_tk import EPUBReaderApp print("✓ Successfully imported EPUBReaderApp") # Test creating the app (but don't show it) app = EPUBReaderApp() print("✓ Successfully created EPUBReaderApp instance") return True except Exception as e: print(f"✗ Error importing/creating EPUB reader: {e}") return False def main(): """Run all tests""" print("Testing enhanced Page class and EPUB reader...") print("=" * 50) tests = [ ("HTML String Loading", test_page_html_loading), ("HTML File Loading", test_page_html_file_loading), ("EPUB Reader Imports", test_epub_reader_imports), ] results = [] for test_name, test_func in tests: print(f"\nTesting: {test_name}") print("-" * 30) success = test_func() results.append((test_name, success)) # Summary print("\n" + "=" * 50) print("Test Summary:") for test_name, success in results: status = "PASS" if success else "FAIL" print(f" {test_name}: {status}") total_tests = len(results) passed_tests = sum(1 for _, success in results if success) print(f"\nPassed: {passed_tests}/{total_tests}") if passed_tests == total_tests: print("🎉 All tests passed!") else: print(f"⚠️ {total_tests - passed_tests} test(s) failed") if __name__ == "__main__": main()