summaryrefslogtreecommitdiff
path: root/rust/tests/background_task.rs
blob: 6e0c354b6d82518b5cc883e0342b0ab7fc51480f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
use binaryninja::background_task::*;
use binaryninja::headless::Session;

#[test]
fn test_background_task_registered() {
    let _session = Session::new().expect("Failed to initialize 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");
}

#[test]
fn test_background_task_cancellable() {
    let _session = Session::new().expect("Failed to initialize 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();
}

#[test]
fn test_background_task_progress() {
    let _session = Session::new().expect("Failed to initialize 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();
}