MCPcopy Create free account
hub / github.com/SeaQL/FireDBG.for.Rust / main

Function main

debugger/tests/return_result.rs:10–122  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

8
9#[tokio::test]
10async 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(),

Callers

nothing calls this directly

Calls 7

setupFunction · 0.85
into_bytesMethod · 0.80
nextMethod · 0.80
redact_addrMethod · 0.80
runFunction · 0.50
endMethod · 0.45

Tested by

no test coverage detected