defmodule SwitchTest do @moduledoc """ Simple test to verify the ISO8583 switch implementation works. """ def test_switch_start do IO.puts("Testing ISO8583 Switch startup...") case DaProductApp.Switch.start_listener(5001) do :ok -> IO.puts("✅ Switch started successfully on port 5001") DaProductApp.Switch.stop_listener() IO.puts("✅ Switch stopped successfully") :ok {:error, reason} -> IO.puts("❌ Failed to start switch: #{inspect(reason)}") {:error, reason} end end def test_message_handler do IO.puts("Testing message handler...") # Test simple message encoding test_message = %{ "0" => "0200", "2" => "4111111111111111", "3" => "000000", "11" => "000001" } case DaProductApp.Switch.ISO8583BMessageHandler.encode(test_message) do {:ok, encoded} -> IO.puts("✅ Message encoded successfully: #{byte_size(encoded)} bytes") :ok {:error, reason} -> IO.puts("❌ Failed to encode message: #{inspect(reason)}") {:error, reason} end end def test_router do IO.puts("Testing router...") # Test Visa card routing visa_message = %{ "0" => "0200", "2" => "4111111111111111", # Visa card "3" => "000000" } # Test router without actually sending to upstream connector = DaProductApp.Switch.Router.determine_connector(visa_message) IO.puts("✅ Router correctly selected: #{inspect(connector)}") :ok end def run_all_tests do IO.puts("=== ISO8583 Switch Implementation Verification ===\n") test_switch_start() test_message_handler() test_router() IO.puts("\n=== All Tests Completed ===") end end