use std::fmt::Write as FmtWrite;
pub(super) fn render_not_error_assertion(
out: &mut String,
result_var: &str,
bare_result_is_option: bool,
is_streaming: bool,
returns_void: bool,
) {
if bare_result_is_option {
let _ = writeln!(out, " // not_error: covered by try propagation");
} else if returns_void {
} else if is_streaming {
let _ = writeln!(out, " XCTAssertNotNil(chunks)");
} else {
let _ = writeln!(out, " XCTAssertNotNil({result_var})");
}
}
#[cfg(test)]
mod tests {
use super::render_not_error_assertion;
#[test]
fn bare_optional_result_emits_no_not_nil_assertion() {
let mut out = String::new();
render_not_error_assertion(&mut out, "result", true, false, false);
assert!(
!out.contains("XCTAssertNotNil(result)"),
"bare Optional result must not assert not-nil from `not_error`: {out}"
);
}
#[test]
fn non_optional_result_still_asserts_not_nil() {
let mut out = String::new();
render_not_error_assertion(&mut out, "result", false, false, false);
assert_eq!(out, " XCTAssertNotNil(result)\n");
}
#[test]
fn streaming_result_asserts_on_chunks() {
let mut out = String::new();
render_not_error_assertion(&mut out, "result", false, true, false);
assert_eq!(out, " XCTAssertNotNil(chunks)\n");
}
#[test]
fn void_result_emits_nothing() {
let mut out = String::new();
render_not_error_assertion(&mut out, "result", false, false, true);
assert!(out.is_empty());
}
}