use crate::metadata::{
method::MethodRc,
tables::{AssemblyRefRc, ModuleRefRc},
typesystem::CilTypeRc,
};
use super::builders::{AssemblyRefBuilder, CilTypeBuilder, MethodBuilder, ModuleRefBuilder};
pub fn create_inheritance_scenario() -> (CilTypeRc, CilTypeRc) {
let base_class = CilTypeBuilder::simple_class("Test", "BaseClass").build();
let derived_class = CilTypeBuilder::simple_class("Test", "DerivedClass").build();
(base_class, derived_class)
}
pub fn create_class_with_members(class_name: &str) -> (CilTypeRc, Vec<MethodRc>) {
let class_type = CilTypeBuilder::simple_class("Test", class_name).build();
let methods = vec![
MethodBuilder::constructor().build(),
MethodBuilder::property_getter("Name").build(),
MethodBuilder::property_setter("Name").build(),
MethodBuilder::simple_void_method("DoSomething").build(),
];
(class_type, methods)
}
pub fn create_standard_assembly_refs() -> Vec<AssemblyRefRc> {
vec![
AssemblyRefBuilder::dotnet_framework("mscorlib").build(),
AssemblyRefBuilder::dotnet_framework("System").build(),
AssemblyRefBuilder::dotnet_framework("System.Core").build(),
AssemblyRefBuilder::dotnet_core("System.Runtime").build(),
AssemblyRefBuilder::dotnet_core("System.Collections").build(),
]
}
pub fn create_standard_module_refs() -> Vec<ModuleRefRc> {
vec![
ModuleRefBuilder::new().with_name("kernel32.dll").build(),
ModuleRefBuilder::new().with_name("user32.dll").build(),
ModuleRefBuilder::new().with_name("advapi32.dll").build(),
]
}