Livt packages
Livt.Web
Version 1.0.0
Bounded HTTP routing, request parsing, response encoding, and Ethernet application composition for Livt.
Published files (63)
- CounterContent.lvt
- HttpApplicationTest.lvt
- HttpHandlerTest.lvt
- HttpHeaderRangeData.lvt
- HttpHeaderRangeTest.lvt
- HttpNetworkEndpointTest.lvt
- HttpPathTest.lvt
- HttpRequestBoundsTest.lvt
- HttpRequestParserTest.lvt
- HttpRequestTestData.lvt
- HttpResponseEncoderTest.lvt
- HttpResponseTestData.lvt
- HttpRoutingTest.lvt
- HttpTcpSequenceTest.lvt
- RoutingBytes.lvt
- RoutingCounter.lvt
tests/http/HttpHeaderRangeTest.lvt
namespace Livt.Web.Tests.Http
using Livt.Net
using Livt.Web.Http
/**
* Verifies unsigned, non-power-of-two descriptor bounds through the public view.
*/
@Test
component HttpHeaderRangeTest
{
// Owned immutable source and parser with exactly the source's byte budget.
data: HttpHeaderRangeData
request: HttpRequestParser<HttpHeaderRangeData, 300, 8, 2>
/**
* Binds both parsed header views to the same stable request.
*/
new()
{
data = new HttpHeaderRangeData()
request = new HttpRequestParser<HttpHeaderRangeData, 300, 8, 2>(data)
}
/**
* Lengths and offsets above 255 must retain their unsigned value in nine bits.
*/
@Test
fn ReadsHeadersBeyondUnsignedByteRange()
{
request.Invalidate()
assert request.TryParse() == HttpRequestResult.Ready
assert request.GetHeaderCount() == 2
assert request.GetHeaderValueLength(0) == 273
assert request.GetHeaderNameLength(1) == 1
assert request.GetHeaderValueLength(1) == 1
var value: byte = 0x00
assert request.TryReadHeaderValue(0, 272, value) == PacketDataResult.Success
assert value == 0x61
assert request.TryReadHeaderName(1, 0, value) == PacketDataResult.Success
assert value == 0x59
assert request.TryReadHeaderValue(1, 0, value) == PacketDataResult.Success
assert value == 0x7A
assert request.TryReadHeaderValue(0, 273, value) == PacketDataResult.Invalid
assert value == 0x00
}
}