public void Test_PropertyHelpers() { // Verify that the property helper methods work as expected. var message = new ProxyMessage(); // Verify that non-existant property values return the default for the requested type. var fooProperty = new PropertyNameUtf8("foo"); Assert.Null(message.GetStringProperty(fooProperty)); Assert.Equal(0, message.GetIntProperty(fooProperty)); Assert.Equal(0L, message.GetLongProperty(fooProperty)); Assert.False(message.GetBoolProperty(fooProperty)); Assert.Equal(0.0, message.GetDoubleProperty(fooProperty)); Assert.Equal(DateTime.MinValue, message.GetDateTimeProperty(fooProperty)); Assert.Equal(TimeSpan.Zero, message.GetTimeSpanProperty(fooProperty)); // Verify that we can override default values for non-existant properties. Assert.Equal("bar", message.GetStringProperty(fooProperty, "bar")); Assert.Equal(123, message.GetIntProperty(fooProperty, 123)); Assert.Equal(456L, message.GetLongProperty(fooProperty, 456L)); Assert.True(message.GetBoolProperty(fooProperty, true)); Assert.Equal(123.456, message.GetDoubleProperty(fooProperty, 123.456)); Assert.Equal(new DateTime(2019, 4, 14), message.GetDateTimeProperty(fooProperty, new DateTime(2019, 4, 14))); Assert.Equal(TimeSpan.FromSeconds(123), message.GetTimeSpanProperty(fooProperty, TimeSpan.FromSeconds(123))); // Verify that we can write and then read properties. message.SetStringProperty(fooProperty, "bar"); Assert.Equal("bar", message.GetStringProperty(fooProperty)); message.SetIntProperty(fooProperty, 123); Assert.Equal(123, message.GetIntProperty(fooProperty)); message.SetLongProperty(fooProperty, 456L); Assert.Equal(456L, message.GetLongProperty(fooProperty)); message.SetBoolProperty(fooProperty, true); Assert.True(message.GetBoolProperty(fooProperty)); message.SetDoubleProperty(fooProperty, 123.456); Assert.Equal(123.456, message.GetDoubleProperty(fooProperty)); var date = new DateTime(2019, 4, 14).ToUniversalTime(); message.SetDateTimeProperty(fooProperty, date); Assert.Equal(date, message.GetDateTimeProperty(fooProperty)); message.SetTimeSpanProperty(fooProperty, TimeSpan.FromSeconds(123)); Assert.Equal(TimeSpan.FromSeconds(123), message.GetTimeSpanProperty(fooProperty)); }