Before:
  Save g:ale_enabled

  unlet! b:ale_quitting
  let g:ale_enabled = 0

After:
  Restore

  unlet! b:ale_quitting
  unlet! b:time_before

Execute(QuitEvent should set b:ale_quitting some time from the clock):
  let b:time_before = ale#events#ClockMilliseconds()

  call ale#events#QuitEvent(bufnr(''))

  Assert b:ale_quitting >= b:time_before
  Assert b:ale_quitting <= ale#events#ClockMilliseconds()

Execute(ReadOrEnterEvent should set b:ale_quitting to 0):
  let b:ale_quitting = 1

  call ale#events#ReadOrEnterEvent(bufnr(''))

  AssertEqual 0, b:ale_quitting

Execute(The QuitRecently function should work when the variable isn't set):
  AssertEqual 0, ale#events#QuitRecently(bufnr(''))

Execute(The QuitRecently function should return 1 when ALE quit recently):
  let b:ale_quitting = ale#events#ClockMilliseconds()

  AssertEqual 1, ale#events#QuitRecently(bufnr(''))

Execute(The QuitRecently function should return 0 when a second has passed):
  let b:ale_quitting = ale#events#ClockMilliseconds() - 1001

  AssertEqual 0, ale#events#QuitRecently(bufnr(''))