# frozen_string_literal: true
#
# This file is part of the "timers" project and released under the MIT license.
#
# Copyright, 2018, by Samuel Williams. All rights reserved.
#

require "spec_helper"
require "timers/wait"

RSpec.describe Timers::Wait do
	it "repeats until timeout expired" do
		timeout = Timers::Wait.new(5)
		count = 0

		timeout.while_time_remaining do |remaining|
			expect(remaining).to be_within(TIMER_QUANTUM).of(timeout.duration - count)

			count += 1
			sleep 1
		end

		expect(count).to eq(5)
	end

	it "yields results as soon as possible" do
		timeout = Timers::Wait.new(5)

		result = timeout.while_time_remaining do |_remaining|
			break :done
		end

		expect(result).to eq(:done)
	end
end
