Livt packages

Livt.Net

Version 1.4.1

Ethernet, IPv4, TCP, UDP, ARP, TFTP, and Telnet networking components for Livt hardware.

Published files (163)

tests/tftp/TftpUploadBufferTest.lvt

namespace Livt.Net.Tests

using Livt.Net
using Livt.IO

/**
 * Shared staging keeps filename/data regions disjoint for every supported backend.
 */
@Test
component TftpUploadBufferTest
{
	// Independent stores; each test initializes every byte it reads.
	automatic: TftpUploadBuffer<MemoryStyle.Auto>
	block: TftpUploadBuffer
	distributed: TftpUploadBuffer<MemoryStyle.Distributed>
	array: TftpUploadBuffer<MemoryStyle.Auto, ArrayRam<byte, 576>>

	/**
	 * Constructs each backend in the same test context.
	 */
	new()
	{
		automatic = new TftpUploadBuffer<MemoryStyle.Auto>()
		block = new TftpUploadBuffer()
		distributed = new TftpUploadBuffer<MemoryStyle.Distributed>()
		array = new TftpUploadBuffer<MemoryStyle.Auto, ArrayRam<byte, 576>>()
	}

	/**
	 * Verifies region isolation and both invalid-address boundaries for automatic storage.
	 */
	@Test
	fn PreservesAutomaticRegions()
	{
		for (var index = 0; index < 64; index++) {
			assert automatic.SetNameByte(index, (index + 128) as byte)
		}

		for (var index = 0; index < 512; index++) {
			assert automatic.SetDataByte(index, index as byte)
		}

		assert !automatic.SetNameByte(-1, 0xFF)
		assert !automatic.SetNameByte(64, 0xFF)
		assert !automatic.SetDataByte(-1, 0xFF)
		assert !automatic.SetDataByte(512, 0xFF)

		for (var index = 0; index < 64; index++) {
			assert automatic.GetNameByte(index) == ((index + 128) as byte)
		}

		for (var index = 0; index < 512; index++) {
			assert automatic.GetDataByte(index) == (index as byte)
		}

		assert automatic.GetNameByte(-1) == 0 && automatic.GetNameByte(64) == 0
		assert automatic.GetDataByte(-1) == 0 && automatic.GetDataByte(512) == 0
	}

	/**
	 * Verifies region isolation and both invalid-address boundaries for block storage.
	 */
	@Test
	fn PreservesBlockRegions()
	{
		for (var index = 0; index < 64; index++) {
			assert block.SetNameByte(index, (index + 128) as byte)
		}

		for (var index = 0; index < 512; index++) {
			assert block.SetDataByte(index, index as byte)
		}

		assert !block.SetNameByte(-1, 0xFF)
		assert !block.SetNameByte(64, 0xFF)
		assert !block.SetDataByte(-1, 0xFF)
		assert !block.SetDataByte(512, 0xFF)

		for (var index = 0; index < 64; index++) {
			assert block.GetNameByte(index) == ((index + 128) as byte)
		}

		for (var index = 0; index < 512; index++) {
			assert block.GetDataByte(index) == (index as byte)
		}

		assert block.GetNameByte(-1) == 0 && block.GetNameByte(64) == 0
		assert block.GetDataByte(-1) == 0 && block.GetDataByte(512) == 0
	}

	/**
	 * Verifies region isolation and both invalid-address boundaries for distributed storage.
	 */
	@Test
	fn PreservesDistributedRegions()
	{
		for (var index = 0; index < 64; index++) {
			assert distributed.SetNameByte(index, (index + 128) as byte)
		}

		for (var index = 0; index < 512; index++) {
			assert distributed.SetDataByte(index, index as byte)
		}

		assert !distributed.SetNameByte(-1, 0xFF)
		assert !distributed.SetNameByte(64, 0xFF)
		assert !distributed.SetDataByte(-1, 0xFF)
		assert !distributed.SetDataByte(512, 0xFF)

		for (var index = 0; index < 64; index++) {
			assert distributed.GetNameByte(index) == ((index + 128) as byte)
		}

		for (var index = 0; index < 512; index++) {
			assert distributed.GetDataByte(index) == (index as byte)
		}

		assert distributed.GetNameByte(-1) == 0 && distributed.GetNameByte(64) == 0
		assert distributed.GetDataByte(-1) == 0 && distributed.GetDataByte(512) == 0
	}

	/**
	 * Verifies region isolation and both invalid-address boundaries for array storage.
	 */
	@Test
	fn PreservesArrayRegions()
	{
		for (var index = 0; index < 64; index++) {
			assert array.SetNameByte(index, (index + 128) as byte)
		}

		for (var index = 0; index < 512; index++) {
			assert array.SetDataByte(index, index as byte)
		}

		assert !array.SetNameByte(-1, 0xFF)
		assert !array.SetNameByte(64, 0xFF)
		assert !array.SetDataByte(-1, 0xFF)
		assert !array.SetDataByte(512, 0xFF)

		for (var index = 0; index < 64; index++) {
			assert array.GetNameByte(index) == ((index + 128) as byte)
		}

		for (var index = 0; index < 512; index++) {
			assert array.GetDataByte(index) == (index as byte)
		}

		assert array.GetNameByte(-1) == 0 && array.GetNameByte(64) == 0
		assert array.GetDataByte(-1) == 0 && array.GetDataByte(512) == 0
	}
}