using System; using System.Collections.Generic; using System.Linq; using System.Text; using NUnit.Framework; using Developpez.Dotnet.Text; namespace Developpez.Dotnet.Tests.Text { [TestFixture(Description = "Tests de la classe StringTemplate")] public class StringTemplateTests { [Test(Description = "Vérifie le fonctionnement de la méthode Format")] public void Check_Format() { string name = "Zobi la mouche"; DateTime date = DateTime.Now; string format = "Bonjour {0}. Nous sommes le {1:D}, et il est {1:T}."; string templateFormat = "Bonjour {Name}. Nous sommes le {Date:D}, et il est {Date:T}."; var values1 = new Dictionary { { "Name", "Zobi la mouche"}, { "Date", date } }; var values2 = new { Name = name, Date = date }; string result0 = String.Format(format, name, date); string result1 = StringTemplate.Format(templateFormat, values1); string result2 = StringTemplate.Format(templateFormat, values2); Assert.AreEqual(result0, result1); Assert.AreEqual(result0, result2); } [Test] public void Constructor_Should_Raise_Exception_When_Called_With_Null_Template() { string nullTemplate; Assert2.Throws( () => nullTemplate = StringTemplate.Format(null, "")); } [Test] public void Constructor_Should_Raise_Exception_When_Called_With_Null_Values() { string nullValues; Assert2.Throws( () => nullValues = StringTemplate.Format("Bonjour {0}.", null)); } [Test] public void Format_Should_return_Template_When_No_Matching_Property_exists() { string format = "Bonjour {Name}"; var values1 = new Dictionary { { "Nam", "numero 6"}, }; Assert.AreEqual(StringTemplate.Format(format, values1), format); var values2 = new { Nam = "numero 6" }; Assert.AreEqual(StringTemplate.Format(format, values2), format); } [Test] public void ToString_Should_Return_Template() { StringTemplate testStringTemplate = new StringTemplate("test"); Assert.AreEqual("test", testStringTemplate.ToString()); } [Test] public void Implicit_Operator() { StringTemplate testStringTemplate = "test"; Assert.AreEqual("test", testStringTemplate.ToString()); } [Test] public void Test_BracesAreEscaped() { var values1 = new[] { "World" }; var values2 = new { Name = "World" }; string s = StringTemplate.Format("Hello {{Name}} !", values2); Assert.AreEqual("Hello {Name} !", s); string s1, s2; s1 = String.Format("Hello {{{0}}} !", values1); s2 = StringTemplate.Format("Hello {{{Name}}} !", values2); Assert.AreEqual(s1, s2); s1 = String.Format("Hello {{{0} !", values1); s2 = StringTemplate.Format("Hello {{{Name} !", values2); Assert.AreEqual(s1, s2); s1 = String.Format("Hello {0}}} !", values1); s2 = StringTemplate.Format("Hello {Name}}} !", values2); Assert.AreEqual(s1, s2); Assert2.Throws( () => s2 = StringTemplate.Format("Hello {{{Name}} !", values2)); } } }