summaryrefslogtreecommitdiff
path: root/rust/tests
diff options
context:
space:
mode:
Diffstat (limited to 'rust/tests')
-rw-r--r--rust/tests/base_detection.rs1
-rw-r--r--rust/tests/binary_reader.rs2
-rw-r--r--rust/tests/binary_view.rs77
-rw-r--r--rust/tests/binary_writer.rs2
-rw-r--r--rust/tests/collaboration.rs1
-rw-r--r--rust/tests/component.rs1
-rw-r--r--rust/tests/data_notification.rs2
-rw-r--r--rust/tests/data_renderer.rs2
-rw-r--r--rust/tests/debug_info.rs2
-rw-r--r--rust/tests/function.rs2
-rw-r--r--rust/tests/high_level_il.rs2
-rw-r--r--rust/tests/language_representation.rs2
-rw-r--r--rust/tests/low_level_il.rs1
-rw-r--r--rust/tests/medium_level_il.rs1
-rw-r--r--rust/tests/render_layer.rs1
-rw-r--r--rust/tests/section.rs1
-rw-r--r--rust/tests/type_container.rs2
-rw-r--r--rust/tests/type_library.rs1
-rw-r--r--rust/tests/types.rs2
19 files changed, 85 insertions, 20 deletions
diff --git a/rust/tests/base_detection.rs b/rust/tests/base_detection.rs
index e42c6071..5addcb29 100644
--- a/rust/tests/base_detection.rs
+++ b/rust/tests/base_detection.rs
@@ -1,5 +1,4 @@
use binaryninja::base_detection::{BaseAddressDetectionConfidence, BaseAddressDetectionSettings};
-use binaryninja::binary_view::BinaryViewExt;
use binaryninja::headless::Session;
use std::path::PathBuf;
diff --git a/rust/tests/binary_reader.rs b/rust/tests/binary_reader.rs
index 0adac464..9aca3efe 100644
--- a/rust/tests/binary_reader.rs
+++ b/rust/tests/binary_reader.rs
@@ -1,4 +1,4 @@
-use binaryninja::binary_view::{BinaryReader, BinaryViewBase, BinaryViewExt};
+use binaryninja::binary_view::{BinaryReader, BinaryViewBase};
use binaryninja::headless::Session;
use std::io::{Read, Seek, SeekFrom};
use std::path::PathBuf;
diff --git a/rust/tests/binary_view.rs b/rust/tests/binary_view.rs
index 11caf3d0..ff5f0514 100644
--- a/rust/tests/binary_view.rs
+++ b/rust/tests/binary_view.rs
@@ -1,15 +1,18 @@
use binaryninja::binary_view::search::SearchQuery;
use binaryninja::binary_view::{
- AnalysisProgress, AnalysisState, BinaryViewBase, BinaryViewExt, StringType,
+ register_binary_view_type, AnalysisProgress, BinaryView, BinaryViewBase, CustomBinaryView,
+ CustomBinaryViewType, StringType,
};
use binaryninja::data_buffer::DataBuffer;
-use binaryninja::file_metadata::SaveSettings;
+use binaryninja::file_metadata::{FileMetadata, SaveSettings};
use binaryninja::function::{Function, FunctionViewType};
use binaryninja::headless::Session;
use binaryninja::main_thread::execute_on_main_thread_and_wait;
use binaryninja::platform::Platform;
use binaryninja::rc::Ref;
+use binaryninja::segment::SegmentBuilder;
use binaryninja::symbol::{Symbol, SymbolBuilder, SymbolType};
+use binaryninja::Endianness;
use std::collections::{BTreeMap, HashSet};
use std::path::PathBuf;
@@ -203,3 +206,73 @@ fn test_deterministic_functions() {
insta::assert_debug_snapshot!(snapshot_name, functions);
}
}
+
+struct MyBinaryViewType;
+
+impl CustomBinaryViewType for MyBinaryViewType {
+ type CustomBinaryView = MyBinaryView;
+ const NAME: &'static str = "MyBinaryView";
+
+ fn create_binary_view(&self, _data: &BinaryView) -> Result<Self::CustomBinaryView, ()> {
+ Ok(MyBinaryView)
+ }
+
+ fn is_valid_for(&self, data: &BinaryView) -> bool {
+ let mut buffer = [0u8; 4];
+ data.read(&mut buffer, 0);
+ buffer == [0x42, 0x42, 0x42, 0x42]
+ }
+}
+
+struct MyBinaryView;
+
+impl BinaryViewBase for MyBinaryView {
+ fn default_endianness(&self) -> Endianness {
+ Endianness::LittleEndian
+ }
+
+ fn address_size(&self) -> usize {
+ 4
+ }
+}
+
+impl CustomBinaryView for MyBinaryView {
+ fn initialize(&mut self, view: &BinaryView) -> bool {
+ let test_sym = SymbolBuilder::new(SymbolType::Symbolic, "hello", 0).create();
+ view.define_auto_symbol(&test_sym);
+ view.add_segment(SegmentBuilder::new(0..4).parent_backing(0..4).is_auto(true));
+ true
+ }
+}
+
+#[test]
+fn test_custom_view() {
+ let _session = Session::new().expect("Failed to initialize session");
+ let invalid_view = BinaryView::from_data(&FileMetadata::new(), &[0x0, 0x0, 0x0, 0x0]);
+ let valid_view = BinaryView::from_data(&FileMetadata::new(), &[0x42, 0x42, 0x42, 0x42]);
+ assert_eq!(MyBinaryViewType.is_valid_for(&invalid_view), false);
+ assert_eq!(MyBinaryViewType.is_valid_for(&valid_view), true);
+
+ let (_, core_type) = register_binary_view_type(MyBinaryViewType);
+ assert_eq!(core_type.is_valid_for(&invalid_view), false);
+ assert_eq!(core_type.is_valid_for(&valid_view), true);
+ assert_eq!(core_type.name(), "MyBinaryView");
+ assert_eq!(core_type.is_deprecated(), false);
+ assert_eq!(core_type.is_force_loadable(), false);
+
+ let created_view = core_type
+ .create(&valid_view)
+ .expect("Failed to create view");
+ assert_eq!(created_view.analysis_progress(), AnalysisProgress::Initial);
+
+ let hello_symbol = created_view
+ .symbol_by_address(0)
+ .expect("Failed to get symbol");
+ assert_eq!(hello_symbol.to_string(), "hello");
+
+ assert_eq!(
+ created_view.read_vec(0, 4),
+ vec![0x42, 0x42, 0x42, 0x42],
+ "View not backed by the parent data"
+ );
+}
diff --git a/rust/tests/binary_writer.rs b/rust/tests/binary_writer.rs
index b74b2837..e6881b98 100644
--- a/rust/tests/binary_writer.rs
+++ b/rust/tests/binary_writer.rs
@@ -1,4 +1,4 @@
-use binaryninja::binary_view::{BinaryReader, BinaryViewBase, BinaryViewExt, BinaryWriter};
+use binaryninja::binary_view::{BinaryReader, BinaryViewBase, BinaryWriter};
use binaryninja::headless::Session;
use std::io::{Read, Seek, SeekFrom, Write};
use std::path::PathBuf;
diff --git a/rust/tests/collaboration.rs b/rust/tests/collaboration.rs
index 914935b5..36066cf7 100644
--- a/rust/tests/collaboration.rs
+++ b/rust/tests/collaboration.rs
@@ -1,4 +1,3 @@
-use binaryninja::binary_view::BinaryViewExt;
use binaryninja::collaboration::{NoNameChangeset, Remote, RemoteFileType, RemoteProject};
use binaryninja::file_metadata::SaveSettings;
use binaryninja::headless::Session;
diff --git a/rust/tests/component.rs b/rust/tests/component.rs
index 3341f0d7..2cddb468 100644
--- a/rust/tests/component.rs
+++ b/rust/tests/component.rs
@@ -1,4 +1,3 @@
-use binaryninja::binary_view::BinaryViewExt;
use binaryninja::component::ComponentBuilder;
use binaryninja::headless::Session;
use std::path::PathBuf;
diff --git a/rust/tests/data_notification.rs b/rust/tests/data_notification.rs
index 669c8474..f277692a 100644
--- a/rust/tests/data_notification.rs
+++ b/rust/tests/data_notification.rs
@@ -1,6 +1,6 @@
use std::path::PathBuf;
-use binaryninja::binary_view::{BinaryView, BinaryViewExt};
+use binaryninja::binary_view::BinaryView;
use binaryninja::data_notification::*;
use binaryninja::function::Function;
use binaryninja::headless::Session;
diff --git a/rust/tests/data_renderer.rs b/rust/tests/data_renderer.rs
index fdf39697..a2ab372d 100644
--- a/rust/tests/data_renderer.rs
+++ b/rust/tests/data_renderer.rs
@@ -1,4 +1,4 @@
-use binaryninja::binary_view::{BinaryView, BinaryViewExt};
+use binaryninja::binary_view::BinaryView;
use binaryninja::data_renderer::{
register_data_renderer, render_lines_for_data, CustomDataRenderer, RegistrationType,
TypeContext,
diff --git a/rust/tests/debug_info.rs b/rust/tests/debug_info.rs
index 407b41d5..3627b4a0 100644
--- a/rust/tests/debug_info.rs
+++ b/rust/tests/debug_info.rs
@@ -1,4 +1,4 @@
-use binaryninja::binary_view::{BinaryView, BinaryViewExt};
+use binaryninja::binary_view::BinaryView;
use binaryninja::debuginfo::*;
use binaryninja::headless::Session;
use binaryninja::types::{MemberAccess, MemberScope, StructureBuilder, Type, TypeBuilder};
diff --git a/rust/tests/function.rs b/rust/tests/function.rs
index 507b405d..c7c9af73 100644
--- a/rust/tests/function.rs
+++ b/rust/tests/function.rs
@@ -1,4 +1,4 @@
-use binaryninja::binary_view::{BinaryView, BinaryViewExt};
+use binaryninja::binary_view::BinaryView;
use binaryninja::file_metadata::FileMetadata;
use binaryninja::headless::Session;
use binaryninja::platform::Platform;
diff --git a/rust/tests/high_level_il.rs b/rust/tests/high_level_il.rs
index d3a4b05a..aeb15cc6 100644
--- a/rust/tests/high_level_il.rs
+++ b/rust/tests/high_level_il.rs
@@ -1,4 +1,4 @@
-use binaryninja::binary_view::{BinaryViewBase, BinaryViewExt};
+use binaryninja::binary_view::BinaryViewBase;
use binaryninja::headless::Session;
use binaryninja::high_level_il::{
HighLevelExpressionIndex, HighLevelILInstructionKind, HighLevelInstructionIndex,
diff --git a/rust/tests/language_representation.rs b/rust/tests/language_representation.rs
index f4aeb7bd..78af7d7f 100644
--- a/rust/tests/language_representation.rs
+++ b/rust/tests/language_representation.rs
@@ -1,7 +1,7 @@
use std::path::PathBuf;
use binaryninja::architecture::CoreArchitecture;
-use binaryninja::binary_view::{BinaryView, BinaryViewExt};
+use binaryninja::binary_view::BinaryView;
use binaryninja::disassembly::{
DisassemblySettings, DisassemblyTextLine, InstructionTextToken, InstructionTextTokenKind,
};
diff --git a/rust/tests/low_level_il.rs b/rust/tests/low_level_il.rs
index e6f8d8ff..efae0a62 100644
--- a/rust/tests/low_level_il.rs
+++ b/rust/tests/low_level_il.rs
@@ -1,7 +1,6 @@
use binaryninja::architecture::{
Architecture, ArchitectureExt, CoreArchitecture, Intrinsic, Register,
};
-use binaryninja::binary_view::BinaryViewExt;
use binaryninja::headless::Session;
use binaryninja::low_level_il::expression::{
ExpressionHandler, LowLevelExpressionIndex, LowLevelILExpressionKind,
diff --git a/rust/tests/medium_level_il.rs b/rust/tests/medium_level_il.rs
index a921965f..d4f76345 100644
--- a/rust/tests/medium_level_il.rs
+++ b/rust/tests/medium_level_il.rs
@@ -1,4 +1,3 @@
-use binaryninja::binary_view::BinaryViewExt;
use binaryninja::headless::Session;
use binaryninja::medium_level_il::{
MediumLevelExpressionIndex, MediumLevelILInstructionKind, MediumLevelILLiftedInstructionKind,
diff --git a/rust/tests/render_layer.rs b/rust/tests/render_layer.rs
index 6f6ebc98..6ca391df 100644
--- a/rust/tests/render_layer.rs
+++ b/rust/tests/render_layer.rs
@@ -1,5 +1,4 @@
use binaryninja::basic_block::BasicBlock;
-use binaryninja::binary_view::BinaryViewExt;
use binaryninja::disassembly::{DisassemblyOption, DisassemblySettings, DisassemblyTextLine};
use binaryninja::function::NativeBlock;
use binaryninja::headless::Session;
diff --git a/rust/tests/section.rs b/rust/tests/section.rs
index ea3d8e06..ab1703c6 100644
--- a/rust/tests/section.rs
+++ b/rust/tests/section.rs
@@ -1,4 +1,3 @@
-use binaryninja::binary_view::BinaryViewExt;
use binaryninja::headless::Session;
use binaryninja::section::{SectionBuilder, Semantics};
use std::path::PathBuf;
diff --git a/rust/tests/type_container.rs b/rust/tests/type_container.rs
index a0916ef4..ab4cbb0b 100644
--- a/rust/tests/type_container.rs
+++ b/rust/tests/type_container.rs
@@ -1,4 +1,4 @@
-use binaryninja::binary_view::{BinaryView, BinaryViewExt};
+use binaryninja::binary_view::BinaryView;
use binaryninja::file_metadata::FileMetadata;
use binaryninja::headless::Session;
use binaryninja::platform::Platform;
diff --git a/rust/tests/type_library.rs b/rust/tests/type_library.rs
index 19115f35..559aae7c 100644
--- a/rust/tests/type_library.rs
+++ b/rust/tests/type_library.rs
@@ -1,4 +1,3 @@
-use binaryninja::binary_view::BinaryViewExt;
use binaryninja::headless::Session;
use binaryninja::platform::Platform;
use binaryninja::types::{Type, TypeClass, TypeLibrary};
diff --git a/rust/tests/types.rs b/rust/tests/types.rs
index c13a1c88..a661b4ed 100644
--- a/rust/tests/types.rs
+++ b/rust/tests/types.rs
@@ -1,4 +1,4 @@
-use binaryninja::binary_view::{BinaryView, BinaryViewExt};
+use binaryninja::binary_view::BinaryView;
use binaryninja::confidence::Conf;
use binaryninja::file_metadata::FileMetadata;
use binaryninja::headless::Session;