public async Task TestPacketWriteUint() { const int size = sizeof(uint); const int lastIndex = size - 1; var packet = new MutablePacket(); packet.WriteInt(201); var bytes = packet.Lock(); Assert.IsTrue(bytes.Length >= size && (bytes[0] == 201 || bytes[lastIndex] == 201), "Failed to write unsigned integer to packet"); if (packet.Locked) { var task = new Task(() => packet.WriteInt(3935)); task.Start(); Assert.IsTrue(await TaskTimesOut(TimeSpan.FromSeconds(2), task), "Packet reported being locked after locking but was still mutable"); } else { bytes[0] = 94; var newBytes = packet.Lock(); if (newBytes[0] != 201 && newBytes[lastIndex] != 201) Assert.Fail("Packet reported not being locked but the buffer was returned by reference not copy. Return a full copy of the buffer if you wish to unlock else ensure you set the buffer to a locked state when Lock() is called."); } }