コード例 #1
0
ファイル: CustomAssert.cs プロジェクト: branc116/units-core
        public static bool ExpressionsAreEqual(string expected, string actual)
        {
            var x = SymbolicExpression.Variable("x");
            SymbolicExpression e = null;

            try
            {
                e = SymbolicExpression.Parse(expected.CleanExpression());
            }catch (Exception ex)
            {
            }
            var a = SymbolicExpression.Parse(actual);

            for (int i = 1; i >= 0; i <<= 1)
            {
                var resExpected = e.Substitute(x, SymbolicExpression.FromInt64(i)).Approximate().ToString();
                var resActual   = a.Substitute(x, SymbolicExpression.FromInt64(i)).Approximate().ToString();
                try
                {
                    var resDoubleExpected = double.Parse(resExpected, System.Globalization.CultureInfo.GetCultureInfo("en-US").NumberFormat);
                    var resDoubleActual   = double.Parse(resActual, System.Globalization.CultureInfo.GetCultureInfo("en-US").NumberFormat);
                    Assert.AreEqual(resDoubleExpected, resDoubleActual, 10 * Math.Pow(10, Math.Log10(Math.Abs(resDoubleExpected)) - 9));
                }catch (Exception ex)
                {
                    throw;
                }
            }
            return(true);
        }