summaryrefslogtreecommitdiff
path: root/rust/tests/types.rs
diff options
context:
space:
mode:
Diffstat (limited to 'rust/tests/types.rs')
-rw-r--r--rust/tests/types.rs50
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,
+ }
+ );
+}