Mercurial > crates > nonstick
comparison src/libpam/answer.rs @ 79:2128123b9406
Format (oops!) and make some fun and/or stupid conversions available.
author | Paul Fisher <paul@pfish.zone> |
---|---|
date | Sun, 08 Jun 2025 04:21:58 -0400 |
parents | 002adfb98c5c |
children | 5aa1a010f1e8 |
comparison
equal
deleted
inserted
replaced
78:002adfb98c5c | 79:2128123b9406 |
---|---|
230 #[cfg(test)] | 230 #[cfg(test)] |
231 mod tests { | 231 mod tests { |
232 use super::{Answer, Answers, BinaryAnswer, TextAnswer}; | 232 use super::{Answer, Answers, BinaryAnswer, TextAnswer}; |
233 use crate::conv::{BinaryQAndA, ErrorMsg, InfoMsg, MaskedQAndA, QAndA, RadioQAndA}; | 233 use crate::conv::{BinaryQAndA, ErrorMsg, InfoMsg, MaskedQAndA, QAndA, RadioQAndA}; |
234 use crate::libpam::conversation::OwnedMessage; | 234 use crate::libpam::conversation::OwnedMessage; |
235 use crate::libpam::memory; | |
235 use crate::BinaryData; | 236 use crate::BinaryData; |
236 use crate::libpam::memory; | |
237 | 237 |
238 #[test] | 238 #[test] |
239 fn test_round_trip() { | 239 fn test_round_trip() { |
240 let binary_msg = { | 240 let binary_msg = { |
241 let qa = BinaryQAndA::new((&[][..], 0)); | 241 let qa = BinaryQAndA::new((&[][..], 0)); |
293 } | 293 } |
294 | 294 |
295 #[test] | 295 #[test] |
296 fn test_text_answer() { | 296 fn test_text_answer() { |
297 let answer_ptr: *mut Answer = memory::calloc(1); | 297 let answer_ptr: *mut Answer = memory::calloc(1); |
298 let answer = unsafe {&mut *answer_ptr}; | 298 let answer = unsafe { &mut *answer_ptr }; |
299 TextAnswer::fill(answer, "hello").unwrap(); | 299 TextAnswer::fill(answer, "hello").unwrap(); |
300 let zeroth_text = unsafe { TextAnswer::upcast(answer) }; | 300 let zeroth_text = unsafe { TextAnswer::upcast(answer) }; |
301 let data = zeroth_text.contents().expect("valid"); | 301 let data = zeroth_text.contents().expect("valid"); |
302 assert_eq!("hello", data); | 302 assert_eq!("hello", data); |
303 zeroth_text.free_contents(); | 303 zeroth_text.free_contents(); |
308 | 308 |
309 #[test] | 309 #[test] |
310 fn test_binary_answer() { | 310 fn test_binary_answer() { |
311 let answer_ptr: *mut Answer = memory::calloc(1); | 311 let answer_ptr: *mut Answer = memory::calloc(1); |
312 let answer = unsafe { &mut *answer_ptr }; | 312 let answer = unsafe { &mut *answer_ptr }; |
313 let real_data = BinaryData::new(vec![1, 2, 3, 4, 5, 6, 7, 8], 9); | 313 let real_data = BinaryData::new([1, 2, 3, 4, 5, 6, 7, 8], 9); |
314 BinaryAnswer::fill(answer, (&real_data).into()).expect("alloc should succeed"); | 314 BinaryAnswer::fill(answer, (&real_data).into()).expect("alloc should succeed"); |
315 let bin_answer = unsafe { BinaryAnswer::upcast(answer) }; | 315 let bin_answer = unsafe { BinaryAnswer::upcast(answer) }; |
316 assert_eq!(real_data, bin_answer.data().into()); | 316 assert_eq!(real_data, bin_answer.data().into()); |
317 answer.free_contents(); | 317 answer.free_contents(); |
318 answer.free_contents(); | 318 answer.free_contents(); |
322 #[test] | 322 #[test] |
323 #[ignore] | 323 #[ignore] |
324 fn test_binary_answer_too_big() { | 324 fn test_binary_answer_too_big() { |
325 let big_data: Vec<u8> = vec![0xFFu8; 10_000_000_000]; | 325 let big_data: Vec<u8> = vec![0xFFu8; 10_000_000_000]; |
326 let answer_ptr: *mut Answer = memory::calloc(1); | 326 let answer_ptr: *mut Answer = memory::calloc(1); |
327 let answer = unsafe {&mut*answer_ptr}; | 327 let answer = unsafe { &mut *answer_ptr }; |
328 BinaryAnswer::fill(answer, (&big_data, 100)) | 328 BinaryAnswer::fill(answer, (&big_data, 100)).expect_err("this is too big!"); |
329 .expect_err("this is too big!"); | |
330 answer.free_contents(); | 329 answer.free_contents(); |
331 unsafe { memory::free(answer) } | 330 unsafe { memory::free(answer) } |
332 } | 331 } |
333 } | 332 } |