コード例 #1
0
        public void ThrowWhenSerializeWithNoOptions()
        {
            var serializer = new EntryStringSerializer();

            serializer.Options = 0;

            var entry = new SerpentEntry(String.Empty);

            Assert.Throws <InvalidSerializerOptionsException>(() => serializer.Serialize(entry));
        }
コード例 #2
0
        public void ThrowManualFlushWithBypass()
        {
            var outputMock = new Mock <IDirectOutput>();
            var flushMock  = new Mock <IRecordFlusher>();
            var serpent    = new SerpentKernel.Kernel(flushMock.Object, outputMock.Object);
            var newEntry   = new SerpentEntry(String.Empty);

            serpent.ForceFlushOnRecord = true;

            Assert.Throws <InvalidFlushOperationException>(() => serpent.FlushRecords());
        }
コード例 #3
0
        public void ThrowOnInvalidSeverityRange()
        {
            var outputMock = new Mock <IDirectOutput>();
            var flushMock  = new Mock <IRecordFlusher>();
            var serpent    = new SerpentKernel.Kernel(flushMock.Object, outputMock.Object);
            var newEntry   = new SerpentEntry(String.Empty);

            serpent.MinimumSeverity = EntrySeverity.Critical;
            serpent.MaximumSeverity = EntrySeverity.Low;

            Assert.Throws <InvalidSeverityRangeException>(() => serpent.Record(newEntry));
        }
コード例 #4
0
        public void PassRecordWhenSeverityIsMaximum()
        {
            var outputMock = new Mock <IDirectOutput>();
            var flushMock  = new Mock <IRecordFlusher>();
            var serpent    = new SerpentKernel.Kernel(flushMock.Object, outputMock.Object);
            var newEntry   = new SerpentEntry(String.Empty, EntrySeverity.Critical);

            serpent.MaximumSeverity = EntrySeverity.Critical;
            serpent.Record(newEntry);

            Assert.NotEmpty(serpent.GetRecords());
        }
コード例 #5
0
        public void FailRecordWhenSeverityLowerThanMinimum()
        {
            var outputMock = new Mock <IDirectOutput>();
            var flushMock  = new Mock <IRecordFlusher>();
            var serpent    = new SerpentKernel.Kernel(flushMock.Object, outputMock.Object);
            var newEntry   = new SerpentEntry(String.Empty, EntrySeverity.Medium);

            serpent.MinimumSeverity = EntrySeverity.High;
            serpent.Record(newEntry);

            Assert.Empty(serpent.GetRecords());
        }
コード例 #6
0
        public void PassFlushingSingleEntry()
        {
            var ser     = new Mock <EntryStringSerializer>();
            var fs      = new Mock <IFileSystem>();
            var flusher = new FileFlusher(ser.Object, fs.Object);
            var item    = new SerpentEntry("One");

            flusher.FlushSingleEntry(item);
            flusher.FlushSingleEntry(item);

            fs.Verify(x => x.AppendAllText(It.IsAny <string>(), It.IsAny <string>()), Times.Exactly(2));
        }
コード例 #7
0
        public void PassFlushWithBypass()
        {
            var outputMock = new Mock <IDirectOutput>();
            var flushMock  = new Mock <IRecordFlusher>();
            var serpent    = new SerpentKernel.Kernel(flushMock.Object, outputMock.Object);
            var newEntry   = new SerpentEntry(String.Empty);

            serpent.ForceFlushOnRecord = true;

            serpent.Record(newEntry);

            flushMock.Verify(x => x.FlushSingleEntry(It.IsAny <ISerpentEntry>()));
        }
コード例 #8
0
        public void PassWhenSingleFlagSerializedAsExpected()
        {
            var serializer = new EntryStringSerializer();

            serializer.Options = SerializerOptions.IncludeMessage;
            var entry = new SerpentEntry("This is a message!", EntrySeverity.High, "Unit Test");

            var serialized = serializer.Serialize(entry);

            Assert.Contains(entry.Message, serialized);
            Assert.DoesNotContain(entry.Origin, serialized);
            Assert.DoesNotContain(entry.Severity.ToString(), serialized);
            Assert.DoesNotContain(entry.Date.ToString(serializer.DateFormat), serialized);
        }
コード例 #9
0
        public void PassFlushWithoutBypass()
        {
            var outputMock = new Mock <IDirectOutput>();
            var flushMock  = new Mock <IRecordFlusher>();
            var serpent    = new SerpentKernel.Kernel(flushMock.Object, outputMock.Object);
            var newEntry   = new SerpentEntry(String.Empty);

            serpent.ForceFlushOnRecord = false;
            serpent.Record(newEntry);

            Assert.NotEmpty(serpent.GetRecords());
            serpent.FlushRecords();
            Assert.Empty(serpent.GetRecords());
            flushMock.Verify(x => x.FlushSingleEntry(It.IsAny <ISerpentEntry>()), Times.Never);
        }
コード例 #10
0
        public void PassWithAllFlagsSerializedAsExpected()
        {
            var serializer = new EntryStringSerializer();

            serializer.DateFormat = "mm:ss";
            serializer.Options    = SerializerOptions.IncludeDate | SerializerOptions.IncludeMessage | SerializerOptions.IncludeOrigin | SerializerOptions.IncludeSeverity;

            var entry      = new SerpentEntry("Hi!", EntrySeverity.Informational, "Unit Test");
            var serialized = serializer.Serialize(entry);

            Assert.Contains(entry.Date.ToString(serializer.DateFormat), serialized);
            Assert.Contains(entry.Message, serialized);
            Assert.Contains(entry.Severity.ToString(), serialized);
            Assert.Contains(entry.Origin, serialized);
        }