diff options
Diffstat (limited to 'rust/tests/types.rs')
| -rw-r--r-- | rust/tests/types.rs | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/rust/tests/types.rs b/rust/tests/types.rs new file mode 100644 index 00000000..f745de0c --- /dev/null +++ b/rust/tests/types.rs @@ -0,0 +1,50 @@ +use binaryninja::headless::Session; +use binaryninja::types::{MemberAccess, MemberScope, StructureBuilder, StructureMember, Type}; +use rstest::*; + +#[fixture] +#[once] +fn session() -> Session { + Session::new().expect("Failed to initialize session") +} + +#[rstest] +fn test_type_to_string(_session: &Session) { + let test_type = Type::int(4, true); + assert_eq!(test_type.to_string(), "int32_t".to_string()); +} + +#[rstest] +fn test_structure_builder(_session: &Session) { + let mut builder = StructureBuilder::new(); + builder.insert( + &Type::int(4, true), + "field_1", + 0, + false, + MemberAccess::PrivateAccess, + MemberScope::FriendScope, + ); + builder.insert( + &Type::float(8), + "field_2", + 4, + false, + MemberAccess::PublicAccess, + MemberScope::NoScope, + ); + + let structure = builder.finalize(); + let members = structure.members(); + assert_eq!(members.len(), 2); + assert_eq!( + members[0], + StructureMember { + name: "field_1".to_string(), + ty: Type::int(4, true).into(), + offset: 0, + access: MemberAccess::PrivateAccess, + scope: MemberScope::FriendScope, + } + ); +} |
