public void NextTimestamp_WithNegativeInterval_ThrowsException()
        {
            var contextBuilder = new ContextAppenderBuilder(-TimeSpan.FromTicks(1));

            var exception = TestHelper.AssertCatch <ArgumentOutOfRangeException>(() => contextBuilder.NextTimestamp());

            Assert.IsTrue(exception.Message.Contains("Interval is less than or equal to zero."));
        }
        public void RadiusIs_1_00_Yields1Hour()
        {
            var appender = new ContextAppenderBuilder(TimeSpan.FromHours(1))
                           .RadiusIs("1:00");

            var radius = appender.NukeBlastRadius;

            Assert.AreEqual(TimeSpan.FromHours(1), radius);
        }
        public void VerifyTargetedViaAppender_WithOneTarget_DoesNotThrowException()
        {
            var appender = new ContextAppenderBuilder(TimeSpan.FromHours(1))
                           .PublicMessage()
                           .TargetedMessage();

            appender.VerifyTargeted(new List <string> {
                "#2"
            }.Select(i => new Civilian(i)));
        }
        public void NextTimestamp_With3MessagesSpacedBy1Hour_Yields4Hours()
        {
            var appender = new ContextAppenderBuilder(TimeSpan.FromHours(1))
                           .PublicMessage()
                           .TargetedMessage()
                           .ModMessage();

            var nextTimestamp = appender.NextTimestamp();

            Assert.AreEqual(DateTimeZero.AddHours(4), nextTimestamp);
        }
        public void SubsequentlySpacedBy_1HourWith3Messages_AreAt123Hours()
        {
            var context = new ContextAppenderBuilder(TimeSpan.FromHours(1))
                          .PublicMessage()
                          .TargetedMessage()
                          .ModMessage().Build();

            Assert.AreEqual(DateTimeZero.AddHours(1), context[0].Timestamp);
            Assert.AreEqual(DateTimeZero.AddHours(2), context[1].Timestamp);
            Assert.AreEqual(DateTimeZero.AddHours(3), context[2].Timestamp);
        }
        public void VerifyTargetedViaAppender_WithTwoTargetsButOneTooMany_ThrowsException()
        {
            var contextBuilder = new ContextAppenderBuilder(TimeSpan.FromHours(1))
                                 .PublicMessage()
                                 .TargetedMessage()
                                 .TargetedMessage();

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

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