Livt packages

Livt.Signal

Version 0.1.1

Q1.15 sample streams, filters, windows, rate conversion, FFTs, oscillators, and mixers for Livt.

Published files (80)

tests/stream/Q15SampleFifoTest.lvt

namespace Livt.Signal.Stream

/**
 * Verifies framed Q1.15 buffering through a packed four-token FIFO.
 */
@Test
component Q15SampleFifoTest
{
	fixture: Q15SampleFifoFixture

	/**
	 * Creates a fresh composed stream fixture.
	 */
	new()
	{
		fixture = new Q15SampleFifoFixture()
	}

	/**
	 * Fills to capacity, holds the head stable, and drains in acceptance order.
	 */
	@Test
	fn PreservesTokensWhenFullAndDraining()
	{
		fixture.outputReady = false
		Simulation.Wait(100)
		assert fixture.sourceAccepted == 4
		assert fixture.outputValid
		assert fixture.outputSample == 0x8000
		assert fixture.outputFirst
		assert !fixture.outputLast

		Simulation.Wait(5)
		assert fixture.outputValid
		assert fixture.outputSample == 0x8000
		assert fixture.outputFirst
		assert !fixture.outputLast

		fixture.outputReady = true
		Simulation.Wait(12)
		fixture.outputReady = false
		Simulation.Wait(3)
		assert !fixture.outputValid
		assert fixture.accepted == 4
		assert fixture.capturedSample0 == 0x8000
		assert fixture.capturedSample1 == 0xFFFF
		assert fixture.capturedSample2 == 0x0000
		assert fixture.capturedSample3 == 0x7FFF
		assert fixture.capturedFirst0
		assert fixture.capturedLast3
	}
}