public void Test_GuessSettingsFactory_Defaults() { //default is true Assert.IsTrue(GuessSettingsFactory.Defaults.CharCanBeBoolean); var f = new GuessSettingsFactory(); var instance = f.Create(); Assert.IsTrue(instance.CharCanBeBoolean); Assert.IsFalse(instance == GuessSettingsFactory.Defaults); //changing static defaults GuessSettingsFactory.Defaults.CharCanBeBoolean = false; try { //should change the result of Create to the new default Assert.IsFalse(f.Create().CharCanBeBoolean); var decider = new DecimalTypeDecider(CultureInfo.CurrentCulture); Assert.IsFalse(decider.Settings.CharCanBeBoolean); } finally { //set the static default back to not interfere with other tests GuessSettingsFactory.Defaults.CharCanBeBoolean = true; } }
public void BigInt_Parse() { var decider = new DecimalTypeDecider(new CultureInfo("en-US")); Assert.AreEqual(100, decider.Parse("100")); Assert.AreEqual(9223372036854775807L, decider.Parse("9223372036854775807")); }
public void Performance_Decimals() { var culture = new CultureInfo("en-gb"); List <string> inputs = new List <string>(); var r = new Random(500); for (int i = 0; i < 1_000_000; i++) { inputs.Add((r.NextDouble() * 1000.0).ToString("F")); } var decider = new DecimalTypeDecider(new CultureInfo("en-GB")); var req = new DatabaseTypeRequest(null); Stopwatch sw = new Stopwatch(); sw.Start(); foreach (string s in inputs) { decider.IsAcceptableAsType(s, req); } sw.Stop(); Console.WriteLine($"DatabaseTypeRequest.IsAcceptableAsType:{sw.ElapsedMilliseconds} ms"); sw.Restart(); var g = new Guesser(); foreach (string s in inputs) { g.AdjustToCompensateForValue(s); } sw.Stop(); Console.WriteLine($"Guesser.AdjustToCompensateForValue:{sw.ElapsedMilliseconds} ms"); sw.Restart(); foreach (string s in inputs) { s.To <decimal>(culture); } sw.Stop(); Console.WriteLine($"To<decimal>:{sw.ElapsedMilliseconds} ms"); sw.Restart(); foreach (string s in inputs) { decimal.TryParse(s, NumberStyles.Any, culture, out _); } sw.Stop(); Console.WriteLine($"Parse:{sw.ElapsedMilliseconds} ms"); }