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/HttpResponseEncoderTest.lvt
namespace Livt.Web.Tests.Http
using Livt.Net
using Livt.Web.Http
@Test
component HttpResponseEncoderTest
{
// Independent literal HTTP headers; never derived from production helpers.
const EXPECTED[3336] = [
0x48, 0x54, 0x54, 0x50, 0x2F, 0x31, 0x2E, 0x30, 0x20, 0x32, 0x30, 0x30, 0x20, 0x4F, 0x4B, 0x0D,
0x0A, 0x43, 0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74, 0x2D, 0x54, 0x79, 0x70, 0x65, 0x3A, 0x20, 0x74,
0x65, 0x78, 0x74, 0x2F, 0x68, 0x74, 0x6D, 0x6C, 0x0D, 0x0A, 0x43, 0x6F, 0x6E, 0x74, 0x65, 0x6E,
0x74, 0x2D, 0x4C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x3A, 0x20, 0x30, 0x0D, 0x0A, 0x43, 0x6F, 0x6E,
0x6E, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x3A, 0x20, 0x63, 0x6C, 0x6F, 0x73, 0x65, 0x0D, 0x0A,
0x0D, 0x0A, 0x48, 0x54, 0x54, 0x50, 0x2F, 0x31, 0x2E, 0x30, 0x20, 0x32, 0x30, 0x30, 0x20, 0x4F,
0x4B, 0x0D, 0x0A, 0x43, 0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74, 0x2D, 0x54, 0x79, 0x70, 0x65, 0x3A,
0x20, 0x74, 0x65, 0x78, 0x74, 0x2F, 0x70, 0x6C, 0x61, 0x69, 0x6E, 0x0D, 0x0A, 0x43, 0x6F, 0x6E,
0x74, 0x65, 0x6E, 0x74, 0x2D, 0x4C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x3A, 0x20, 0x31, 0x0D, 0x0A,
0x43, 0x6F, 0x6E, 0x6E, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x3A, 0x20, 0x63, 0x6C, 0x6F, 0x73,
0x65, 0x0D, 0x0A, 0x0D, 0x0A, 0x48, 0x54, 0x54, 0x50, 0x2F, 0x31, 0x2E, 0x30, 0x20, 0x32, 0x30,
0x30, 0x20, 0x4F, 0x4B, 0x0D, 0x0A, 0x43, 0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74, 0x2D, 0x54, 0x79,
0x70, 0x65, 0x3A, 0x20, 0x61, 0x70, 0x70, 0x6C, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x2F,
0x6A, 0x73, 0x6F, 0x6E, 0x0D, 0x0A, 0x43, 0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74, 0x2D, 0x4C, 0x65,
0x6E, 0x67, 0x74, 0x68, 0x3A, 0x20, 0x32, 0x0D, 0x0A, 0x43, 0x6F, 0x6E, 0x6E, 0x65, 0x63, 0x74,
0x69, 0x6F, 0x6E, 0x3A, 0x20, 0x63, 0x6C, 0x6F, 0x73, 0x65, 0x0D, 0x0A, 0x0D, 0x0A, 0x48, 0x54,
0x54, 0x50, 0x2F, 0x31, 0x2E, 0x30, 0x20, 0x34, 0x30, 0x30, 0x20, 0x42, 0x61, 0x64, 0x20, 0x52,
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x0D, 0x0A, 0x43, 0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74, 0x2D,
0x54, 0x79, 0x70, 0x65, 0x3A, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2F, 0x68, 0x74, 0x6D, 0x6C, 0x0D,
0x0A, 0x43, 0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74, 0x2D, 0x4C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x3A,
0x20, 0x30, 0x0D, 0x0A, 0x43, 0x6F, 0x6E, 0x6E, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x3A, 0x20,
0x63, 0x6C, 0x6F, 0x73, 0x65, 0x0D, 0x0A, 0x0D, 0x0A, 0x48, 0x54, 0x54, 0x50, 0x2F, 0x31, 0x2E,
0x30, 0x20, 0x34, 0x30, 0x30, 0x20, 0x42, 0x61, 0x64, 0x20, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
0x74, 0x0D, 0x0A, 0x43, 0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74, 0x2D, 0x54, 0x79, 0x70, 0x65, 0x3A,
0x20, 0x74, 0x65, 0x78, 0x74, 0x2F, 0x70, 0x6C, 0x61, 0x69, 0x6E, 0x0D, 0x0A, 0x43, 0x6F, 0x6E,
0x74, 0x65, 0x6E, 0x74, 0x2D, 0x4C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x3A, 0x20, 0x31, 0x0D, 0x0A,
0x43, 0x6F, 0x6E, 0x6E, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x3A, 0x20, 0x63, 0x6C, 0x6F, 0x73,
0x65, 0x0D, 0x0A, 0x0D, 0x0A, 0x48, 0x54, 0x54, 0x50, 0x2F, 0x31, 0x2E, 0x30, 0x20, 0x34, 0x30,
0x30, 0x20, 0x42, 0x61, 0x64, 0x20, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x0D, 0x0A, 0x43,
0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74, 0x2D, 0x54, 0x79, 0x70, 0x65, 0x3A, 0x20, 0x61, 0x70, 0x70,
0x6C, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x2F, 0x6A, 0x73, 0x6F, 0x6E, 0x0D, 0x0A, 0x43,
0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74, 0x2D, 0x4C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x3A, 0x20, 0x32,
0x0D, 0x0A, 0x43, 0x6F, 0x6E, 0x6E, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x3A, 0x20, 0x63, 0x6C,
0x6F, 0x73, 0x65, 0x0D, 0x0A, 0x0D, 0x0A, 0x48, 0x54, 0x54, 0x50, 0x2F, 0x31, 0x2E, 0x30, 0x20,
0x34, 0x30, 0x34, 0x20, 0x4E, 0x6F, 0x74, 0x20, 0x46, 0x6F, 0x75, 0x6E, 0x64, 0x0D, 0x0A, 0x43,
0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74, 0x2D, 0x54, 0x79, 0x70, 0x65, 0x3A, 0x20, 0x74, 0x65, 0x78,
0x74, 0x2F, 0x68, 0x74, 0x6D, 0x6C, 0x0D, 0x0A, 0x43, 0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74, 0x2D,
0x4C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x3A, 0x20, 0x30, 0x0D, 0x0A, 0x43, 0x6F, 0x6E, 0x6E, 0x65,
0x63, 0x74, 0x69, 0x6F, 0x6E, 0x3A, 0x20, 0x63, 0x6C, 0x6F, 0x73, 0x65, 0x0D, 0x0A, 0x0D, 0x0A,
0x48, 0x54, 0x54, 0x50, 0x2F, 0x31, 0x2E, 0x30, 0x20, 0x34, 0x30, 0x34, 0x20, 0x4E, 0x6F, 0x74,
0x20, 0x46, 0x6F, 0x75, 0x6E, 0x64, 0x0D, 0x0A, 0x43, 0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74, 0x2D,
0x54, 0x79, 0x70, 0x65, 0x3A, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2F, 0x70, 0x6C, 0x61, 0x69, 0x6E,
0x0D, 0x0A, 0x43, 0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74, 0x2D, 0x4C, 0x65, 0x6E, 0x67, 0x74, 0x68,
0x3A, 0x20, 0x31, 0x0D, 0x0A, 0x43, 0x6F, 0x6E, 0x6E, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x3A,
0x20, 0x63, 0x6C, 0x6F, 0x73, 0x65, 0x0D, 0x0A, 0x0D, 0x0A, 0x48, 0x54, 0x54, 0x50, 0x2F, 0x31,
0x2E, 0x30, 0x20, 0x34, 0x30, 0x34, 0x20, 0x4E, 0x6F, 0x74, 0x20, 0x46, 0x6F, 0x75, 0x6E, 0x64,
0x0D, 0x0A, 0x43, 0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74, 0x2D, 0x54, 0x79, 0x70, 0x65, 0x3A, 0x20,
0x61, 0x70, 0x70, 0x6C, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x2F, 0x6A, 0x73, 0x6F, 0x6E,
0x0D, 0x0A, 0x43, 0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74, 0x2D, 0x4C, 0x65, 0x6E, 0x67, 0x74, 0x68,
0x3A, 0x20, 0x32, 0x0D, 0x0A, 0x43, 0x6F, 0x6E, 0x6E, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x3A,
0x20, 0x63, 0x6C, 0x6F, 0x73, 0x65, 0x0D, 0x0A, 0x0D, 0x0A, 0x48, 0x54, 0x54, 0x50, 0x2F, 0x31,
0x2E, 0x30, 0x20, 0x34, 0x30, 0x35, 0x20, 0x4D, 0x65, 0x74, 0x68, 0x6F, 0x64, 0x20, 0x4E, 0x6F,
0x74, 0x20, 0x41, 0x6C, 0x6C, 0x6F, 0x77, 0x65, 0x64, 0x0D, 0x0A, 0x43, 0x6F, 0x6E, 0x74, 0x65,
0x6E, 0x74, 0x2D, 0x54, 0x79, 0x70, 0x65, 0x3A, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2F, 0x68, 0x74,
0x6D, 0x6C, 0x0D, 0x0A, 0x41, 0x6C, 0x6C, 0x6F, 0x77, 0x3A, 0x20, 0x47, 0x45, 0x54, 0x0D, 0x0A,
0x43, 0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74, 0x2D, 0x4C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x3A, 0x20,
0x30, 0x0D, 0x0A, 0x43, 0x6F, 0x6E, 0x6E, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x3A, 0x20, 0x63,
0x6C, 0x6F, 0x73, 0x65, 0x0D, 0x0A, 0x0D, 0x0A, 0x48, 0x54, 0x54, 0x50, 0x2F, 0x31, 0x2E, 0x30,
0x20, 0x34, 0x30, 0x35, 0x20, 0x4D, 0x65, 0x74, 0x68, 0x6F, 0x64, 0x20, 0x4E, 0x6F, 0x74, 0x20,
0x41, 0x6C, 0x6C, 0x6F, 0x77, 0x65, 0x64, 0x0D, 0x0A, 0x43, 0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74,
0x2D, 0x54, 0x79, 0x70, 0x65, 0x3A, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2F, 0x70, 0x6C, 0x61, 0x69,
0x6E, 0x0D, 0x0A, 0x41, 0x6C, 0x6C, 0x6F, 0x77, 0x3A, 0x20, 0x47, 0x45, 0x54, 0x0D, 0x0A, 0x43,
0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74, 0x2D, 0x4C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x3A, 0x20, 0x31,
0x0D, 0x0A, 0x43, 0x6F, 0x6E, 0x6E, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x3A, 0x20, 0x63, 0x6C,
0x6F, 0x73, 0x65, 0x0D, 0x0A, 0x0D, 0x0A, 0x48, 0x54, 0x54, 0x50, 0x2F, 0x31, 0x2E, 0x30, 0x20,
0x34, 0x30, 0x35, 0x20, 0x4D, 0x65, 0x74, 0x68, 0x6F, 0x64, 0x20, 0x4E, 0x6F, 0x74, 0x20, 0x41,
0x6C, 0x6C, 0x6F, 0x77, 0x65, 0x64, 0x0D, 0x0A, 0x43, 0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74, 0x2D,
0x54, 0x79, 0x70, 0x65, 0x3A, 0x20, 0x61, 0x70, 0x70, 0x6C, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F,
0x6E, 0x2F, 0x6A, 0x73, 0x6F, 0x6E, 0x0D, 0x0A, 0x41, 0x6C, 0x6C, 0x6F, 0x77, 0x3A, 0x20, 0x47,
0x45, 0x54, 0x0D, 0x0A, 0x43, 0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74, 0x2D, 0x4C, 0x65, 0x6E, 0x67,
0x74, 0x68, 0x3A, 0x20, 0x32, 0x0D, 0x0A, 0x43, 0x6F, 0x6E, 0x6E, 0x65, 0x63, 0x74, 0x69, 0x6F,
0x6E, 0x3A, 0x20, 0x63, 0x6C, 0x6F, 0x73, 0x65, 0x0D, 0x0A, 0x0D, 0x0A, 0x48, 0x54, 0x54, 0x50,
0x2F, 0x31, 0x2E, 0x30, 0x20, 0x35, 0x30, 0x30, 0x20, 0x49, 0x6E, 0x74, 0x65, 0x72, 0x6E, 0x61,
0x6C, 0x20, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x45, 0x72, 0x72, 0x6F, 0x72, 0x0D, 0x0A,
0x43, 0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74, 0x2D, 0x54, 0x79, 0x70, 0x65, 0x3A, 0x20, 0x74, 0x65,
0x78, 0x74, 0x2F, 0x68, 0x74, 0x6D, 0x6C, 0x0D, 0x0A, 0x43, 0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74,
0x2D, 0x4C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x3A, 0x20, 0x30, 0x0D, 0x0A, 0x43, 0x6F, 0x6E, 0x6E,
0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x3A, 0x20, 0x63, 0x6C, 0x6F, 0x73, 0x65, 0x0D, 0x0A, 0x0D,
0x0A, 0x48, 0x54, 0x54, 0x50, 0x2F, 0x31, 0x2E, 0x30, 0x20, 0x35, 0x30, 0x30, 0x20, 0x49, 0x6E,
0x74, 0x65, 0x72, 0x6E, 0x61, 0x6C, 0x20, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x45, 0x72,
0x72, 0x6F, 0x72, 0x0D, 0x0A, 0x43, 0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74, 0x2D, 0x54, 0x79, 0x70,
0x65, 0x3A, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2F, 0x70, 0x6C, 0x61, 0x69, 0x6E, 0x0D, 0x0A, 0x43,
0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74, 0x2D, 0x4C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x3A, 0x20, 0x31,
0x0D, 0x0A, 0x43, 0x6F, 0x6E, 0x6E, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x3A, 0x20, 0x63, 0x6C,
0x6F, 0x73, 0x65, 0x0D, 0x0A, 0x0D, 0x0A, 0x48, 0x54, 0x54, 0x50, 0x2F, 0x31, 0x2E, 0x30, 0x20,
0x35, 0x30, 0x30, 0x20, 0x49, 0x6E, 0x74, 0x65, 0x72, 0x6E, 0x61, 0x6C, 0x20, 0x53, 0x65, 0x72,
0x76, 0x65, 0x72, 0x20, 0x45, 0x72, 0x72, 0x6F, 0x72, 0x0D, 0x0A, 0x43, 0x6F, 0x6E, 0x74, 0x65,
0x6E, 0x74, 0x2D, 0x54, 0x79, 0x70, 0x65, 0x3A, 0x20, 0x61, 0x70, 0x70, 0x6C, 0x69, 0x63, 0x61,
0x74, 0x69, 0x6F, 0x6E, 0x2F, 0x6A, 0x73, 0x6F, 0x6E, 0x0D, 0x0A, 0x43, 0x6F, 0x6E, 0x74, 0x65,
0x6E, 0x74, 0x2D, 0x4C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x3A, 0x20, 0x32, 0x0D, 0x0A, 0x43, 0x6F,
0x6E, 0x6E, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x3A, 0x20, 0x63, 0x6C, 0x6F, 0x73, 0x65, 0x0D,
0x0A, 0x0D, 0x0A, 0x48, 0x54, 0x54, 0x50, 0x2F, 0x31, 0x2E, 0x30, 0x20, 0x34, 0x30, 0x35, 0x20,
0x4D, 0x65, 0x74, 0x68, 0x6F, 0x64, 0x20, 0x4E, 0x6F, 0x74, 0x20, 0x41, 0x6C, 0x6C, 0x6F, 0x77,
0x65, 0x64, 0x0D, 0x0A, 0x43, 0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74, 0x2D, 0x54, 0x79, 0x70, 0x65,
0x3A, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2F, 0x70, 0x6C, 0x61, 0x69, 0x6E, 0x0D, 0x0A, 0x41, 0x6C,
0x6C, 0x6F, 0x77, 0x3A, 0x20, 0x48, 0x45, 0x41, 0x44, 0x0D, 0x0A, 0x43, 0x6F, 0x6E, 0x74, 0x65,
0x6E, 0x74, 0x2D, 0x4C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x3A, 0x20, 0x32, 0x0D, 0x0A, 0x43, 0x6F,
0x6E, 0x6E, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x3A, 0x20, 0x63, 0x6C, 0x6F, 0x73, 0x65, 0x0D,
0x0A, 0x0D, 0x0A, 0x48, 0x54, 0x54, 0x50, 0x2F, 0x31, 0x2E, 0x30, 0x20, 0x34, 0x30, 0x35, 0x20,
0x4D, 0x65, 0x74, 0x68, 0x6F, 0x64, 0x20, 0x4E, 0x6F, 0x74, 0x20, 0x41, 0x6C, 0x6C, 0x6F, 0x77,
0x65, 0x64, 0x0D, 0x0A, 0x43, 0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74, 0x2D, 0x54, 0x79, 0x70, 0x65,
0x3A, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2F, 0x70, 0x6C, 0x61, 0x69, 0x6E, 0x0D, 0x0A, 0x41, 0x6C,
0x6C, 0x6F, 0x77, 0x3A, 0x20, 0x47, 0x45, 0x54, 0x2C, 0x20, 0x48, 0x45, 0x41, 0x44, 0x0D, 0x0A,
0x43, 0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74, 0x2D, 0x4C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x3A, 0x20,
0x32, 0x0D, 0x0A, 0x43, 0x6F, 0x6E, 0x6E, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x3A, 0x20, 0x63,
0x6C, 0x6F, 0x73, 0x65, 0x0D, 0x0A, 0x0D, 0x0A, 0x48, 0x54, 0x54, 0x50, 0x2F, 0x31, 0x2E, 0x30,
0x20, 0x32, 0x30, 0x30, 0x20, 0x4F, 0x4B, 0x0D, 0x0A, 0x43, 0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74,
0x2D, 0x54, 0x79, 0x70, 0x65, 0x3A, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2F, 0x68, 0x74, 0x6D, 0x6C,
0x0D, 0x0A, 0x43, 0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74, 0x2D, 0x4C, 0x65, 0x6E, 0x67, 0x74, 0x68,
0x3A, 0x20, 0x39, 0x0D, 0x0A, 0x43, 0x6F, 0x6E, 0x6E, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x3A,
0x20, 0x63, 0x6C, 0x6F, 0x73, 0x65, 0x0D, 0x0A, 0x0D, 0x0A, 0x48, 0x54, 0x54, 0x50, 0x2F, 0x31,
0x2E, 0x30, 0x20, 0x32, 0x30, 0x30, 0x20, 0x4F, 0x4B, 0x0D, 0x0A, 0x43, 0x6F, 0x6E, 0x74, 0x65,
0x6E, 0x74, 0x2D, 0x54, 0x79, 0x70, 0x65, 0x3A, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2F, 0x68, 0x74,
0x6D, 0x6C, 0x0D, 0x0A, 0x43, 0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74, 0x2D, 0x4C, 0x65, 0x6E, 0x67,
0x74, 0x68, 0x3A, 0x20, 0x31, 0x30, 0x0D, 0x0A, 0x43, 0x6F, 0x6E, 0x6E, 0x65, 0x63, 0x74, 0x69,
0x6F, 0x6E, 0x3A, 0x20, 0x63, 0x6C, 0x6F, 0x73, 0x65, 0x0D, 0x0A, 0x0D, 0x0A, 0x48, 0x54, 0x54,
0x50, 0x2F, 0x31, 0x2E, 0x30, 0x20, 0x32, 0x30, 0x30, 0x20, 0x4F, 0x4B, 0x0D, 0x0A, 0x43, 0x6F,
0x6E, 0x74, 0x65, 0x6E, 0x74, 0x2D, 0x54, 0x79, 0x70, 0x65, 0x3A, 0x20, 0x74, 0x65, 0x78, 0x74,
0x2F, 0x68, 0x74, 0x6D, 0x6C, 0x0D, 0x0A, 0x43, 0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74, 0x2D, 0x4C,
0x65, 0x6E, 0x67, 0x74, 0x68, 0x3A, 0x20, 0x39, 0x39, 0x0D, 0x0A, 0x43, 0x6F, 0x6E, 0x6E, 0x65,
0x63, 0x74, 0x69, 0x6F, 0x6E, 0x3A, 0x20, 0x63, 0x6C, 0x6F, 0x73, 0x65, 0x0D, 0x0A, 0x0D, 0x0A,
0x48, 0x54, 0x54, 0x50, 0x2F, 0x31, 0x2E, 0x30, 0x20, 0x32, 0x30, 0x30, 0x20, 0x4F, 0x4B, 0x0D,
0x0A, 0x43, 0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74, 0x2D, 0x54, 0x79, 0x70, 0x65, 0x3A, 0x20, 0x74,
0x65, 0x78, 0x74, 0x2F, 0x68, 0x74, 0x6D, 0x6C, 0x0D, 0x0A, 0x43, 0x6F, 0x6E, 0x74, 0x65, 0x6E,
0x74, 0x2D, 0x4C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x3A, 0x20, 0x31, 0x30, 0x30, 0x0D, 0x0A, 0x43,
0x6F, 0x6E, 0x6E, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x3A, 0x20, 0x63, 0x6C, 0x6F, 0x73, 0x65,
0x0D, 0x0A, 0x0D, 0x0A, 0x48, 0x54, 0x54, 0x50, 0x2F, 0x31, 0x2E, 0x30, 0x20, 0x32, 0x30, 0x30,
0x20, 0x4F, 0x4B, 0x0D, 0x0A, 0x43, 0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74, 0x2D, 0x54, 0x79, 0x70,
0x65, 0x3A, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2F, 0x68, 0x74, 0x6D, 0x6C, 0x0D, 0x0A, 0x43, 0x6F,
0x6E, 0x74, 0x65, 0x6E, 0x74, 0x2D, 0x4C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x3A, 0x20, 0x39, 0x39,
0x39, 0x0D, 0x0A, 0x43, 0x6F, 0x6E, 0x6E, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x3A, 0x20, 0x63,
0x6C, 0x6F, 0x73, 0x65, 0x0D, 0x0A, 0x0D, 0x0A, 0x48, 0x54, 0x54, 0x50, 0x2F, 0x31, 0x2E, 0x30,
0x20, 0x32, 0x30, 0x30, 0x20, 0x4F, 0x4B, 0x0D, 0x0A, 0x43, 0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74,
0x2D, 0x54, 0x79, 0x70, 0x65, 0x3A, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2F, 0x68, 0x74, 0x6D, 0x6C,
0x0D, 0x0A, 0x43, 0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74, 0x2D, 0x4C, 0x65, 0x6E, 0x67, 0x74, 0x68,
0x3A, 0x20, 0x31, 0x30, 0x30, 0x30, 0x0D, 0x0A, 0x43, 0x6F, 0x6E, 0x6E, 0x65, 0x63, 0x74, 0x69,
0x6F, 0x6E, 0x3A, 0x20, 0x63, 0x6C, 0x6F, 0x73, 0x65, 0x0D, 0x0A, 0x0D, 0x0A, 0x48, 0x54, 0x54,
0x50, 0x2F, 0x31, 0x2E, 0x30, 0x20, 0x32, 0x30, 0x30, 0x20, 0x4F, 0x4B, 0x0D, 0x0A, 0x43, 0x6F,
0x6E, 0x74, 0x65, 0x6E, 0x74, 0x2D, 0x54, 0x79, 0x70, 0x65, 0x3A, 0x20, 0x74, 0x65, 0x78, 0x74,
0x2F, 0x68, 0x74, 0x6D, 0x6C, 0x0D, 0x0A, 0x43, 0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74, 0x2D, 0x4C,
0x65, 0x6E, 0x67, 0x74, 0x68, 0x3A, 0x20, 0x39, 0x39, 0x39, 0x39, 0x0D, 0x0A, 0x43, 0x6F, 0x6E,
0x6E, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x3A, 0x20, 0x63, 0x6C, 0x6F, 0x73, 0x65, 0x0D, 0x0A,
0x0D, 0x0A, 0x48, 0x54, 0x54, 0x50, 0x2F, 0x31, 0x2E, 0x30, 0x20, 0x32, 0x30, 0x30, 0x20, 0x4F,
0x4B, 0x0D, 0x0A, 0x43, 0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74, 0x2D, 0x54, 0x79, 0x70, 0x65, 0x3A,
0x20, 0x74, 0x65, 0x78, 0x74, 0x2F, 0x68, 0x74, 0x6D, 0x6C, 0x0D, 0x0A, 0x43, 0x6F, 0x6E, 0x74,
0x65, 0x6E, 0x74, 0x2D, 0x4C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x3A, 0x20, 0x31, 0x30, 0x30, 0x30,
0x30, 0x0D, 0x0A, 0x43, 0x6F, 0x6E, 0x6E, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x3A, 0x20, 0x63,
0x6C, 0x6F, 0x73, 0x65, 0x0D, 0x0A, 0x0D, 0x0A, 0x48, 0x54, 0x54, 0x50, 0x2F, 0x31, 0x2E, 0x30,
0x20, 0x32, 0x30, 0x30, 0x20, 0x4F, 0x4B, 0x0D, 0x0A, 0x43, 0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74,
0x2D, 0x54, 0x79, 0x70, 0x65, 0x3A, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2F, 0x68, 0x74, 0x6D, 0x6C,
0x0D, 0x0A, 0x43, 0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74, 0x2D, 0x4C, 0x65, 0x6E, 0x67, 0x74, 0x68,
0x3A, 0x20, 0x39, 0x39, 0x39, 0x39, 0x39, 0x0D, 0x0A, 0x43, 0x6F, 0x6E, 0x6E, 0x65, 0x63, 0x74,
0x69, 0x6F, 0x6E, 0x3A, 0x20, 0x63, 0x6C, 0x6F, 0x73, 0x65, 0x0D, 0x0A, 0x0D, 0x0A, 0x48, 0x54,
0x54, 0x50, 0x2F, 0x31, 0x2E, 0x30, 0x20, 0x32, 0x30, 0x30, 0x20, 0x4F, 0x4B, 0x0D, 0x0A, 0x43,
0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74, 0x2D, 0x54, 0x79, 0x70, 0x65, 0x3A, 0x20, 0x74, 0x65, 0x78,
0x74, 0x2F, 0x68, 0x74, 0x6D, 0x6C, 0x0D, 0x0A, 0x43, 0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74, 0x2D,
0x4C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x3A, 0x20, 0x31, 0x30, 0x30, 0x30, 0x30, 0x30, 0x0D, 0x0A,
0x43, 0x6F, 0x6E, 0x6E, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x3A, 0x20, 0x63, 0x6C, 0x6F, 0x73,
0x65, 0x0D, 0x0A, 0x0D, 0x0A, 0x48, 0x54, 0x54, 0x50, 0x2F, 0x31, 0x2E, 0x30, 0x20, 0x32, 0x30,
0x30, 0x20, 0x4F, 0x4B, 0x0D, 0x0A, 0x43, 0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74, 0x2D, 0x54, 0x79,
0x70, 0x65, 0x3A, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2F, 0x68, 0x74, 0x6D, 0x6C, 0x0D, 0x0A, 0x43,
0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74, 0x2D, 0x4C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x3A, 0x20, 0x39,
0x39, 0x39, 0x39, 0x39, 0x39, 0x0D, 0x0A, 0x43, 0x6F, 0x6E, 0x6E, 0x65, 0x63, 0x74, 0x69, 0x6F,
0x6E, 0x3A, 0x20, 0x63, 0x6C, 0x6F, 0x73, 0x65, 0x0D, 0x0A, 0x0D, 0x0A, 0x48, 0x54, 0x54, 0x50,
0x2F, 0x31, 0x2E, 0x30, 0x20, 0x32, 0x30, 0x30, 0x20, 0x4F, 0x4B, 0x0D, 0x0A, 0x43, 0x6F, 0x6E,
0x74, 0x65, 0x6E, 0x74, 0x2D, 0x54, 0x79, 0x70, 0x65, 0x3A, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2F,
0x68, 0x74, 0x6D, 0x6C, 0x0D, 0x0A, 0x43, 0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74, 0x2D, 0x4C, 0x65,
0x6E, 0x67, 0x74, 0x68, 0x3A, 0x20, 0x31, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x0D, 0x0A, 0x43,
0x6F, 0x6E, 0x6E, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x3A, 0x20, 0x63, 0x6C, 0x6F, 0x73, 0x65,
0x0D, 0x0A, 0x0D, 0x0A, 0x48, 0x54, 0x54, 0x50, 0x2F, 0x31, 0x2E, 0x30, 0x20, 0x32, 0x30, 0x30,
0x20, 0x4F, 0x4B, 0x0D, 0x0A, 0x43, 0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74, 0x2D, 0x54, 0x79, 0x70,
0x65, 0x3A, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2F, 0x68, 0x74, 0x6D, 0x6C, 0x0D, 0x0A, 0x43, 0x6F,
0x6E, 0x74, 0x65, 0x6E, 0x74, 0x2D, 0x4C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x3A, 0x20, 0x39, 0x39,
0x39, 0x39, 0x39, 0x39, 0x39, 0x0D, 0x0A, 0x43, 0x6F, 0x6E, 0x6E, 0x65, 0x63, 0x74, 0x69, 0x6F,
0x6E, 0x3A, 0x20, 0x63, 0x6C, 0x6F, 0x73, 0x65, 0x0D, 0x0A, 0x0D, 0x0A, 0x48, 0x54, 0x54, 0x50,
0x2F, 0x31, 0x2E, 0x30, 0x20, 0x32, 0x30, 0x30, 0x20, 0x4F, 0x4B, 0x0D, 0x0A, 0x43, 0x6F, 0x6E,
0x74, 0x65, 0x6E, 0x74, 0x2D, 0x54, 0x79, 0x70, 0x65, 0x3A, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2F,
0x68, 0x74, 0x6D, 0x6C, 0x0D, 0x0A, 0x43, 0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74, 0x2D, 0x4C, 0x65,
0x6E, 0x67, 0x74, 0x68, 0x3A, 0x20, 0x31, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x0D, 0x0A,
0x43, 0x6F, 0x6E, 0x6E, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x3A, 0x20, 0x63, 0x6C, 0x6F, 0x73,
0x65, 0x0D, 0x0A, 0x0D, 0x0A, 0x48, 0x54, 0x54, 0x50, 0x2F, 0x31, 0x2E, 0x30, 0x20, 0x32, 0x30,
0x30, 0x20, 0x4F, 0x4B, 0x0D, 0x0A, 0x43, 0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74, 0x2D, 0x54, 0x79,
0x70, 0x65, 0x3A, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2F, 0x68, 0x74, 0x6D, 0x6C, 0x0D, 0x0A, 0x43,
0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74, 0x2D, 0x4C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x3A, 0x20, 0x39,
0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x0D, 0x0A, 0x43, 0x6F, 0x6E, 0x6E, 0x65, 0x63, 0x74,
0x69, 0x6F, 0x6E, 0x3A, 0x20, 0x63, 0x6C, 0x6F, 0x73, 0x65, 0x0D, 0x0A, 0x0D, 0x0A, 0x48, 0x54,
0x54, 0x50, 0x2F, 0x31, 0x2E, 0x30, 0x20, 0x32, 0x30, 0x30, 0x20, 0x4F, 0x4B, 0x0D, 0x0A, 0x43,
0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74, 0x2D, 0x54, 0x79, 0x70, 0x65, 0x3A, 0x20, 0x74, 0x65, 0x78,
0x74, 0x2F, 0x68, 0x74, 0x6D, 0x6C, 0x0D, 0x0A, 0x43, 0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74, 0x2D,
0x4C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x3A, 0x20, 0x31, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30,
0x30, 0x0D, 0x0A, 0x43, 0x6F, 0x6E, 0x6E, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x3A, 0x20, 0x63,
0x6C, 0x6F, 0x73, 0x65, 0x0D, 0x0A, 0x0D, 0x0A, 0x48, 0x54, 0x54, 0x50, 0x2F, 0x31, 0x2E, 0x30,
0x20, 0x32, 0x30, 0x30, 0x20, 0x4F, 0x4B, 0x0D, 0x0A, 0x43, 0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74,
0x2D, 0x54, 0x79, 0x70, 0x65, 0x3A, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2F, 0x68, 0x74, 0x6D, 0x6C,
0x0D, 0x0A, 0x43, 0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74, 0x2D, 0x4C, 0x65, 0x6E, 0x67, 0x74, 0x68,
0x3A, 0x20, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x0D, 0x0A, 0x43, 0x6F, 0x6E,
0x6E, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x3A, 0x20, 0x63, 0x6C, 0x6F, 0x73, 0x65, 0x0D, 0x0A,
0x0D, 0x0A, 0x48, 0x54, 0x54, 0x50, 0x2F, 0x31, 0x2E, 0x30, 0x20, 0x32, 0x30, 0x30, 0x20, 0x4F,
0x4B, 0x0D, 0x0A, 0x43, 0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74, 0x2D, 0x54, 0x79, 0x70, 0x65, 0x3A,
0x20, 0x74, 0x65, 0x78, 0x74, 0x2F, 0x68, 0x74, 0x6D, 0x6C, 0x0D, 0x0A, 0x43, 0x6F, 0x6E, 0x74,
0x65, 0x6E, 0x74, 0x2D, 0x4C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x3A, 0x20, 0x31, 0x30, 0x30, 0x30,
0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x0D, 0x0A, 0x43, 0x6F, 0x6E, 0x6E, 0x65, 0x63, 0x74, 0x69,
0x6F, 0x6E, 0x3A, 0x20, 0x63, 0x6C, 0x6F, 0x73, 0x65, 0x0D, 0x0A, 0x0D, 0x0A, 0x48, 0x54, 0x54,
0x50, 0x2F, 0x31, 0x2E, 0x30, 0x20, 0x32, 0x30, 0x30, 0x20, 0x4F, 0x4B, 0x0D, 0x0A, 0x43, 0x6F,
0x6E, 0x74, 0x65, 0x6E, 0x74, 0x2D, 0x54, 0x79, 0x70, 0x65, 0x3A, 0x20, 0x74, 0x65, 0x78, 0x74,
0x2F, 0x68, 0x74, 0x6D, 0x6C, 0x0D, 0x0A, 0x43, 0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74, 0x2D, 0x4C,
0x65, 0x6E, 0x67, 0x74, 0x68, 0x3A, 0x20, 0x32, 0x31, 0x34, 0x37, 0x34, 0x38, 0x33, 0x35, 0x30,
0x30, 0x0D, 0x0A, 0x43, 0x6F, 0x6E, 0x6E, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x3A, 0x20, 0x63,
0x6C, 0x6F, 0x73, 0x65, 0x0D, 0x0A, 0x0D, 0x0A]
data: HttpResponseTestData
response: HttpResponse<HttpResponseTestData>
encoder: HttpResponseEncoder<HttpResponse<HttpResponseTestData>>
direct: HttpResponseEncoder<HttpResponseTestData>
new()
{
data = new HttpResponseTestData()
response = new HttpResponse<HttpResponseTestData>(data)
encoder = new HttpResponseEncoder<HttpResponse<HttpResponseTestData>>(response)
direct = new HttpResponseEncoder<HttpResponseTestData>(data)
}
fn Select(length: int)
{
encoder.Invalidate()
direct.Invalidate()
response.Invalidate()
data.Select(length)
}
fn Check(offset: int, headerLength: int, bodyLength: int, full: bool)
{
assert encoder.TryPrepare(2147483647)
assert encoder.GetHeaderLength() == headerLength
assert encoder.GetAvailableLength() == headerLength + bodyLength
assert data.GetReads() == 0
for (var i: int = 0; i < headerLength; i++) {
var headerByte: byte = 0xFF
assert encoder.TryRead(i, headerByte) == PacketDataResult.Success
assert headerByte == EXPECTED[offset + i]
}
assert data.GetReads() == 0
if (full) {
for (var i: int = 0; i < bodyLength; i++) {
var bodyByte: byte = 0xFF
assert encoder.TryRead(headerLength + i, bodyByte) == PacketDataResult.Success
assert bodyByte == ((i % 256) as byte)
}
}
elif (bodyLength > 0) {
var edgeByte: byte = 0xFF
assert encoder.TryRead(headerLength, edgeByte) == PacketDataResult.Success
assert edgeByte == 0x00
assert encoder.TryRead(headerLength + bodyLength - 1, edgeByte) == PacketDataResult.Success
assert edgeByte == (((bodyLength - 1) % 256) as byte)
}
var value: byte = 0xFF
assert encoder.TryRead(-1, value) == PacketDataResult.Invalid
assert value == 0x00
assert encoder.TryRead(headerLength + bodyLength, value) == PacketDataResult.Invalid
assert value == 0x00
assert encoder.IsReady()
}
@Test
fn Wire0_Ok_Html_0()
{
this.Select(0)
assert response.TryPrepare(HttpStatus.Ok, HttpContentType.Html, HttpAllowedMethods.None)
assert response.GetStatus() == HttpStatus.Ok
assert response.GetContentType() == HttpContentType.Html
assert response.GetAllowedMethods() == HttpAllowedMethods.None
this.Check(0, 82, 0, true)
}
@Test
fn Wire1_Ok_PlainText_1()
{
this.Select(1)
assert response.TryPrepare(HttpStatus.Ok, HttpContentType.PlainText, HttpAllowedMethods.None)
assert response.GetStatus() == HttpStatus.Ok
assert response.GetContentType() == HttpContentType.PlainText
assert response.GetAllowedMethods() == HttpAllowedMethods.None
this.Check(82, 83, 1, true)
}
@Test
fn Wire2_Ok_Json_2()
{
this.Select(2)
assert response.TryPrepare(HttpStatus.Ok, HttpContentType.Json, HttpAllowedMethods.None)
assert response.GetStatus() == HttpStatus.Ok
assert response.GetContentType() == HttpContentType.Json
assert response.GetAllowedMethods() == HttpAllowedMethods.None
this.Check(165, 89, 2, true)
}
@Test
fn Wire3_BadRequest_Html_0()
{
this.Select(0)
assert response.TryPrepare(HttpStatus.BadRequest, HttpContentType.Html, HttpAllowedMethods.None)
assert response.GetStatus() == HttpStatus.BadRequest
assert response.GetContentType() == HttpContentType.Html
assert response.GetAllowedMethods() == HttpAllowedMethods.None
this.Check(254, 91, 0, true)
}
@Test
fn Wire4_BadRequest_PlainText_1()
{
this.Select(1)
assert response.TryPrepare(HttpStatus.BadRequest, HttpContentType.PlainText, HttpAllowedMethods.None)
assert response.GetStatus() == HttpStatus.BadRequest
assert response.GetContentType() == HttpContentType.PlainText
assert response.GetAllowedMethods() == HttpAllowedMethods.None
this.Check(345, 92, 1, true)
}
@Test
fn Wire5_BadRequest_Json_2()
{
this.Select(2)
assert response.TryPrepare(HttpStatus.BadRequest, HttpContentType.Json, HttpAllowedMethods.None)
assert response.GetStatus() == HttpStatus.BadRequest
assert response.GetContentType() == HttpContentType.Json
assert response.GetAllowedMethods() == HttpAllowedMethods.None
this.Check(437, 98, 2, true)
}
@Test
fn Wire6_NotFound_Html_0()
{
this.Select(0)
assert response.TryPrepare(HttpStatus.NotFound, HttpContentType.Html, HttpAllowedMethods.None)
assert response.GetStatus() == HttpStatus.NotFound
assert response.GetContentType() == HttpContentType.Html
assert response.GetAllowedMethods() == HttpAllowedMethods.None
this.Check(535, 89, 0, true)
}
@Test
fn Wire7_NotFound_PlainText_1()
{
this.Select(1)
assert response.TryPrepare(HttpStatus.NotFound, HttpContentType.PlainText, HttpAllowedMethods.None)
assert response.GetStatus() == HttpStatus.NotFound
assert response.GetContentType() == HttpContentType.PlainText
assert response.GetAllowedMethods() == HttpAllowedMethods.None
this.Check(624, 90, 1, true)
}
@Test
fn Wire8_NotFound_Json_2()
{
this.Select(2)
assert response.TryPrepare(HttpStatus.NotFound, HttpContentType.Json, HttpAllowedMethods.None)
assert response.GetStatus() == HttpStatus.NotFound
assert response.GetContentType() == HttpContentType.Json
assert response.GetAllowedMethods() == HttpAllowedMethods.None
this.Check(714, 96, 2, true)
}
@Test
fn Wire9_MethodNotAllowed_Html_0()
{
this.Select(0)
assert response.TryPrepare(HttpStatus.MethodNotAllowed, HttpContentType.Html, HttpAllowedMethods.Get)
assert response.GetStatus() == HttpStatus.MethodNotAllowed
assert response.GetContentType() == HttpContentType.Html
assert response.GetAllowedMethods() == HttpAllowedMethods.Get
this.Check(810, 110, 0, true)
}
@Test
fn Wire10_MethodNotAllowed_PlainText_1()
{
this.Select(1)
assert response.TryPrepare(HttpStatus.MethodNotAllowed, HttpContentType.PlainText, HttpAllowedMethods.Get)
assert response.GetStatus() == HttpStatus.MethodNotAllowed
assert response.GetContentType() == HttpContentType.PlainText
assert response.GetAllowedMethods() == HttpAllowedMethods.Get
this.Check(920, 111, 1, true)
}
@Test
fn Wire11_MethodNotAllowed_Json_2()
{
this.Select(2)
assert response.TryPrepare(HttpStatus.MethodNotAllowed, HttpContentType.Json, HttpAllowedMethods.Get)
assert response.GetStatus() == HttpStatus.MethodNotAllowed
assert response.GetContentType() == HttpContentType.Json
assert response.GetAllowedMethods() == HttpAllowedMethods.Get
this.Check(1031, 117, 2, true)
}
@Test
fn Wire12_InternalServerError_Html_0()
{
this.Select(0)
assert response.TryPrepare(HttpStatus.InternalServerError, HttpContentType.Html, HttpAllowedMethods.None)
assert response.GetStatus() == HttpStatus.InternalServerError
assert response.GetContentType() == HttpContentType.Html
assert response.GetAllowedMethods() == HttpAllowedMethods.None
this.Check(1148, 101, 0, true)
}
@Test
fn Wire13_InternalServerError_PlainText_1()
{
this.Select(1)
assert response.TryPrepare(HttpStatus.InternalServerError, HttpContentType.PlainText, HttpAllowedMethods.None)
assert response.GetStatus() == HttpStatus.InternalServerError
assert response.GetContentType() == HttpContentType.PlainText
assert response.GetAllowedMethods() == HttpAllowedMethods.None
this.Check(1249, 102, 1, true)
}
@Test
fn Wire14_InternalServerError_Json_2()
{
this.Select(2)
assert response.TryPrepare(HttpStatus.InternalServerError, HttpContentType.Json, HttpAllowedMethods.None)
assert response.GetStatus() == HttpStatus.InternalServerError
assert response.GetContentType() == HttpContentType.Json
assert response.GetAllowedMethods() == HttpAllowedMethods.None
this.Check(1351, 108, 2, true)
}
@Test
fn Wire15_MethodNotAllowed_PlainText_2()
{
this.Select(2)
assert response.TryPrepare(HttpStatus.MethodNotAllowed, HttpContentType.PlainText, HttpAllowedMethods.Head)
assert response.GetStatus() == HttpStatus.MethodNotAllowed
assert response.GetContentType() == HttpContentType.PlainText
assert response.GetAllowedMethods() == HttpAllowedMethods.Head
this.Check(1459, 112, 2, true)
}
@Test
fn Wire16_MethodNotAllowed_PlainText_2()
{
this.Select(2)
assert response.TryPrepare(HttpStatus.MethodNotAllowed, HttpContentType.PlainText, HttpAllowedMethods.GetAndHead)
assert response.GetStatus() == HttpStatus.MethodNotAllowed
assert response.GetContentType() == HttpContentType.PlainText
assert response.GetAllowedMethods() == HttpAllowedMethods.GetAndHead
this.Check(1571, 117, 2, true)
}
@Test
fn Wire17_Ok_Html_9()
{
this.Select(9)
assert response.TryPrepare(HttpStatus.Ok, HttpContentType.Html, HttpAllowedMethods.None)
assert response.GetStatus() == HttpStatus.Ok
assert response.GetContentType() == HttpContentType.Html
assert response.GetAllowedMethods() == HttpAllowedMethods.None
this.Check(1688, 82, 9, true)
}
@Test
fn Wire18_Ok_Html_10()
{
this.Select(10)
assert response.TryPrepare(HttpStatus.Ok, HttpContentType.Html, HttpAllowedMethods.None)
assert response.GetStatus() == HttpStatus.Ok
assert response.GetContentType() == HttpContentType.Html
assert response.GetAllowedMethods() == HttpAllowedMethods.None
this.Check(1770, 83, 10, true)
}
@Test
fn Wire19_Ok_Html_99()
{
this.Select(99)
assert response.TryPrepare(HttpStatus.Ok, HttpContentType.Html, HttpAllowedMethods.None)
assert response.GetStatus() == HttpStatus.Ok
assert response.GetContentType() == HttpContentType.Html
assert response.GetAllowedMethods() == HttpAllowedMethods.None
this.Check(1853, 83, 99, true)
}
@Test
fn Wire20_Ok_Html_100()
{
this.Select(100)
assert response.TryPrepare(HttpStatus.Ok, HttpContentType.Html, HttpAllowedMethods.None)
assert response.GetStatus() == HttpStatus.Ok
assert response.GetContentType() == HttpContentType.Html
assert response.GetAllowedMethods() == HttpAllowedMethods.None
this.Check(1936, 84, 100, true)
}
@Test
fn Wire21_Ok_Html_999()
{
this.Select(999)
assert response.TryPrepare(HttpStatus.Ok, HttpContentType.Html, HttpAllowedMethods.None)
assert response.GetStatus() == HttpStatus.Ok
assert response.GetContentType() == HttpContentType.Html
assert response.GetAllowedMethods() == HttpAllowedMethods.None
this.Check(2020, 84, 999, true)
}
@Test
fn Wire22_Ok_Html_1000()
{
this.Select(1000)
assert response.TryPrepare(HttpStatus.Ok, HttpContentType.Html, HttpAllowedMethods.None)
assert response.GetStatus() == HttpStatus.Ok
assert response.GetContentType() == HttpContentType.Html
assert response.GetAllowedMethods() == HttpAllowedMethods.None
this.Check(2104, 85, 1000, true)
}
@Test
fn Wire23_Ok_Html_9999()
{
this.Select(9999)
assert response.TryPrepare(HttpStatus.Ok, HttpContentType.Html, HttpAllowedMethods.None)
assert response.GetStatus() == HttpStatus.Ok
assert response.GetContentType() == HttpContentType.Html
assert response.GetAllowedMethods() == HttpAllowedMethods.None
this.Check(2189, 85, 9999, false)
}
@Test
fn Wire24_Ok_Html_10000()
{
this.Select(10000)
assert response.TryPrepare(HttpStatus.Ok, HttpContentType.Html, HttpAllowedMethods.None)
assert response.GetStatus() == HttpStatus.Ok
assert response.GetContentType() == HttpContentType.Html
assert response.GetAllowedMethods() == HttpAllowedMethods.None
this.Check(2274, 86, 10000, false)
}
@Test
fn Wire25_Ok_Html_99999()
{
this.Select(99999)
assert response.TryPrepare(HttpStatus.Ok, HttpContentType.Html, HttpAllowedMethods.None)
assert response.GetStatus() == HttpStatus.Ok
assert response.GetContentType() == HttpContentType.Html
assert response.GetAllowedMethods() == HttpAllowedMethods.None
this.Check(2360, 86, 99999, false)
}
@Test
fn Wire26_Ok_Html_100000()
{
this.Select(100000)
assert response.TryPrepare(HttpStatus.Ok, HttpContentType.Html, HttpAllowedMethods.None)
assert response.GetStatus() == HttpStatus.Ok
assert response.GetContentType() == HttpContentType.Html
assert response.GetAllowedMethods() == HttpAllowedMethods.None
this.Check(2446, 87, 100000, false)
}
@Test
fn Wire27_Ok_Html_999999()
{
this.Select(999999)
assert response.TryPrepare(HttpStatus.Ok, HttpContentType.Html, HttpAllowedMethods.None)
assert response.GetStatus() == HttpStatus.Ok
assert response.GetContentType() == HttpContentType.Html
assert response.GetAllowedMethods() == HttpAllowedMethods.None
this.Check(2533, 87, 999999, false)
}
@Test
fn Wire28_Ok_Html_1000000()
{
this.Select(1000000)
assert response.TryPrepare(HttpStatus.Ok, HttpContentType.Html, HttpAllowedMethods.None)
assert response.GetStatus() == HttpStatus.Ok
assert response.GetContentType() == HttpContentType.Html
assert response.GetAllowedMethods() == HttpAllowedMethods.None
this.Check(2620, 88, 1000000, false)
}
@Test
fn Wire29_Ok_Html_9999999()
{
this.Select(9999999)
assert response.TryPrepare(HttpStatus.Ok, HttpContentType.Html, HttpAllowedMethods.None)
assert response.GetStatus() == HttpStatus.Ok
assert response.GetContentType() == HttpContentType.Html
assert response.GetAllowedMethods() == HttpAllowedMethods.None
this.Check(2708, 88, 9999999, false)
}
@Test
fn Wire30_Ok_Html_10000000()
{
this.Select(10000000)
assert response.TryPrepare(HttpStatus.Ok, HttpContentType.Html, HttpAllowedMethods.None)
assert response.GetStatus() == HttpStatus.Ok
assert response.GetContentType() == HttpContentType.Html
assert response.GetAllowedMethods() == HttpAllowedMethods.None
this.Check(2796, 89, 10000000, false)
}
@Test
fn Wire31_Ok_Html_99999999()
{
this.Select(99999999)
assert response.TryPrepare(HttpStatus.Ok, HttpContentType.Html, HttpAllowedMethods.None)
assert response.GetStatus() == HttpStatus.Ok
assert response.GetContentType() == HttpContentType.Html
assert response.GetAllowedMethods() == HttpAllowedMethods.None
this.Check(2885, 89, 99999999, false)
}
@Test
fn Wire32_Ok_Html_100000000()
{
this.Select(100000000)
assert response.TryPrepare(HttpStatus.Ok, HttpContentType.Html, HttpAllowedMethods.None)
assert response.GetStatus() == HttpStatus.Ok
assert response.GetContentType() == HttpContentType.Html
assert response.GetAllowedMethods() == HttpAllowedMethods.None
this.Check(2974, 90, 100000000, false)
}
@Test
fn Wire33_Ok_Html_999999999()
{
this.Select(999999999)
assert response.TryPrepare(HttpStatus.Ok, HttpContentType.Html, HttpAllowedMethods.None)
assert response.GetStatus() == HttpStatus.Ok
assert response.GetContentType() == HttpContentType.Html
assert response.GetAllowedMethods() == HttpAllowedMethods.None
this.Check(3064, 90, 999999999, false)
}
@Test
fn Wire34_Ok_Html_1000000000()
{
this.Select(1000000000)
assert response.TryPrepare(HttpStatus.Ok, HttpContentType.Html, HttpAllowedMethods.None)
assert response.GetStatus() == HttpStatus.Ok
assert response.GetContentType() == HttpContentType.Html
assert response.GetAllowedMethods() == HttpAllowedMethods.None
this.Check(3154, 91, 1000000000, false)
}
@Test
fn Wire35_Ok_Html_2147483500()
{
this.Select(2147483500)
assert response.TryPrepare(HttpStatus.Ok, HttpContentType.Html, HttpAllowedMethods.None)
assert response.GetStatus() == HttpStatus.Ok
assert response.GetContentType() == HttpContentType.Html
assert response.GetAllowedMethods() == HttpAllowedMethods.None
this.Check(3245, 91, 2147483500, false)
}
@Test
fn BudgetAndReprepare()
{
this.Select(0)
assert response.TryPrepare(HttpStatus.Ok, HttpContentType.Html, HttpAllowedMethods.None)
assert encoder.TryPrepare(82)
assert encoder.GetAvailableLength() == 82
assert !encoder.TryPrepare(81)
assert !encoder.IsReady()
assert encoder.GetAvailableLength() == 0
assert encoder.GetHeaderLength() == 0
var value: byte = 0xFF
assert encoder.TryRead(0, value) == PacketDataResult.NotReady
assert value == 0x00
assert !encoder.TryPrepare(0)
assert !encoder.TryPrepare(-1)
assert encoder.TryPrepare(82)
assert data.GetReads() == 0
}
@Test
fn NonemptyExactBudget()
{
this.Select(1000)
assert response.TryPrepare(HttpStatus.Ok, HttpContentType.Html, HttpAllowedMethods.None)
assert !encoder.TryPrepare(1084)
assert encoder.TryPrepare(1085)
assert encoder.GetAvailableLength() == 1085
}
@Test
fn OverflowAndNegativeLength()
{
this.Select(2147483647)
assert response.TryPrepare(HttpStatus.Ok, HttpContentType.Html, HttpAllowedMethods.None)
assert !encoder.TryPrepare(2147483647)
assert !encoder.IsReady()
assert encoder.GetAvailableLength() == 0
this.Select(-1)
assert !response.TryPrepare(HttpStatus.Ok, HttpContentType.Html, HttpAllowedMethods.None)
assert !direct.TryPrepare(2147483647)
assert !direct.IsReady()
assert data.GetReads() == 0
}
fn Reject(status: HttpStatus, contentType: HttpContentType, allowed: HttpAllowedMethods)
{
this.Select(1)
assert response.TryPrepare(HttpStatus.Ok, HttpContentType.Html, HttpAllowedMethods.None)
assert encoder.TryPrepare(1000)
encoder.Invalidate()
assert !response.TryPrepare(status, contentType, allowed)
assert !response.IsReady()
assert response.GetAvailableLength() == 0
assert response.GetStatus() == HttpStatus.Unknown
assert response.GetContentType() == HttpContentType.Unknown
assert response.GetAllowedMethods() == HttpAllowedMethods.None
assert !encoder.TryPrepare(1000)
data.Metadata(status, contentType, allowed)
assert !direct.TryPrepare(1000)
assert !direct.IsReady()
assert direct.GetAvailableLength() == 0
}
@Test
fn UnsupportedMetadata()
{
this.Reject(HttpStatus.Unknown, HttpContentType.Html, HttpAllowedMethods.None)
this.Reject(HttpStatus.Ok, HttpContentType.Unknown, HttpAllowedMethods.None)
this.Reject(HttpStatus.MethodNotAllowed, HttpContentType.Html, HttpAllowedMethods.None)
this.Reject(HttpStatus.Ok, HttpContentType.Html, HttpAllowedMethods.Get)
}
@Test
fn UnpublishedAndReleasedSource()
{
this.Select(2)
assert !encoder.IsReady()
assert !encoder.TryPrepare(1000)
assert response.TryPrepare(HttpStatus.Ok, HttpContentType.Html, HttpAllowedMethods.None)
assert encoder.TryPrepare(1000)
data.Release()
assert !encoder.IsReady()
assert !response.IsReady()
assert encoder.GetAvailableLength() == 0
assert !response.TryPrepare(HttpStatus.Ok, HttpContentType.Html, HttpAllowedMethods.None)
assert !direct.TryPrepare(1000)
data.Select(2)
assert !response.IsReady()
assert !encoder.IsReady()
}
fn Failure(failure: PacketDataResult)
{
this.Select(2)
assert response.TryPrepare(HttpStatus.Ok, HttpContentType.Html, HttpAllowedMethods.None)
assert encoder.TryPrepare(1000)
data.FailAt(1, failure)
var value: byte = 0xFF
assert encoder.TryRead(82, value) == PacketDataResult.Success
assert value == 0x00
assert encoder.TryRead(83, value) == failure
assert value == 0x00
assert !encoder.IsReady()
assert !response.IsReady()
assert encoder.GetAvailableLength() == 0
assert encoder.TryRead(0, value) == PacketDataResult.NotReady
assert value == 0x00
this.Select(2)
assert response.TryPrepare(HttpStatus.Ok, HttpContentType.Html, HttpAllowedMethods.None)
assert encoder.TryPrepare(1000)
assert encoder.TryRead(83, value) == PacketDataResult.Success
assert value == 0x01
}
@Test
fn InvalidProviderRead()
{
this.Failure(PacketDataResult.Invalid)
}
@Test
fn BusyProviderRead()
{
this.Failure(PacketDataResult.Busy)
}
@Test
fn NotReadyProviderRead()
{
this.Failure(PacketDataResult.NotReady)
}
@Test
fn DirectProviderFailure()
{
this.Select(1)
assert direct.TryPrepare(1000)
data.FailAt(0, PacketDataResult.Invalid)
var value: byte = 0xFF
assert direct.TryRead(82, value) == PacketDataResult.Invalid
assert value == 0x00
assert !direct.IsReady()
assert data.IsReady()
}
@Test
fn BorrowedBodyAndBounds()
{
this.Select(2)
assert response.TryPrepare(HttpStatus.Ok, HttpContentType.Html, HttpAllowedMethods.None)
var value: byte = 0xFF
assert response.TryRead(-1, value) == PacketDataResult.Invalid
assert value == 0x00
assert response.TryRead(2, value) == PacketDataResult.Invalid
assert value == 0x00
assert response.IsReady()
assert data.GetReads() == 0
assert response.TryRead(1, value) == PacketDataResult.Success
assert value == 0x01
encoder.Invalidate()
response.Invalidate()
assert data.IsReady()
assert response.TryRead(0, value) == PacketDataResult.NotReady
assert value == 0x00
}
}