Livt packages

Livt.FileSystems

Version 0.0.2

Bounded, read-only FAT32 file streaming and partition discovery for Livt FPGA applications.

Published files (15)

tests/ShortFileNameTest.lvt

namespace Livt.FileSystems.Tests

using Livt.FileSystems

/**
 * Checks exact 8.3 bounds, case normalization and path rejection.
 */
@Test
component ShortFileNameTest
{
	// Owned parser reset before every input case.
	name: ShortFileName

	/**
	 * Owns the incremental short-name parser.
	 */
	new()
	{
		name = new ShortFileName()
	}

	/**
	 * Resets the parser for each input and checks the expected acceptance.
	 */
	fn Parse(text: byte[], valid: bool)
	{
		name.Reset()

		for (var index = 0; index < text.Length; index++) {
			name.Append(text[index])
		}

		assert name.IsValid() == valid
	}

	/**
	 * Checks padded aliases, exact bounds, empty names and unsupported paths.
	 */
	@Test
	fn NormalizesAndRejectsInvalidNames()
	{
		Parse("data.bin".Encode(), true)
		assert name.GetByte(0) == 68
		assert name.GetByte(4) == 32
		assert name.GetByte(8) == 66
		Parse("ABCDEFGH.XYZ".Encode(), true)
		Parse("README".Encode(), true)
		Parse("TOO_LONG1.BIN".Encode(), false)
		Parse("DATA.BINX".Encode(), false)
		Parse("DATA.".Encode(), false)
		Parse(".BIN".Encode(), false)
		Parse("A..B".Encode(), false)
		Parse("A/B.BIN".Encode(), false)
		Parse("".Encode(), false)
	}
}