using NUnit.Framework; using Stylet.Xaml; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace StyletUnitTests { [TestFixture] public class DebugConverterTests { private DebugConverter converter; private List log; [SetUp] public void SetUp() { this.log = new List(); this.converter = new DebugConverter(); this.converter.Logger = (msg, name) => log.Add(msg); } [Test] public void InstancePropertyIsSingleton() { Assert.AreEqual(DebugConverter.Instance, DebugConverter.Instance); } [Test] public void ConvertPassesThroughValue() { var result = this.converter.Convert(5, null, null, null); Assert.AreEqual(5, result); } [Test] public void ConvertBackPassesThrough() { var result = this.converter.ConvertBack("hello", null, null, null); Assert.AreEqual("hello", result); } [Test] public void NameIsUsedInLogger() { this.converter.Logger = (msg, name) => log.Add(name); this.converter.Name = "Test"; this.converter.Convert(new object(), null, null, null); Assert.That(this.log, Is.EquivalentTo(new[] { "Test" })); } [Test] public void LogsConvertWithNoParameter() { this.converter.Convert(5, typeof(int), null, null); Assert.That(this.log, Is.EquivalentTo(new[] { "Convert: Value = '5' TargetType = 'System.Int32'" })); } [Test] public void LogsConvertWithParameter() { this.converter.Convert("hello", typeof(bool), "the parameter", null); Assert.That(this.log, Is.EquivalentTo(new[] { "Convert: Value = 'hello' TargetType = 'System.Boolean' Parameter = 'the parameter'" })); } [Test] public void LogsConvertBackWithNoParameter() { this.converter.ConvertBack(2.2, typeof(string), null, null); Assert.That(this.log, Is.EquivalentTo(new[] { "ConvertBack: Value = '2.2' TargetType = 'System.String'" })); } [Test] public void LogsConvertBackWithParameter() { this.converter.ConvertBack(false, typeof(double), 5, null); Assert.That(this.log, Is.EquivalentTo(new[] { "ConvertBack: Value = 'False' TargetType = 'System.Double' Parameter = '5'" })); } } }