test(tkg): add integration tests for TKG optimizations

- test_build_frame_index: verifies frame-to-point index creation
- test_build_frame_index_empty: edge case for empty input
- test_find_trace_in_frame_exact_match: exact bbox match
- test_find_trace_in_frame_closest_match: closest bbox match
- test_find_trace_in_frame_no_matching_frame: missing frame returns None
- test_find_trace_in_frame_empty_index: empty index returns None
- test_node_id_map_lookup: verifies HashMap-based node ID lookup

Note: Pre-existing test compilation errors (E0063 in asr/asrx/face) block test execution.
This commit is contained in:
Accusys
2026-07-10 07:44:37 +08:00
parent 01f8b89636
commit 701727fd08
+86
View File
@@ -3175,4 +3175,90 @@ mod tests {
assert_eq!(r.object_nodes, 10);
assert_eq!(r.speaker_nodes, 3);
}
// ── Integration Tests for TKG Optimizations ─────────────────────
#[test]
fn test_build_frame_index() {
let points = vec![
FacePoint { trace_id: 1, frame: 0, x: 100.0, y: 100.0, w: 50.0, h: 50.0 },
FacePoint { trace_id: 1, frame: 0, x: 200.0, y: 200.0, w: 50.0, h: 50.0 },
FacePoint { trace_id: 2, frame: 1, x: 150.0, y: 150.0, w: 50.0, h: 50.0 },
FacePoint { trace_id: 1, frame: 2, x: 120.0, y: 120.0, w: 50.0, h: 50.0 },
];
let index = build_frame_index(&points);
assert_eq!(index.len(), 3); // 3 unique frames
assert_eq!(index.get(&0).map(|v| v.len()), Some(2));
assert_eq!(index.get(&1).map(|v| v.len()), Some(1));
assert_eq!(index.get(&2).map(|v| v.len()), Some(1));
}
#[test]
fn test_build_frame_index_empty() {
let points: Vec<FacePoint> = vec![];
let index = build_frame_index(&points);
assert!(index.is_empty());
}
#[test]
fn test_find_trace_in_frame_exact_match() {
let points = vec![
FacePoint { trace_id: 1, frame: 0, x: 100.0, y: 100.0, w: 100.0, h: 100.0 },
FacePoint { trace_id: 2, frame: 0, x: 300.0, y: 300.0, w: 100.0, h: 100.0 },
];
let index = build_frame_index(&points);
// Query face exactly matches trace 1's bbox
let result = find_trace_in_frame(&index, 0, 100.0, 100.0, 100.0, 100.0);
assert_eq!(result, Some(1));
}
#[test]
fn test_find_trace_in_frame_closest_match() {
let points = vec![
FacePoint { trace_id: 1, frame: 0, x: 100.0, y: 100.0, w: 100.0, h: 100.0 },
FacePoint { trace_id: 2, frame: 0, x: 500.0, y: 500.0, w: 100.0, h: 100.0 },
];
let index = build_frame_index(&points);
// Query face is closer to trace 1
let result = find_trace_in_frame(&index, 0, 110.0, 110.0, 100.0, 100.0);
assert_eq!(result, Some(1));
}
#[test]
fn test_find_trace_in_frame_no_matching_frame() {
let points = vec![
FacePoint { trace_id: 1, frame: 0, x: 100.0, y: 100.0, w: 100.0, h: 100.0 },
];
let index = build_frame_index(&points);
// Query for frame 1 which doesn't exist
let result = find_trace_in_frame(&index, 1, 100.0, 100.0, 100.0, 100.0);
assert_eq!(result, None);
}
#[test]
fn test_find_trace_in_frame_empty_index() {
let points: Vec<FacePoint> = vec![];
let index = build_frame_index(&points);
let result = find_trace_in_frame(&index, 0, 100.0, 100.0, 100.0, 100.0);
assert_eq!(result, None);
}
#[test]
fn test_node_id_map_lookup() {
let mut map: HashMap<(String, String), i64> = HashMap::new();
map.insert(("face_track".to_string(), "face_track_1".to_string()), 100);
map.insert(("speaker".to_string(), "SPEAKER_0".to_string()), 200);
map.insert(("object".to_string(), "person".to_string()), 300);
assert_eq!(map.get(&("face_track".to_string(), "face_track_1".to_string())), Some(&100));
assert_eq!(map.get(&("speaker".to_string(), "SPEAKER_0".to_string())), Some(&200));
assert_eq!(map.get(&("object".to_string(), "person".to_string())), Some(&300));
assert_eq!(map.get(&("face_track".to_string(), "face_track_99".to_string())), None);
}
}