public void FunctionTest()
{
var x = new double[] { 0, 4, 2, 1 };
var y = new double[] { 3, 2, };
DynamicTimeWarping target;
double expected, actual;
target = new DynamicTimeWarping(1);
expected = 1;
actual = target.Function(x, x);
Assert.AreEqual(expected, actual, 0.000001);
expected = 1;
actual = target.Function(y, y);
Assert.AreEqual(expected, actual, 0.000001);
expected = -0.076696513742007991;
actual = target.Function(x, y);
Assert.AreEqual(expected, actual, 0.000001);
actual = target.Function(y, x);
Assert.AreEqual(expected, actual, 0.000001);
target = new DynamicTimeWarping(2, 1.42);
var z = new double[] { 3, 2, 1, 5, 7, 8 };
expected = 1;
actual = target.Function(x, x);
Assert.AreEqual(expected, actual, 0.000001);
expected = 1;
actual = target.Function(y, y);
Assert.AreEqual(expected, actual, 0.000001);
expected = 1;
actual = target.Function(z, z);
Assert.AreEqual(expected, actual, 0.000001);
expected = -0.10903562560104614;
actual = target.Function(x, z);
Assert.AreEqual(expected, actual, 0.000001);
actual = target.Function(z, x);
Assert.AreEqual(expected, actual, 0.000001);
expected = 0.4208878392918925;
actual = target.Function(x, y);
Assert.AreEqual(expected, actual, 0.000001);
actual = target.Function(y, x);
Assert.AreEqual(expected, actual, 0.000001);
target = new DynamicTimeWarping(1, 0.0000000001);
expected = 1;
actual = target.Function(x, x);
Assert.AreEqual(expected, actual);
expected = 1;
actual = target.Function(y, y);
Assert.AreEqual(expected, actual);
expected = 0.000000000033333397321663391;
actual = target.Function(x, y);
Assert.AreEqual(expected, actual);
actual = target.Function(y, x);
Assert.AreEqual(expected, actual);
target = new DynamicTimeWarping(1, 292.12);
expected = 1;
actual = target.Function(x, x);
Assert.AreEqual(expected, actual, 0.000001);
actual = target.Function(y, y);
Assert.AreEqual(expected, actual, 0.000001);
expected = 0.99985353675500488;
actual = target.Function(x, y);
Assert.AreEqual(expected, actual);
actual = target.Function(y, x);
Assert.AreEqual(expected, actual);
}