#!/usr/bin/env bash
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
source "$SCRIPT_DIR/../../lib/test-helpers.sh"
echo "=== Test: Agent Behavior Test ==="
echo ""
echo "This test verifies agents behavior with Claude CLI."
echo "Estimated time: 1-2 minutes"
echo "Requires: Claude Code CLI"
echo ""
if ! command -v claude &> /dev/null; then
echo -e "${YELLOW}[SKIP]${NC} Claude Code CLI not found — skipping behavior test"
exit 0
fi
TIMEOUT=25
pass_count=0
fail_count=0
skip_count=0
echo -e "${BOLD}=== Part 1: Agent Behavior Tests ===${NC}"
echo ""
run_behavior_test "ascendc-ops-architect" \
"你是一个算子架构师。用户需要开发一个 Add 算子,你应该首先做什么?" \
"需求|分析|设计|requirement|架构|规格|明确|定义" \
"$TIMEOUT"
run_behavior_test "ascendc-ops-developer" \
"你是一个算子开发工程师。设计方案已确定,你应该按什么顺序开发?" \
"迭代|开发|实现|Kernel|Tiling|编码" \
"$TIMEOUT"
run_behavior_test "ascendc-ops-tester" \
"你是一个算子测试工程师。算子代码已完成,你应该如何设计测试?" \
"测试|test|用例|ST|UT|覆盖|验证" \
"$TIMEOUT"
run_behavior_test "ascendc-ops-reviewer" \
"你是一个代码检视专家。检视 Ascend C 代码时主要关注哪些方面?" \
"检视|review|规范|安全|质量|代码|内存|性能|并行|优化" \
"$TIMEOUT"
echo -e "${BOLD}=== Part 2: Negative Tests ===${NC}"
echo ""
run_behavior_test "travel advice (should not trigger agent)" \
"推荐一个适合度假的旅游目的地。" \
"旅游|目的地|度假|景点|推荐|风景|海滩|山" \
"$TIMEOUT"
run_behavior_test "fitness advice (should not trigger agent)" \
"如何制定一个健身计划?" \
"健身|运动|锻炼|计划|肌肉|训练|有氧|力量" \
"$TIMEOUT"
run_behavior_test "recipe request (should not trigger agent)" \
"推荐一道家常菜的做法。" \
"菜|做法|食材|烹饪|家常|炒|煮|调味" \
"$TIMEOUT"
echo -e "${BOLD}=== Part 3: Trigger Mechanism Tests ===${NC}"
echo ""
run_behavior_test "explicit agent request" \
"请让 ascendc-ops-architect agent 来分析这个算子需求。" \
"需求|分析|设计|架构|规格" \
"$TIMEOUT"
run_behavior_test "invalid agent handling" \
"请让 nonexistent-agent-xyz agent 来处理。" \
"不存在|not.*found|无法|unknown|没有|抱歉|找不到" \
"$TIMEOUT"
run_behavior_test "agent name typo handling" \
"请让 ascendc-ops-architekt agent 来分析需求。" \
"不存在|not.*found|无法|unknown|没有|抱歉|找不到|不在|需求|分析" \
"$TIMEOUT"
echo "========================================"
echo -e " ${BOLD}Agent Behavior Test Summary${NC}"
echo "========================================"
echo ""
echo -e " ${GREEN}Passed:${NC} $pass_count"
echo -e " ${RED}Failed:${NC} $fail_count"
echo -e " ${YELLOW}Skipped:${NC} $skip_count"
echo ""
total=$((pass_count + fail_count))
if [ $total -gt 0 ]; then
accuracy=$((pass_count * 100 / total))
echo " Accuracy: ${accuracy}%"
echo ""
fi
if [ $fail_count -gt 0 ]; then
print_status_failed
exit 1
else
print_status_passed
exit 0
fi