batch_mode_batch_schema/
batch_input_data.rs1crate::ix!();
3
4#[derive(Serialize,Deserialize,Builder,Getters,Clone,Debug)]
5#[builder(setter(into))]
6#[getset(get="pub")]
7pub struct BatchInputData {
8 requests: Vec<LanguageModelBatchAPIRequest>,
9}
10
11impl BatchInputData {
12
13 pub fn new(requests: Vec<LanguageModelBatchAPIRequest>) -> Self {
14 Self { requests }
15 }
16
17 pub fn request_ids(&self) -> Vec<CustomRequestId> {
18 self.requests.iter().map(|r| r.custom_id().clone()).collect()
19 }
20}
21
22#[cfg(test)]
23mod batch_input_data_tests {
24 use super::*;
25
26 #[traced_test]
27 fn should_create_new_batch_input_data() {
28 info!("Testing creation of BatchInputData with 'new' function.");
29
30 let requests = vec![
31 LanguageModelBatchAPIRequest::mock("id-A"),
32 LanguageModelBatchAPIRequest::mock("id-B"),
33 ];
34 let input_data = BatchInputData::new(requests.clone());
35
36 pretty_assert_eq!(input_data.requests().len(), 2, "Expected two requests in BatchInputData.");
37 debug!("Successfully created BatchInputData with {} requests.", input_data.requests().len());
38 }
39
40 #[traced_test]
41 fn should_return_request_ids_correctly() {
42 info!("Testing retrieval of request IDs from BatchInputData.");
43
44 let requests = vec![
45 LanguageModelBatchAPIRequest::mock("custom-1"),
46 LanguageModelBatchAPIRequest::mock("custom-2"),
47 ];
48 let input_data = BatchInputData::new(requests);
49
50 let ids = input_data.request_ids();
51 trace!("Extracted request IDs: {:?}", ids);
52
53 pretty_assert_eq!(ids.len(), 2, "Should have exactly 2 request IDs.");
54 assert!(ids.contains(&CustomRequestId::new("custom-1")));
55 assert!(ids.contains(&CustomRequestId::new("custom-2")));
56 }
57
58 #[traced_test]
59 fn should_handle_empty_requests() {
60 info!("Testing BatchInputData with an empty requests vector.");
61
62 let input_data = BatchInputData::new(vec![]);
63 pretty_assert_eq!(input_data.requests().len(), 0, "Expected no requests in empty BatchInputData.");
64
65 let ids = input_data.request_ids();
66 assert!(ids.is_empty(), "No request IDs should be returned for empty data.");
67 warn!("Confirmed empty request IDs for empty BatchInputData.");
68 }
69
70 #[traced_test]
71 fn should_consistently_reference_internal_requests_slice() {
72 info!("Testing that requests() returns the same slice reference each time.");
73
74 let requests = vec![LanguageModelBatchAPIRequest::mock("stable-1")];
75 let input_data = BatchInputData::new(requests);
76
77 let first_ref = input_data.requests() as *const _;
78 let second_ref = input_data.requests() as *const _;
79 pretty_assert_eq!(first_ref, second_ref, "Should return the same slice reference on subsequent calls.");
80 trace!("Both calls returned the same reference pointer: {:?}", first_ref);
81 }
82}