Livt packages
Livt.Net
Version 1.4.1
Ethernet, IPv4, TCP, UDP, ARP, TFTP, and Telnet networking components for Livt hardware.
Published files (163)
- ethernet
- services
- tftp
- ArpCompositionChecks.lvt
- ArpPacketParserTest.lvt
- ArpResponderTest.lvt
- ChecksumApiTest.lvt
- ChecksumWordSumTest.lvt
- CompactPacketFieldsTest.lvt
- CountingPacketData.lvt
- EthernetFrameBuilderTest.lvt
- EthernetFrameParserTest.lvt
- EthernetLiteDeviceFixture.lvt
- EthernetLiteDriverTest.lvt
- EthernetLiteReceiveWindowTest.lvt
- EthernetLiteResetScenario.lvt
- EthernetLiteResetTest.lvt
- FaultingFrameData.lvt
- FaultingPacketData.lvt
- FrameCapacityTest.lvt
- FrameCompositionTest.lvt
- FrameForwarder.lvt
- FrameLinkTest.lvt
- FrameMii10Link.lvt
- FrameMiiLink.lvt
- FrameMiiPins.lvt
- GenericPacketTest.lvt
- IcmpCapacityChecks.lvt
- IcmpEchoResponderTest.lvt
- IcmpStorageBackendTest.lvt
- InternetChecksumTest.lvt
- Ipv4HeaderBuilderTest.lvt
- Ipv4HeaderChecksumTest.lvt
- Ipv4PacketFieldsTest.lvt
- Ipv4PacketParserTest.lvt
- MiiFrame10Test.lvt
- MiiFrameTest.lvt
- PacketConvenienceTest.lvt
- PacketDataTest.lvt
- PacketMetadataStub.lvt
- PacketMetadataTest.lvt
- PacketParserFailureTest.lvt
- PacketStorageParityTest.lvt
- RamIpv4PacketParserTest.lvt
- ReceiveContractChecks.lvt
- ScheduledWordSumTest.lvt
- SynAckCompositionChecks.lvt
- TcpChecksumTest.lvt
- TcpConnectionRecognizerTest.lvt
- TcpHeaderParserTest.lvt
- TcpMultiSessionArrayStorageTest.lvt
- TcpMultiSessionAutoStorageTest.lvt
- TcpMultiSessionDistributedStorageTest.lvt
- TcpMultiSessionMixedStorageTest.lvt
- TcpMultiSessionStorageChecks.lvt
- TcpMultiSessionTest.lvt
- TcpRamPacketTest.lvt
- TcpRetryTimerTest.lvt
- TcpSegmentBuilderTest.lvt
- TcpSegmentTest.lvt
- TcpStreamServerArrayStorageTest.lvt
- TcpStreamServerAutoStorageTest.lvt
- TcpStreamServerDistributedStorageTest.lvt
- TcpStreamServerMixedStorageTest.lvt
- TcpStreamServerStorageChecks.lvt
- TcpStreamServerTest.lvt
- TelnetSessionTest.lvt
- TransmitContractChecks.lvt
- UdpPacketTest.lvt
tests/CompactPacketFieldsTest.lvt
namespace Livt.Net.Tests
using Livt.Net
/** Boundary vectors for compact fields and packed header snapshots. */
@Test
component CompactPacketFieldsTest
{
payload: PacketMetadataStub
large: EthernetFrame<PacketMetadataStub, 65535>
small: EthernetFrame<PacketMetadataStub, 1>
data: ArrayPacketData<8>
header: PacketHeader<ArrayPacketData<8>, 3>
new()
{
payload = new PacketMetadataStub()
large = new EthernetFrame<PacketMetadataStub, 65535>(payload)
small = new EthernetFrame<PacketMetadataStub, 1>(payload)
data = new ArrayPacketData<8>()
header = new PacketHeader<ArrayPacketData<8>, 3>(data)
}
@Test
fn EthernetLengthExtremes()
{
payload.Configure(65535, 0xFEDC, 0, true, -1)
var source: byte[6] = [0x80, 0xFE, 0xAA, 0xBB, 0xCC, 0xDD]
var destination: byte[6] = [0xFF, 0x81, 0x82, 0x83, 0x84, 0x85]
assert large.TryPrepare(source, destination) == PacketDataResult.Success
assert large.GetAvailableLength() == 65549
source[0] = 0x00
destination[0] = 0x00
var expected: byte[14] = [0xFF, 0x81, 0x82, 0x83, 0x84, 0x85, 0x80, 0xFE, 0xAA, 0xBB, 0xCC, 0xDD, 0xFE, 0xDC]
var value: byte = 0x00
for (var i = 0; i < 14; i++) {
assert large.TryRead(i, value) == PacketDataResult.Success
assert value == expected[i]
}
assert large.TryRead(65548, value) == PacketDataResult.Success
assert value == 0xA5
assert large.TryRead(65549, value) == PacketDataResult.Invalid
assert value == 0x00
payload.Configure(1, 0x0800, 0, true, -1)
assert small.TryPrepare(source, destination) == PacketDataResult.Success
assert small.GetAvailableLength() == 60
assert small.TryRead(14, value) == PacketDataResult.Success
assert value == 0xA5
assert small.TryRead(59, value) == PacketDataResult.Success
assert value == 0x00
assert small.TryRead(60, value) == PacketDataResult.Invalid
payload.Configure(65536, 0x0800, 0, true, -1)
assert large.TryPrepare(source, destination) == PacketDataResult.Invalid
assert !large.IsReady()
}
@Test
fn OddHeaderBoundariesAndReuse()
{
assert data.TryWrite(0, 0x80) == PacketDataResult.Success
assert data.TryWrite(1, 0xFF) == PacketDataResult.Success
assert data.TryWrite(2, 0xA5) == PacketDataResult.Success
assert data.TryPublish() == PacketDataResult.Success
assert header.TryLoad() == PacketParseResult.Success
assert header.GetByte(0) == 0x80
assert header.GetByte(2) == 0xA5
assert header.GetByte(3) == 0x00
assert header.GetWord(-1) == 0x0080
assert header.GetWord(0) == 0x80FF
assert header.GetWord(2) == 0xA500
assert header.GetSequence(0) == (0x80FFA500 as uint)
header.Invalidate()
assert data.TryRelease() == PacketDataResult.Success
assert header.GetWord(0) == 0
assert data.TryWrite(0, 0x12) == PacketDataResult.Success
assert data.TryWrite(1, 0x34) == PacketDataResult.Success
assert data.TryPublish() == PacketDataResult.Success
assert header.TryLoad() == PacketParseResult.Truncated
assert header.GetByte(0) == 0x00
assert data.TryRelease() == PacketDataResult.Success
assert data.TryWrite(0, 0x01) == PacketDataResult.Success
assert data.TryWrite(1, 0x02) == PacketDataResult.Success
assert data.TryWrite(2, 0x03) == PacketDataResult.Success
assert data.TryPublish() == PacketDataResult.Success
assert header.TryLoad() == PacketParseResult.Success
assert header.GetSequence(0) == (0x01020300 as uint)
assert data.TryRelease() == PacketDataResult.Success
assert header.GetByte(0) == 0x00
}
}