Halt 전파 검증 테스트 (Halt Propagation Verification Tests)

Halt 전파 검증 테스트 (Halt Propagation Verification Tests)

1. 개요

Halt 전파 검증 테스트는 데코레이터가 halt될 때 자식 노드의 halt가 올바르게 호출되는지, 데코레이터의 내부 상태가 올바르게 초기화되는지를 검증하는 테스트이다.

2. 테스트 케이스

2.1 자식 halt 호출 검증

TEST(HaltTest, HaltsRunningChild)
{
    mock_child.setReturn(BT::NodeStatus::RUNNING);
    tree.tickOnce();
    EXPECT_EQ(mock_child.status(), BT::NodeStatus::RUNNING);

    tree.haltTree();
    EXPECT_EQ(mock_child.status(), BT::NodeStatus::IDLE);
}

2.2 비활성 자식의 halt 미호출 검증

TEST(HaltTest, DoesNotHaltIdleChild)
{
    // 자식이 tick되지 않은 상태에서 halt
    tree.haltTree();
    // 예외 없이 정상 완료되어야 함
}

2.3 내부 상태 초기화 검증

TEST(HaltTest, ResetsInternalStateOnHalt)
{
    // Retry 카운터가 리셋되는지 검증
    mock_child.setReturn(FAILURE);
    tree.tickOnce();  // try=1
    tree.tickOnce();  // try=2

    tree.haltTree();  // 카운터 리셋

    // 재시작 시 처음부터
    int tick_count = 0;
    do {
        tree.tickOnce();
        ++tick_count;
    } while (tree.tickOnce() == RUNNING);

    // 전체 num_attempts만큼 시도 (리셋 확인)
}

2.4 중첩 데코레이터의 halt 전파

TEST(HaltTest, PropagatesThroughNestedDecorators)
{
    // Timeout(Retry(Action))
    mock_child.setReturn(BT::NodeStatus::RUNNING);
    tree.tickOnce();

    tree.haltTree();

    // 모든 레벨의 노드가 IDLE 상태
    // 내부 카운터/타이머 모두 리셋
}

3. 참고 문헌

  • BehaviorTree.CPP 공식 문서. https://www.behaviortree.dev/
  • Google Test 문서. https://google.github.io/googletest/

버전날짜변경 사항
v0.12026-04-05초안 작성