Livt packages

Livt.Collections

Version 1.4.2

Fixed-capacity FIFOs, queues, stacks, circular buffers, lists, and bit sets for Livt hardware.

Published files (62)

tests/queue/QueueInterfaceTest.lvt

namespace Livt.Collections.Tests

using Livt.Collections

/**
 * Verifies the same scheduled contract through generic interface references.
 */
@Test
component QueueInterfaceTest
{
	// Shared fixture instances, signals, and observation state.
	bytes: IQueue<byte>
	numbers: IQueue<int>

	/**
	 * Binds an inherited byte specialization and a generic integer queue.
	 */
	new()
	{
		this.bytes = new Queue8()
		this.numbers = new Livt.Collections.Queue<int, 3>()
	}

	/**
	 * Checks the named byte queue case.
	 */
	@Test
	fn TestNamedByteQueue()
	{
		this.bytes.Clear()
		assert this.bytes.GetSpace() == 8
		assert this.bytes.TryEnqueue(0x00) == true
		assert this.bytes.GetCount() == 1
		var value: byte = 0xFF
		assert this.bytes.TryDequeue(value) == true
		assert value == 0x00
		assert this.bytes.TryDequeue(value) == false
		assert value == 0x00
	}

	/**
	 * Checks the generic integer queue case.
	 */
	@Test
	fn TestGenericIntegerQueue()
	{
		this.numbers.Clear()
		assert this.numbers.TryEnqueue(-123) == true
		assert this.numbers.TryEnqueue(0) == true
		assert this.numbers.TryEnqueue(456) == true
		assert this.numbers.TryEnqueue(999) == false
		assert this.numbers.GetCount() == 3
		assert this.numbers.GetSpace() == 0
		var value: int
		assert this.numbers.TryDequeue(value) == true
		assert value == -123
		assert this.numbers.TryDequeue(value) == true
		assert value == 0
		assert this.numbers.TryDequeue(value) == true
		assert value == 456
		assert this.numbers.TryDequeue(value) == false
		assert value == 0
	}
}