Current section

Files

Jump to
ex_timer test ex_timer_test.exs
Raw

test/ex_timer_test.exs

defmodule ExTimerTest do
use ExUnit.Case
require ExTimer
doctest ExTimer
test "ex_timer" do
state = %{calls: 0}
state = ExTimer.add(state, {:timeout_no_delay, :name, "min"}, 0)
state = ExTimer.update(state)
assert state.calls == 1
assert length(state.__timers__) == 0
state = ExTimer.add(state, {:timeout_with_delay, :name, "woog"}, 400)
state = ExTimer.update(state)
assert state.calls == 1
assert length(state.__timers__) != 0
:timer.sleep(500)
# after sleep for delay
state = ExTimer.update(state)
assert state.calls == 2
assert length(state.__timers__) == 0
# remove timer with tuple
state = ExTimer.add(state, {:timer1, :name, "111"}, 400)
assert length(state.__timers__) == 1
state = ExTimer.remove(state, {:timer1, :name})
assert length(state.__timers__) == 1
state = ExTimer.remove(state, {:timer1, "1", "111"})
assert length(state.__timers__) == 1
state = ExTimer.remove(state, {:timer1, :name, "222"})
assert length(state.__timers__) == 0
# remove timer with atom
state = ExTimer.add(state, :timer, 100)
assert length(state.__timers__) == 1
state = ExTimer.remove(state, :no_tuple)
assert length(state.__timers__) == 1
state = ExTimer.remove(state, :timer)
assert length(state.__timers__) == 0
# clear timers
state = ExTimer.add(state, {:timer1, :name, "min1"}, 400)
state = ExTimer.add(state, {:timer1, :name, "min2"}, 400)
assert length(state.__timers__) == 2
state = ExTimer.clear(state)
assert length(state.__timers__) == 0
end
def handle_info({:timeout_no_delay, arg0, arg1}, state) do
assert arg0 == :name
assert arg1 == "min"
state = put_in(state[:calls], state.calls + 1)
{:noreply, state}
end
def handle_info({:timeout_with_delay, arg0, arg1}, state) do
assert arg0 == :name
assert arg1 == "woog"
state = put_in(state[:calls], state.calls + 1)
{:noreply, state}
end
end