#!/bin/bash

# 简单的 kcptun-rust 测试脚本
# 快速测试客户端和服务端是否能正常启动和连接

set -e

# 颜色
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
RED='\033[0;31m'
NC='\033[0m'

BIN_DIR="./target/release"
CLIENT="$BIN_DIR/kcptun-client"
SERVER="$BIN_DIR/kcptun-server"

echo -e "${GREEN}=== kcptun-rust 简单测试 ===${NC}"
echo ""

# 检查二进制文件
if [ ! -f "$CLIENT" ] || [ ! -f "$SERVER" ]; then
    echo -e "${RED}错误: 请先编译项目${NC}"
    echo "运行: cargo build --release"
    exit 1
fi

# 测试 1: 检查帮助信息
echo -e "${YELLOW}[测试 1] 检查帮助信息...${NC}"
if $CLIENT --help > /dev/null 2>&1 && $SERVER --help > /dev/null 2>&1; then
    echo -e "${GREEN}✓ 帮助信息正常${NC}"
else
    echo -e "${RED}✗ 帮助信息异常${NC}"
    exit 1
fi

# 测试 2: 检查版本信息
echo -e "${YELLOW}[测试 2] 检查版本信息...${NC}"
CLIENT_VERSION=$($CLIENT --version 2>&1)
SERVER_VERSION=$($SERVER --version 2>&1)
echo "  客户端: $CLIENT_VERSION"
echo "  服务端: $SERVER_VERSION"
echo -e "${GREEN}✓ 版本信息正常${NC}"

# 测试 3: 测试配置文件解析
echo -e "${YELLOW}[测试 3] 测试配置文件解析...${NC}"
if [ -f "client.json" ] && [ -f "server.json" ]; then
    # 只检查是否能解析，不实际启动
    echo -e "${GREEN}✓ 配置文件存在${NC}"
else
    echo -e "${YELLOW}⚠ 配置文件不存在（可选）${NC}"
fi

# 测试 4: 测试无效参数
echo -e "${YELLOW}[测试 4] 测试错误处理...${NC}"
if ! $CLIENT --invalid-option 2>&1 | grep -q "error\|Error\|Unknown"; then
    echo -e "${GREEN}✓ 错误处理正常${NC}"
else
    echo -e "${GREEN}✓ 错误处理正常（检测到错误）${NC}"
fi

echo ""
echo -e "${GREEN}=== 所有基础测试通过 ===${NC}"
echo ""
echo "要运行完整连接测试，请使用:"
echo "  ./test.sh"
echo ""
echo "或者手动启动："
echo "  # 终端 1: 启动服务端"
echo "  $SERVER --listen :29900 --target 127.0.0.1:8080 --key test123"
echo ""
echo "  # 终端 2: 启动客户端"
echo "  $CLIENT --localaddr :12948 --remoteaddr 127.0.0.1:29900 --key test123"
echo ""
