public void At_ShouldReturnNewPacketWithTimestamp()
        {
            var timestamp = new Timestamp(1);
            var packet    = new BoolPacket(true).At(timestamp);

            Assert.True(packet.Get());
            Assert.AreEqual(packet.Timestamp(), timestamp);

            var newTimestamp = new Timestamp(2);
            var newPacket    = packet.At(newTimestamp);

            Assert.IsInstanceOf <BoolPacket>(newPacket);
            Assert.True(newPacket.Get());
            Assert.AreEqual(newPacket.Timestamp(), newTimestamp);

            Assert.True(packet.Get());
            Assert.AreEqual(packet.Timestamp(), timestamp);
        }
        public void At_ShouldReturnNewPacketWithTimestamp()
        {
            using (var timestamp = new Timestamp(1))
            {
                var packet = new BoolPacket(true).At(timestamp);
                Assert.True(packet.Get());
                Assert.AreEqual(timestamp, packet.Timestamp());

                using (var newTimestamp = new Timestamp(2))
                {
                    var newPacket = packet.At(newTimestamp);
                    Assert.True(newPacket.Get());
                    Assert.AreEqual(newTimestamp, newPacket.Timestamp());
                }

                Assert.AreEqual(timestamp, packet.Timestamp());
            }
        }