package com.morefun.tester;

/**
 * Main entry point for ISO8583 Message Tester
 * This is a standalone Java application for testing message creation and transmission
 */
public class MessageTesterMain {
    
    public static void main(String[] args) {
        System.out.println("==========================================");
        System.out.println("    ISO8583 Message Tester");
        System.out.println("    Standalone Java Module");
        System.out.println("==========================================");
        System.out.println("Network Config: " + NetworkConfig.getConnectionInfo());
        System.out.println("==========================================");
        
        try {
            // Check if user wants to run Mercury packet specifically
            if (args.length > 0 && "mercury".equalsIgnoreCase(args[0])) {
                System.out.println("\n=== Mercury jPOS Packet Test ===");
                MercuryJPOSPacket.main(new String[0]);
                return;
            } else if (args.length > 0 && "mercury-exact".equalsIgnoreCase(args[0])) {
                System.out.println("\n=== Mercury Exact Packet Test ===");
                MercuryExactPacket.main(new String[0]);
                return;
            }
            
            // Test with jPOS implementation
            System.out.println("\n=== jPOS Implementation Test ===");
            JPOSMessageTester jposTester = new JPOSMessageTester();
            jposTester.testSaleMessage();
            jposTester.testReversalMessage();
            
            // Test with simple ISO8583 implementation
            System.out.println("\n=== Simple ISO8583 Implementation Test ===");
            SimpleISO8583MessageTester simpleTester = new SimpleISO8583MessageTester();
          //  simpleTester.testSaleMessage();
          //  simpleTester.testReversalMessage();
            
            // Show Mercury packet option
            System.out.println("\n=== Additional Options ===");
            System.out.println("To test Mercury packet with jPOS (recommended), run:");
            System.out.println("  gradlew.bat :message-tester:run --args=\"mercury\"");
            System.out.println("To test Mercury exact hex packet, run:");
            System.out.println("  gradlew.bat :message-tester:run --args=\"mercury-exact\"");
            System.out.println("or directly:");
            System.out.println("  java -cp build/libs/message-tester.jar com.morefun.tester.MercuryJPOSPacket");
            
        } catch (Exception e) {
            System.err.println("Error in message tester: " + e.getMessage());
            e.printStackTrace();
        }
        
        System.out.println("\n==========================================");
        System.out.println("    Message Tester Complete");
        System.out.println("==========================================");
    }
}