public void MessagesAt0_04_AreAlways_At4Minutes()
        {
            var anyDateTime = "0";

            var timestamp = new ContextInserterBuilder().InsertAt("0:04").PublicMessage().CreateAt(anyDateTime).Build().Single().Timestamp;

            Assert.AreEqual(timestamp, DateTimeZero.AddMinutes(4));
        }
        public void MessagesAt12_34_AreAlways_At12_34()
        {
            var anyDateTime = "0";

            var timestamp = new ContextInserterBuilder().InsertAt("12:34").PublicMessage().CreateAt(anyDateTime).Build().Single().Timestamp;

            Assert.AreEqual(timestamp, DateTimeZero.AddHours(12).AddMinutes(34));
        }
        public void NukeBlastRadius_IsUnassigned_ThrowsNullException()
        {
            var inserter = new ContextInserterBuilder();

            var exception = TestHelper.AssertCatch <InvalidOperationException>(() => inserter.NukeBlastRadius);

            Assert.AreEqual("Nullable object must have a value.", exception.Message);
        }
        public void MessagesAt00_00_01_AreAlways_At1Second()
        {
            var anyDateTime = "0";

            var timestamp = new ContextInserterBuilder().InsertAt("00:00:01").PublicMessage().CreateAt(anyDateTime).Build().Single().Timestamp;

            Assert.AreEqual(timestamp, DateTimeZero.AddSeconds(1));
        }
        public void CreatedAt_1_00_IsCreatedAt1hour()
        {
            var inserter = new ContextInserterBuilder()
                           .InsertAt("0").ModMessage()
                           .CreateAt("1:00");

            Assert.AreEqual(DateTimeZero.AddHours(1), inserter.CreatedAt);
        }
        public void RadiusIs_1_00_Yields1Hour()
        {
            var inserter = new ContextInserterBuilder()
                           .InsertAt("0").ModMessage()
                           .CreateAt("0")
                           .RadiusIs("1:00");

            Assert.AreEqual(TimeSpan.FromHours(1), inserter.NukeBlastRadius);
        }
        public void VerifyTargeted_WithOneTarget_DoesNotThrowException()
        {
            var anyDateTime = "0";

            var inserter = new ContextInserterBuilder()
                           .InsertAt("1").PublicMessage()
                           .InsertAt("2").TargetedMessage().CreateAt(anyDateTime);

            inserter.VerifyTargeted("2".Wrap().Select(i => new Civilian(i)));
        }
        public void VerifyTargeted_WithTwoTargetsSwapped_DoesNotThrowException()
        {
            var anyDateTime = "0";

            var inserter = new ContextInserterBuilder()
                           .InsertAt("1").PublicMessage()
                           .InsertAt("2").TargetedMessage()
                           .InsertAt("3").TargetedMessage().CreateAt(anyDateTime);

            inserter.VerifyTargeted(new List <string> {
                "3", "2"
            }.Select(i => new Civilian(i)));
        }
        public void VerifyTargeted_WithTwoTargetsButOneTooMany_ThrowsException()
        {
            var anyDateTime = "0";

            var inserter = new ContextInserterBuilder()
                           .InsertAt("1").PublicMessage()
                           .InsertAt("2").TargetedMessage()
                           .InsertAt("3").TargetedMessage().CreateAt(anyDateTime);

            var exception = TestHelper.AssertCatch <Exception>(
                () => inserter.VerifyTargeted(new List <string> {
                "1", "2", "3"
            }.Select(i => new Civilian(i))));

            Assert.AreEqual("Expected targets are not equal to actual targets.", exception.Message);
        }