1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
//! Additional tests for CLI inference module (Part 02)
//!
//! This module adds comprehensive test coverage for inference.rs code paths
//! including configuration building, CLI argument validation, and edge cases.
#[cfg(test)]
mod inference_coverage {
use crate::cli::inference;
use crate::inference_trace::TraceConfig;
#[test]
fn test_temperature_nan() {
let result = inference::run_gguf_inference(
"/nonexistent/model.gguf",
&[],
"nan temp",
5,
f32::NAN,
"text",
false,
false,
None, // trace_config
);
assert!(result.is_err());
}
// =========================================================================
// String Parameter Edge Cases
// =========================================================================
#[test]
fn test_format_with_whitespace() {
let result = inference::run_gguf_inference(
"/nonexistent/model.gguf",
&[],
"format test",
5,
0.5,
" json ", // Whitespace around format
false,
false,
None, // trace_config
);
assert!(result.is_err());
}
#[test]
fn test_format_case_sensitivity() {
for format in &["JSON", "Json", "TEXT", "Text"] {
let result = inference::run_gguf_inference(
"/nonexistent/model.gguf",
&[],
"case test",
5,
0.5,
format,
false,
false,
None, // trace_config
);
assert!(result.is_err());
}
}
// =========================================================================
// API Contract Tests (Public Interface)
// =========================================================================
#[test]
fn test_run_gguf_inference_public_api() {
// Verify public function signature matches expected API
let _: crate::error::Result<()> = inference::run_gguf_inference(
"", // model_ref: &str
&[], // file_data: &[u8]
"", // prompt: &str
0, // max_tokens: usize
0.0, // temperature: f32
"", // format: &str
true, // force_gpu: bool
true, // verbose: bool
Some(TraceConfig::enabled()), // trace_config
);
}
#[test]
fn test_run_safetensors_inference_public_api() {
let _: crate::error::Result<()> = inference::run_safetensors_inference(
"", // model_ref: &str
"", // prompt: &str
0, // max_tokens: usize
0.0, // temperature: f32
"", // format: &str
None, // trace_config
);
}
#[test]
fn test_run_apr_inference_public_api() {
let _: crate::error::Result<()> = inference::run_apr_inference(
"", // model_ref: &str
&[], // file_data: &[u8]
"", // prompt: &str
0, // max_tokens: usize
0.0, // temperature: f32
"", // format: &str
true, // force_gpu: bool
false, // verbose: bool
None, // trace_config
);
}
include!("tests_run_gguf_02.rs");
include!("tests_prompt.rs");
}
include!("tests_run_gguf.rs");