use super::merge_system_prompt_with_contexts;
use super::system_sections::{strip_existing_skill_context, strip_existing_tool_guide_context};
#[test]
fn merge_system_prompt_with_contexts_appends_both_contexts() {
let merged = merge_system_prompt_with_contexts(
"You are a helpful assistant.",
"\n\n## Skill System\n\n### Available Skills\nDetails",
"## Tool Usage Guidelines\n\n### File Reading Tools\nDetails",
);
assert!(merged.starts_with("You are a helpful assistant."));
assert!(merged.contains("<!-- BAMBOO_SKILL_CONTEXT_START -->"));
assert!(merged.contains("## Skill System"));
assert!(merged.contains("<!-- BAMBOO_TOOL_GUIDE_START -->"));
assert!(merged.contains("## Tool Usage Guidelines"));
}
#[test]
fn merge_system_prompt_with_contexts_handles_empty_base_prompt() {
let merged = merge_system_prompt_with_contexts(
"",
"\n\n## Skill System\n\n### Available Skills",
"## Tool Usage Guidelines\n\n### File Reading Tools",
);
assert_eq!(
merged,
"<!-- BAMBOO_SKILL_CONTEXT_START -->\n## Skill System\n\n### Available Skills\n<!-- BAMBOO_SKILL_CONTEXT_END -->\n\n<!-- BAMBOO_TOOL_GUIDE_START -->\n## Tool Usage Guidelines\n\n### File Reading Tools\n<!-- BAMBOO_TOOL_GUIDE_END -->"
);
}
#[test]
fn strip_existing_skill_context_removes_previous_section() {
let stripped = strip_existing_skill_context(
"Base prompt\n\n<!-- BAMBOO_SKILL_CONTEXT_START -->\n## Skill System\n\n### Available Skills\nInstructions\n<!-- BAMBOO_SKILL_CONTEXT_END -->",
);
assert_eq!(stripped, "Base prompt");
}
#[test]
fn strip_existing_skill_context_does_not_remove_user_heading_without_markers() {
let original = "Base prompt\n\n## Skill System\nThis heading belongs to user prompt.";
let stripped = strip_existing_skill_context(original);
assert_eq!(stripped, original);
}
#[test]
fn strip_existing_tool_guide_context_removes_previous_section() {
let stripped = strip_existing_tool_guide_context(
"Base prompt\n\n<!-- BAMBOO_TOOL_GUIDE_START -->\n## Tool Usage Guidelines\n\n### File Reading Tools\nInstructions\n<!-- BAMBOO_TOOL_GUIDE_END -->",
);
assert_eq!(stripped, "Base prompt");
}
#[test]
fn strip_existing_tool_guide_context_does_not_remove_user_heading_without_markers() {
let original = "Base prompt\n\n## Tool Usage Guidelines\nUser custom section.";
let stripped = strip_existing_tool_guide_context(original);
assert_eq!(stripped, original);
}