public void SuccessfullyCalculateHyperbolicTangentOfPositiveAngle() { var value = 60; var function = new HyperbolicTangentFunction(); var phase = function.Calculate(); Assert.NotNull(phase); Assert.Equal("Specify Argument", phase.Name); Assert.Equal("Specify angle to find the hyperbolic tangent of.", phase.Description); Assert.Collection(phase.Inputs, i => { Assert.Equal("Angle", i.Info.Name); Assert.Null(i.Info.Description); Assert.Equal(new RadianUnit(), i.Info.Unit); }); phase.Inputs[0].Value = value; Assert.Null(function.Calculate(phase)); Assert.Collection(function.CurrentResult, i => { Assert.Equal(typeof(double), i.ValueType); Assert.Equal(Math.Tanh(value), TypeConverter.ToObject <double>(i.Value)); }); }
public void SuccessfullySetFunctionInfo() { var function = new HyperbolicTangentFunction(); Assert.NotNull(function.FunctionInfo); Assert.Equal("Hyperbolic Tangent", function.FunctionInfo.Name); Assert.Equal(new Version("1.0.0"), function.FunctionInfo.Version); Assert.Equal("Find the hyperbolic tangent of an angle.", function.FunctionInfo.Description); Assert.Collection(function.FunctionInfo.Tags, i => Assert.Equal("hyperbolic", i), i => Assert.Equal("tangent", i), i => Assert.Equal("tanh", i)); }
public void SuccessfullyCalculateHyperbolicTangentWithNoAngleSpecified() { var function = new HyperbolicTangentFunction(); var phase = function.Calculate(); Assert.NotNull(phase); Assert.Null(function.Calculate(phase)); Assert.Collection(function.CurrentResult, i => { Assert.Equal(typeof(double), function.CurrentResult[0].ValueType); Assert.Equal(Math.Tanh(0.0), TypeConverter.ToObject <double>(function.CurrentResult[0].Value)); }); }
public void Invoke_ReturnsHyperbolicTangent() { const double Input1 = -1.234d; const double Input2 = 0.0d; const double Input3 = 12.34d; var expected1 = Math.Tanh(Input1); var expected2 = Math.Tanh(Input2); var expected3 = Math.Tanh(Input3); var function = new HyperbolicTangentFunction(); var actual1 = function.Invoke(Input1); var actual2 = function.Invoke(Input2); var actual3 = function.Invoke(Input3); Assert.AreEqual(expected1, actual1, 0.0000001); Assert.AreEqual(expected2, actual2, 0.0000001); Assert.AreEqual(expected3, actual3, 0.0000001); }
public void InvokeDerivative_ReturnsHyperbolicDerivative() { const double Input1 = -1.234d; const double Input2 = 0.0d; const double Input3 = 12.34d; var expected1 = 1 / Math.Pow(Math.Cosh(Input1), 2); var expected2 = 1 / Math.Pow(Math.Cosh(Input2), 2); var expected3 = 1 / Math.Pow(Math.Cosh(Input3), 2); var function = new HyperbolicTangentFunction(); var actual1 = function.InvokeDerivative(Input1); var actual2 = function.InvokeDerivative(Input2); var actual3 = function.InvokeDerivative(Input3); Assert.AreEqual(expected1, actual1, 0.0000001); Assert.AreEqual(expected2, actual2, 0.0000001); Assert.AreEqual(expected3, actual3, 0.0000001); }
public void SuccessfullyCalculateHyperbolicTangentOfNegativeAngle() { var value = -54; var function = new HyperbolicTangentFunction(); var phase = function.Calculate(); Assert.NotNull(phase); phase.Inputs[0].Value = value; Assert.Null(function.Calculate(phase)); Assert.Collection(function.CurrentResult, i => { Assert.Equal(typeof(double), i.ValueType); Assert.Equal(Math.Tanh(value), TypeConverter.ToObject <double>(i.Value)); }); }