wdext 0.1.0

A DbgEng wrapper framework
// SPDX-FileCopyrightText: 2026 takubokudori
// SPDX-License-Identifier: MIT OR Apache-2.0
#[cfg(test)]
pub mod tests {
    use crate::tests::util::local_debug2;
    use wdext::dbgmodel::WdModelObjectKind;
    use windows::Win32::Foundation::S_OK;

    mod util;

    #[test]
    fn test_dbgmodel() {
        let ctx = local_debug2();
        let (manager, host) = ctx.client().get_data_model().unwrap();
        let _ctx = host.get_current_context().unwrap();
        let message = "test";
        let obj = manager.create_no_value_object().unwrap();
        assert_eq!(obj.0.get_kind().unwrap(), WdModelObjectKind::NoValue);
        let obj = manager.create_error_object(S_OK, message).unwrap();
        assert_eq!(obj.0.get_kind().unwrap(), WdModelObjectKind::ObjectError);
        assert_eq!(obj.get_message(None).unwrap(), message);

        let model_name = "Debugger.Models.Process.WdExtension";
        let not_exists = manager.acquire_named_model(model_name).unwrap();
        not_exists.get_displayable_string(None).unwrap_err();
        obj.register(&manager, model_name).unwrap();
        let obj2 = manager.acquire_named_model(model_name).unwrap();
        assert!(obj.0 == obj2);
        assert_eq!(obj2.get_displayable_string(None).unwrap(), message);

        // add_namespace("Debugger.Utility.WdExt");
        // add_method("Debugger.Utility.WdExt.MyMethod", method);
        let root = manager.get_root_namespace().unwrap();
        let data = root.enumerate_keys().unwrap().collect::<Vec<_>>();
        assert_eq!(data.len(), 1);
        let data = data.first().unwrap().as_ref().unwrap();
        assert_eq!(data.0, "Debugger");
    }
}