public void TestTimes() { using (CultureHelper.SetCulture("en-GB")) { Helper.AssertTemplateResult("12", "{{ 3 | times:4 }}"); Helper.AssertTemplateResult("125", "{{ 10 | times:12.5 }}"); Helper.AssertTemplateResult("125", "{{ 10.0 | times:12.5 }}"); Helper.AssertTemplateResult("125", "{{ 12.5 | times:10 }}"); Helper.AssertTemplateResult("125", "{{ 12.5 | times:10.0 }}"); Helper.AssertTemplateResult("foofoofoofoo", "{{ 'foo' | times:4 }}"); // Test against overflows when we try to be precise but the result exceeds the range of the input type. Helper.AssertTemplateResult(((double)((decimal.MaxValue / 100) + (decimal).1) * (double)((decimal.MaxValue / 100) + (decimal).1)).ToString(), $"{{{{ {(decimal.MaxValue / 100) + (decimal).1} | times:{(decimal.MaxValue / 100) + (decimal).1} }}}}"); // Test against overflows going beyond the double precision float type's range Helper.AssertTemplateResult(double.NegativeInfinity.ToString(), $"{{{{ 12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890.0 | times:-12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890.0 }}}}"); Helper.AssertTemplateResult(double.PositiveInfinity.ToString(), $"{{{{ 12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890.0 | times:12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890.0 }}}}"); // Ensures no underflow exception is thrown when the result doesn't fit the precision of double. Helper.AssertTemplateResult("0", $"{{{{ 0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 | times:0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 }}}}"); } Assert.AreEqual(8.43, StandardFilters.Times(0.843m, 10)); Assert.AreEqual(412, StandardFilters.Times(4.12m, 100)); Assert.AreEqual(7556.3, StandardFilters.Times(7.5563m, 1000)); }
public void TestTimes() { using (CultureHelper.SetCulture("en-GB")) { Helper.AssertTemplateResult("12", "{{ 3 | times:4 }}"); Helper.AssertTemplateResult("125", "{{ 10 | times:12.5 }}"); Helper.AssertTemplateResult("125", "{{ 10.0 | times:12.5 }}"); Helper.AssertTemplateResult("125", "{{ 12.5 | times:10 }}"); Helper.AssertTemplateResult("125", "{{ 12.5 | times:10.0 }}"); Helper.AssertTemplateResult("foofoofoofoo", "{{ 'foo' | times:4 }}"); } Assert.AreEqual(8.43, StandardFilters.Times(0.843m, 10)); Assert.AreEqual(412, StandardFilters.Times(4.12m, 100)); Assert.AreEqual(7556.3, StandardFilters.Times(7.5563m, 1000)); }