Skip to content

Commit aad8c2f

Browse files
committed
adds schedule test
1 parent 25c3438 commit aad8c2f

File tree

4 files changed

+22
-0
lines changed

4 files changed

+22
-0
lines changed

rustler_tests/lib/rustler_test.ex

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,8 @@ defmodule RustlerTest do
7474

7575
def sum_range(_), do: err()
7676

77+
def scheduled_fac(_, _ \\ nil), do: err()
78+
7779
def bad_arg_error(), do: err()
7880
def atom_str_error(), do: err()
7981
def raise_atom_error(), do: err()

rustler_tests/native/rustler_test/src/lib.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ mod test_nif_attrs;
1010
mod test_primitives;
1111
mod test_range;
1212
mod test_resource;
13+
mod test_schedule;
1314
mod test_term;
1415
mod test_thread;
1516

@@ -65,6 +66,7 @@ rustler::init!(
6566
test_codegen::tuplestruct_record_echo,
6667
test_dirty::dirty_cpu,
6768
test_dirty::dirty_io,
69+
test_schedule::scheduled_fac,
6870
test_range::sum_range,
6971
test_error::bad_arg_error,
7072
test_error::atom_str_error,
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
use rustler::schedule::Schedule;
2+
3+
#[rustler::nif]
4+
fn scheduled_fac(input: u32, result: Option<u32>) -> Schedule<scheduled_fac, u32, u32, u32> {
5+
let result = result.unwrap_or(1);
6+
if input == 0 {
7+
Schedule::Result(result)
8+
} else {
9+
Schedule::next2(input - 1, result * input)
10+
}
11+
}

rustler_tests/test/schedule_test.exs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
defmodule RustlerTest.ScheduleTest do
2+
use ExUnit.Case, async: true
3+
4+
test "scheduled factorial" do
5+
assert 24 == RustlerTest.scheduled_fac(4)
6+
end
7+
end

0 commit comments

Comments
 (0)