Browse Source

Fix UnitTests.

release/3.x.x
Christian Kratky 4 years ago
parent
commit
7a24970035
2 changed files with 6 additions and 23 deletions
  1. +1
    -17
      Source/MQTTnet/Extensions/UserPropertyExtension.cs
  2. +5
    -6
      Tests/MQTTnet.Core.Tests/MqttApplicationMessage_Tests.cs

+ 1
- 17
Source/MQTTnet/Extensions/UserPropertyExtension.cs View File

@@ -1,32 +1,16 @@
using System; using System;
using System.ComponentModel;
using System.Linq; using System.Linq;


namespace MQTTnet.Extensions namespace MQTTnet.Extensions
{ {
public static class UserPropertyExtension public static class UserPropertyExtension
{ {
public static string GetUserProperty(this MqttApplicationMessage message, string propertyName, StringComparison comparisonType = StringComparison.OrdinalIgnoreCase)
public static string GetUserProperty(this MqttApplicationMessage message, string propertyName, StringComparison comparisonType = StringComparison.Ordinal)
{ {
if (message == null) throw new ArgumentNullException(nameof(message)); if (message == null) throw new ArgumentNullException(nameof(message));
if (propertyName == null) throw new ArgumentNullException(nameof(propertyName)); if (propertyName == null) throw new ArgumentNullException(nameof(propertyName));


return message.UserProperties?.SingleOrDefault(up => up.Name.Equals(propertyName, comparisonType))?.Value; return message.UserProperties?.SingleOrDefault(up => up.Name.Equals(propertyName, comparisonType))?.Value;
} }

public static T GetUserProperty<T>(this MqttApplicationMessage message, string propertyName, StringComparison comparisonType = StringComparison.OrdinalIgnoreCase)
{
var value = GetUserProperty(message, propertyName, comparisonType);

var typeDescriptor = TypeDescriptor.GetConverter(typeof(T));
try
{
return (T) typeDescriptor.ConvertFromString(value);
}
catch (Exception ex)
{
throw new InvalidOperationException($"Cannot convert value({value ?? "null"}) of UserProperty({propertyName}) to {typeof(T).FullName}.", ex);
}
}
} }
} }

+ 5
- 6
Tests/MQTTnet.Core.Tests/MqttApplicationMessage_Tests.cs View File

@@ -1,8 +1,7 @@
using System;
using System.Collections.Generic;
using Microsoft.VisualStudio.TestTools.UnitTesting; using Microsoft.VisualStudio.TestTools.UnitTesting;
using MQTTnet.Extensions; using MQTTnet.Extensions;
using MQTTnet.Packets; using MQTTnet.Packets;
using System.Collections.Generic;


namespace MQTTnet.Tests namespace MQTTnet.Tests
{ {
@@ -23,11 +22,11 @@ namespace MQTTnet.Tests
}; };


Assert.AreEqual("bar", message.GetUserProperty("foo")); Assert.AreEqual("bar", message.GetUserProperty("foo"));
Assert.AreEqual(1011, message.GetUserProperty<int>("value"));
Assert.AreEqual("insensitive", message.GetUserProperty("case"));
//Assert.AreEqual(1011, message.GetUserProperty<int>("value"));
Assert.AreEqual(null, message.GetUserProperty("case"));
Assert.AreEqual(null, message.GetUserProperty("nonExists")); Assert.AreEqual(null, message.GetUserProperty("nonExists"));
Assert.AreEqual(null, message.GetUserProperty<int?>("nonExists"));
Assert.ThrowsException<InvalidOperationException>(() => message.GetUserProperty<int>("nonExists"));
//Assert.AreEqual(null, message.GetUserProperty<int?>("nonExists"));
//Assert.ThrowsException<InvalidOperationException>(() => message.GetUserProperty<int>("nonExists"));
} }
} }
} }

Loading…
Cancel
Save