#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
简单的Aspose.CAD许可证测试
功能：通过实际转换测试来验证许可证状态
作者：AI Assistant
日期：2024
"""

import os
import sys
from pathlib import Path

def test_license_by_conversion():
    """通过转换测试许可证状态"""
    print("=" * 60)
    print(" Aspose.CAD 许可证状态测试 ")
    print("=" * 60)
    
    try:
        import aspose.cad as cad
        from aspose.cad.imageoptions import CadRasterizationOptions, PngOptions
        from aspose.cad import Color
        
        print(f"✓ Aspose.CAD版本: {cad.VERSION}")
        
        # 查找DWG文件
        dwg_files = list(Path('.').glob('*.dwg'))
        if not dwg_files:
            print("✗ 未找到DWG文件进行测试")
            return
        
        test_file = str(dwg_files[0])
        print(f"✓ 使用测试文件: {test_file}")
        
        # 加载DWG文件
        print("正在加载DWG文件...")
        with cad.Image.load(test_file) as image:
            print(f"✓ 成功加载DWG文件")
            print(f"  图像尺寸: {image.width} x {image.height}")
            
            # 尝试转换
            print("正在尝试转换为PNG...")
            try:
                # 设置光栅化选项
                raster_options = CadRasterizationOptions()
                raster_options.page_width = 800
                raster_options.page_height = 600
                raster_options.background_color = Color.white
                
                # 设置PNG选项
                png_options = PngOptions()
                png_options.vector_rasterization_options = raster_options
                
                # 保存为PNG
                output_path = "license_test_output.png"
                image.save(output_path, png_options)
                
                # 检查输出文件
                if os.path.exists(output_path):
                    file_size = os.path.getsize(output_path)
                    print(f"✓ 转换成功！")
                    print(f"  输出文件: {output_path}")
                    print(f"  文件大小: {file_size:,} 字节 ({file_size/1024:.2f} KB)")
                    
                    # 分析结果
                    if file_size > 1000:  # 大于1KB
                        print(f"\n🎉 许可证状态分析:")
                        print(f"  ✓ 转换成功且文件大小正常")
                        print(f"  ✓ 可能已获得有效许可证")
                        print(f"  ✓ 或者这是评估版但功能正常")
                    else:
                        print(f"\n⚠️ 许可证状态分析:")
                        print(f"  ⚠ 文件大小较小，可能有许可证限制")
                    
                    # 清理测试文件
                    try:
                        os.remove(output_path)
                        print(f"  ✓ 已清理测试文件")
                    except:
                        pass
                        
                else:
                    print(f"✗ 转换失败，未生成输出文件")
                    print(f"  → 这可能是许可证限制")
                    
            except Exception as e:
                error_msg = str(e)
                print(f"✗ 转换失败: {error_msg}")
                
                # 分析错误类型
                if "evaluation" in error_msg.lower():
                    print(f"  → 这是评估版限制")
                elif "trial" in error_msg.lower():
                    print(f"  → 这是试用版限制")
                elif "license" in error_msg.lower():
                    print(f"  → 这是许可证问题")
                elif "watermark" in error_msg.lower():
                    print(f"  → 这是水印限制")
                else:
                    print(f"  → 这可能是其他技术问题")
        
    except Exception as e:
        print(f"✗ 测试失败: {e}")

def check_license_methods():
    """检查许可证相关方法"""
    print("\n" + "=" * 60)
    print(" 检查许可证相关方法 ")
    print("=" * 60)
    
    try:
        import aspose.cad as cad
        from aspose.cad import License
        
        # 创建许可证对象
        license_obj = License()
        print(f"✓ 成功创建License对象")
        
        # 检查可用的方法
        methods = [attr for attr in dir(license_obj) if not attr.startswith('_')]
        print(f"✓ 可用方法: {methods}")
        
        # 尝试设置许可证（如果有许可证文件）
        print(f"\n尝试设置许可证:")
        license_files = list(Path('.').glob('*.lic'))
        if license_files:
            license_file = str(license_files[0])
            print(f"  找到许可证文件: {license_file}")
            try:
                license_obj.set_license(license_file)
                print(f"  ✓ 成功设置许可证")
            except Exception as e:
                print(f"  ✗ 设置许可证失败: {e}")
        else:
            print(f"  ℹ 未找到许可证文件(.lic)")
            print(f"  ℹ 当前使用默认许可证状态")
        
    except Exception as e:
        print(f"✗ 检查许可证方法失败: {e}")

def main():
    """主函数"""
    print("Aspose.CAD 许可证状态检查工具")
    print("通过实际转换测试来验证许可证状态")
    print()
    
    # 通过转换测试许可证
    test_license_by_conversion()
    
    # 检查许可证方法
    check_license_methods()
    
    # 总结
    print("\n" + "=" * 60)
    print(" 总结和建议 ")
    print("=" * 60)
    print("1. 如果转换成功且文件大小正常 → 许可证状态良好")
    print("2. 如果转换失败或出现评估版错误 → 需要购买许可证")
    print("3. 如果输出文件包含水印 → 这是评估版的正常行为")
    print("\n建议:")
    print("- 评估版通常有功能限制或水印")
    print("- 商业使用需要购买Aspose.CAD许可证")
    print("- 联系Aspose技术支持获取帮助")

if __name__ == "__main__":
    try:
        main()
    except KeyboardInterrupt:
        print("\n\n用户中断了程序执行")
    except Exception as e:
        print(f"\n\n程序执行出错: {e}")
        import traceback
        traceback.print_exc()

