summaryrefslogtreecommitdiff
path: root/rust/tests/background_task.rs
diff options
context:
space:
mode:
Diffstat (limited to 'rust/tests/background_task.rs')
-rw-r--r--rust/tests/background_task.rs49
1 files changed, 49 insertions, 0 deletions
diff --git a/rust/tests/background_task.rs b/rust/tests/background_task.rs
new file mode 100644
index 00000000..d0c329e3
--- /dev/null
+++ b/rust/tests/background_task.rs
@@ -0,0 +1,49 @@
+use binaryninja::background_task::*;
+use binaryninja::headless::Session;
+use rstest::*;
+
+#[fixture]
+#[once]
+fn session() -> Session {
+ Session::new().expect("Failed to initialize session")
+}
+
+#[rstest]
+fn test_background_task_registered(_session: &Session) {
+ let task_progress = "test registered";
+ let task = BackgroundTask::new(task_progress, false);
+ BackgroundTask::running_tasks()
+ .iter()
+ .find(|t| t.progress_text().as_str() == task_progress)
+ .expect("Task not running");
+ task.finish();
+ let still_running = BackgroundTask::running_tasks()
+ .iter()
+ .find(|t| t.progress_text().as_str() == task_progress)
+ .is_some();
+ assert!(!still_running, "Task still running");
+}
+
+#[rstest]
+fn test_background_task_cancellable(_session: &Session) {
+ let task_progress = "test cancellable";
+ let task = BackgroundTask::new(task_progress, false);
+ BackgroundTask::running_tasks()
+ .iter()
+ .find(|t| t.progress_text().as_str() == task_progress)
+ .expect("Task not running");
+ task.cancel();
+ assert!(task.is_cancelled());
+ task.finish();
+}
+
+#[rstest]
+fn test_background_task_progress(_session: &Session) {
+ let task = BackgroundTask::new("test progress", false);
+ let first_progress = task.progress_text().to_string();
+ assert_eq!(first_progress, "test progress");
+ task.set_progress_text("new progress");
+ let second_progress = task.progress_text().to_string();
+ assert_eq!(second_progress, "new progress");
+ task.finish();
+}