()
| 8 | |
| 9 | #[tokio::test] |
| 10 | async fn main() -> Result<()> { |
| 11 | let testcase = "return_result"; |
| 12 | |
| 13 | let debugger_params = debugger_params_from_file(testcase); |
| 14 | |
| 15 | let (producer, consumer) = setup(testcase).await?; |
| 16 | |
| 17 | Debugger::run(debugger_params, producer.clone()); |
| 18 | |
| 19 | producer.end().await?; |
| 20 | |
| 21 | for i in 0..138 { |
| 22 | let payload = consumer.next().await?.message().into_bytes(); |
| 23 | let event = EventStream::read_from(Bytes::from(payload)); |
| 24 | // println!("#{i} {:?}", event); |
| 25 | match event { |
| 26 | Event::FunctionReturn { |
| 27 | function_name, |
| 28 | mut return_value, |
| 29 | .. |
| 30 | } => { |
| 31 | return_value.redact_addr(); |
| 32 | let json = serde_json::to_string(&return_value).unwrap(); |
| 33 | if let RValue::Result { .. } = return_value { |
| 34 | assert_eq!( |
| 35 | json, |
| 36 | match i { |
| 37 | 2 => r#"{"type":"Result","typename":"core::result::Result<(), ()>","variant":"Ok","value":{"type":"Unit"}}"#.to_owned(), |
| 38 | 4 => r#"{"type":"Result","typename":"core::result::Result<(), ()>","variant":"Err","value":{"type":"Unit"}}"#.to_owned(), |
| 39 | 6 => make_result("i8", "()", Ok(()), "8"), |
| 40 | 8 => r#"{"type":"Result","typename":"core::result::Result<i8, ()>","variant":"Err","value":{"type":"Unit"}}"#.to_owned(), |
| 41 | 10 => make_result("i32", "i32", Ok(()), "88888"), |
| 42 | 12 => make_result("i32", "i32", Err(()), "-222222"), |
| 43 | 14 => make_result("u32", "i32", Ok(()), "88888"), |
| 44 | 16 => make_result("u32", "i32", Err(()), "-222222"), |
| 45 | 18 => make_result("i8", "u8", Ok(()), "-2"), |
| 46 | 20 => make_result("i8", "u8", Err(()), "250"), |
| 47 | 22 => make_result("i16", "i32", Ok(()), "-4444"), |
| 48 | 24 => make_result("i16", "i32", Err(()), "222222"), |
| 49 | 26 => make_result("i32", "i64", Ok(()), "-222222"), |
| 50 | 28 => make_result("i32", "i64", Err(()), "\"22222222222\""), |
| 51 | 30 => make_result("i8", "i8", Ok(()), "22"), |
| 52 | 32 => make_result("i8", "i8", Err(()), "-108"), |
| 53 | 34 => make_result("u64", "i64", Ok(()), "\"22222222222\""), |
| 54 | 36 => make_result("u64", "i64", Err(()), "\"-222222222\""), |
| 55 | 38 => make_result("f32", "f32", Ok(()), "2.2"), |
| 56 | 40 => make_result("f32", "f32", Err(()), "3.3"), |
| 57 | 42 => make_result("f32", "f64", Ok(()), "2.2"), |
| 58 | 44 => make_result("f32", "f64", Err(()), "3.3"), |
| 59 | 46 => make_result("f64", "f64", Ok(()), "2.2"), |
| 60 | 48 => make_result("f64", "f64", Err(()), "3.3"), |
| 61 | // |
| 62 | 50 => r#"{"type":"Result","typename":"core::result::Result<&i32, &u64>","variant":"Err","value":{"type":"Ref","typename":"ref","addr":"<redacted>","value":{"type":"Prim","typename":"u64","value":"12"}}}"#.to_owned(), |
| 63 | 52 => r#"{"type":"Result","typename":"core::result::Result<&i32, &u64>","variant":"Ok","value":{"type":"Ref","typename":"ref","addr":"<redacted>","value":{"type":"Prim","typename":"i32","value":2222}}}"#.to_owned(), |
| 64 | 54 => // Small has been boiled down |
| 65 | r#"{"type":"Result","typename":"core::result::Result<return_result::Small, i32>","variant":"Ok","value":{"type":"Prim","typename":"i32","value":8888}}"#.to_owned(), |
| 66 | 56 => make_result("return_result::Small", "i32", Err(()), "-222222"), |
| 67 | 58 => r#"{"type":"Result","typename":"core::result::Result<return_result::Small, return_result::Big>","variant":"Ok","value":{"type":"Struct","typename":"return_result::Small","fields":{"i":{"type":"Struct","typename":"return_result::Inner","fields":{"0":{"type":"Prim","typename":"i32","value":8888}}}}}}"#.to_owned(), |
nothing calls this directly
no test coverage detected