use lmcpp::*;
pub fn exercise_all(server: &lmcpp::LmcppServer) -> lmcpp::error::LmcppResult<()> {
let completion = server.completion(
CompletionRequest::builder()
.prompt("Hello from integration-tests!")
.n_predict(16),
)?;
assert!(
completion.content.is_some(),
"Completion should not return an empty string",
);
assert!(
!completion.content.unwrap().is_empty(),
"Completion should return non-empty content",
);
let tokenised = server.tokenize(TokenizeRequest::builder().content("round-trip"))?;
assert!(
!tokenised.tokens.is_empty(),
"Tokenise should yield at least one token",
);
let mut tokens = Vec::new();
for token in &tokenised.tokens {
match token {
TokenOutput::Id(id) => {
tokens.push(*id);
}
TokenOutput::IdWithPiece { id, .. } => {
tokens.push(*id);
}
}
}
let detokenised = server.detokenize(DetokenizeRequest::builder().tokens(tokens).build())?;
assert!(
detokenised.content.contains("round-trip"),
"Detokenise should reconstruct original text",
);
Ok(())
}