public void Test_WriteEvent_ArgsCornerCases() { TestUtilities.CheckNoEventSourcesRunning("Start"); using (var log = new EventSourceTest()) { using (var el = new LoudListener()) { // coverage for EventSource.SendCommand() var options = new Dictionary<string, string>() { { "arg", "val" } }; EventSource.SendCommand(log, EventCommand.SendManifest, options); Guid guid = Guid.NewGuid(); #if USE_ETW // TODO: Enable when TraceEvent is available on CoreCLR. GitHub issue #4864. log.EventWithManyTypeArgs("Hello", 0, 0, 0, 'a', 0, 0, 0, 0, (float)10.0, (double)11.0, guid); Assert.Equal(25, LoudListener.LastEvent.EventId); Assert.Equal(12, LoudListener.LastEvent.Payload.Count); Assert.Equal("Hello", (string)LoudListener.LastEvent.Payload[0]); Assert.Equal(0, (long)LoudListener.LastEvent.Payload[1]); Assert.Equal((uint)0, (uint)LoudListener.LastEvent.Payload[2]); Assert.Equal((ulong)0, (ulong)LoudListener.LastEvent.Payload[3]); Assert.Equal('a', (char)LoudListener.LastEvent.Payload[4]); Assert.Equal((byte)0, (byte)LoudListener.LastEvent.Payload[5]); Assert.Equal((sbyte)0, (sbyte)LoudListener.LastEvent.Payload[6]); Assert.Equal((short)0, (short)LoudListener.LastEvent.Payload[7]); Assert.Equal((ushort)0, (ushort)LoudListener.LastEvent.Payload[8]); Assert.Equal((float)10.0, (float)LoudListener.LastEvent.Payload[9]); Assert.Equal((double)11.0, (double)LoudListener.LastEvent.Payload[10]); Assert.Equal(guid, (Guid)LoudListener.LastEvent.Payload[11]); #endif // USE_ETW log.EventWith7Strings("s0", "s1", "s2", "s3", "s4", "s5", "s6"); Assert.Equal(26, LoudListener.LastEvent.EventId); Assert.Equal(7, LoudListener.LastEvent.Payload.Count); Assert.Equal("s0", (string)LoudListener.LastEvent.Payload[0]); Assert.Equal("s6", (string)LoudListener.LastEvent.Payload[6]); log.EventWith9Strings("s0", "s1", "s2", "s3", "s4", "s5", "s6", "s7", "s8"); Assert.Equal(27, LoudListener.LastEvent.EventId); Assert.Equal(9, LoudListener.LastEvent.Payload.Count); Assert.Equal("s0", (string)LoudListener.LastEvent.Payload[0]); Assert.Equal("s8", (string)LoudListener.LastEvent.Payload[8]); #if USE_ETW // TODO: Enable when TraceEvent is available on CoreCLR. GitHub issue #4864. log.EventWithWeirdArgs(IntPtr.Zero, true, MyLongEnum.LongVal1 /*, 9999999999999999999999999999m*/); Assert.Equal(30, LoudListener.LastEvent.EventId); Assert.Equal(3 /*4*/, LoudListener.LastEvent.Payload.Count); Assert.Equal(IntPtr.Zero, (IntPtr)LoudListener.LastEvent.Payload[0]); Assert.Equal(true, (bool)LoudListener.LastEvent.Payload[1]); Assert.Equal(MyLongEnum.LongVal1, (MyLongEnum)LoudListener.LastEvent.Payload[2]); // Assert.Equal(9999999999999999999999999999m, (decimal)LoudListener.LastEvent.Payload[3]); #endif // USE_ETW } } TestUtilities.CheckNoEventSourcesRunning("Stop"); }