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.1 | 2026-04-05 | 초안 작성 |