Ejemplo n.º 1
0
        public void UnmanagedReadMockTest()
        {
            ConnectionMock  mock = new ConnectionMock();
            UnmanagedStruct ustr = new UnmanagedStruct()
            {
                ByteArr = new byte[] { 3, 5, 7 },
                Number  = UInt32.MaxValue,
                Str     = "Unmanaged!"
            };

            mock.Write(sHGG.RawSerialize(ustr));
            Assert.AreEqual(mock.data.Length, 18);
            Assert.AreEqual(mock.ReadUInt(), UInt32.MaxValue);
            // byte[]
            Assert.AreEqual(mock.ReadByte(), 3);
            Assert.AreEqual(mock.ReadByte(), 5);
            Assert.AreEqual(mock.ReadByte(), 7);
            // string + 0 char
            Assert.AreEqual(mock.ReadByte(), Convert.ToByte('U'));
            Assert.AreEqual(mock.ReadByte(), Convert.ToByte('n'));
            Assert.AreEqual(mock.ReadByte(), Convert.ToByte('m'));
            Assert.AreEqual(mock.ReadByte(), Convert.ToByte('a'));
            Assert.AreEqual(mock.ReadByte(), Convert.ToByte('n'));
            Assert.AreEqual(mock.ReadByte(), Convert.ToByte('a'));
            Assert.AreEqual(mock.ReadByte(), Convert.ToByte('g'));
            Assert.AreEqual(mock.ReadByte(), Convert.ToByte('e'));
            Assert.AreEqual(mock.ReadByte(), Convert.ToByte('d'));
            Assert.AreEqual(mock.ReadByte(), Convert.ToByte('!'));
            Assert.AreEqual(mock.ReadByte(), 0);
        }
        static void Main(string[] args)
        {
            UnmanagedStruct uStruct = new UnmanagedStruct();
            IntPtr          strPtr  = uStruct.listOfStrings[0];
            List <string>   data    = new List <string>();

            while (strPtr != IntPtr.Zero)
            {
                string readStr = Marshal.PtrToStringAnsi(strPtr);
                data.Add(readStr);
                strPtr += readStr.Length;     //I think it should be Length + 1 to include '\0'
            }
        }
Ejemplo n.º 3
0
        public void should_append_nullable_unmanaged_byref()
        {
            UnmanagedStruct?o = new UnmanagedStruct
            {
                A = 1,
                B = 2,
                C = 3,
            };

            LogManager.RegisterUnmanaged <UnmanagedStruct>();

            _logEvent.AppendUnmanaged(ref o);
            _logEvent.WriteToStringBuffer(_output);

            Assert.AreEqual("1-2-3", _output.ToString());
        }
Ejemplo n.º 4
0
        public void should_not_allocate_using_all_formats_and_file_appender_builder()
        {
            // Allocation tests are unreliable when run from NCrunch
            if (NCrunchEnvironment.NCrunchIsResident())
            {
                Assert.Inconclusive();
            }

            var log = LogManager.GetLogger("AllocationTest");

            GC.Collect(2, GCCollectionMode.Forced, true);
            var gcCountBefore = GC.CollectionCount(0);

            var numberOfEvents = 2048 * 10;

            for (var i = 0; i < numberOfEvents; i++)
            {
                log
                .Info()
                .Append("Int ")
                .Append(123243)
                .Append("Double ")
                .Append(32423432.4398438, "N4")
                .Append("String ")
                .Append("Some random string")
                .Append("Bool ")
                .Append(true)
                .Append("Decimal ")
                .Append(4234324324.23423423, "N4")
                .Append("Guid ")
                .Append(Guid.NewGuid())
                .Append("Timestamp ")
                .Append(DateTime.UtcNow.TimeOfDay)
                .Append("DateTime ")
                .Append(DateTime.UtcNow)
                .Log();

                log
                .Info()
                .Append("Enum ")
                .AppendEnum(DayOfWeek.Friday)
                .Append("UnknownEnum ")
                .AppendEnum(UnregisteredEnum.Bar)
                .Append("NullableEnum ")
                .AppendEnum((DayOfWeek?)DayOfWeek.Monday)
                .Append("NullableNullEnum ")
                .AppendEnum((DayOfWeek?)null)
                .Append("NullableInt ")
                .Append((int?)42)
                .Append("NullableNullInt ")
                .Append((int?)null)
                .Log();

                var                         unmanaged = new UnmanagedStruct(1, 2, 3);
                var                         unregistered_unmanaged               = new UnregisteredUnmanagedStruct(4, 5, 6);
                UnmanagedStruct?            nullable_unmanaged                   = unmanaged;
                UnmanagedStruct?            null_nullable_unmanaged              = (UnmanagedStruct?)null;
                UnregisteredUnmanagedStruct?nullable_unregistered_unmanaged      = new UnregisteredUnmanagedStruct(4, 5, 6);
                UnregisteredUnmanagedStruct?null_nullable_unregistered_unmanaged = (UnregisteredUnmanagedStruct?)null;

                log
                .Info()
                .Append("Unmanaged Struct ")
                .AppendUnmanaged(unmanaged)
                .Append("Unregistered Unmanaged Struct ")
                .AppendUnmanaged(unregistered_unmanaged)

                .Append("Unmanaged Struct byref ")
                .AppendUnmanaged(ref unmanaged)
                .Append("Unregistered Unmanaged byref ")
                .AppendUnmanaged(ref unregistered_unmanaged)

                .Append("Nullable Unmanaged ")
                .AppendUnmanaged(nullable_unmanaged)
                .Append("Null Nullable Unmanaged ")
                .AppendUnmanaged(null_nullable_unmanaged)
                .Append("Nullable Unregistered Unmanaged ")
                .AppendUnmanaged(nullable_unregistered_unmanaged)
                .Append("Null Nullable Unregistered Unmanaged")
                .AppendUnmanaged(null_nullable_unregistered_unmanaged)

                .Append("Nullable Unmanaged byref ")
                .AppendUnmanaged(ref nullable_unmanaged)
                .Append("Null Nullable Unmanaged byref ")
                .AppendUnmanaged(ref null_nullable_unmanaged)
                .Append("Nullable Unregistered Unmanaged byref ")
                .AppendUnmanaged(ref nullable_unregistered_unmanaged)
                .Append("Null Nullable Unregistered Unmanaged byref ")
                .AppendUnmanaged(ref null_nullable_unregistered_unmanaged)

                .Log();
            }

            // Give the appender some time to finish writing to file
            while (_waitableAppender.WrittenEventCount < numberOfEvents)
            {
                Thread.Sleep(1);
            }

            var gcCountAfter = GC.CollectionCount(0);

            Check.That(gcCountBefore).IsEqualTo(gcCountAfter);
        }