using DynamicTimeWarp
using Test


@test DynamicTimeWarp.trackback([
     0    0    0    0  16   65  146  227  276  292  292
    16   16   16   16   0    9   34   59   68   68   84
    65   65   65   65   9    0    4    8    8   17   66
   146  146  146  146  34    4    0    0    4   29   98
   195  195  195  195  43    4    4    4    0    9   58
   211  211  211  211  43   13   29   29    9    0   16
   211  211  211  211  59   62   94  110   58   16    0
   211  211  211  211  75  108  143  175  107   32    0
]) == (
   [1, 1, 1, 1, 2, 3, 4, 4, 5, 6, 7, 8],
   [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 11]
)



@test dtw(
   [0,4,7,9,10,9,7,4,0,0],
   [0,0,0,0,4,7,9,10,10,9,7,4,0]
) == (
   [1, 1, 1, 1, 2, 3, 4, 5, 5, 6, 7, 8, 9, 10],
   [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 13],
   0.0
)



@test linkseq([0,4,7,9,10,9,7,4,0,0], [0,0,0,0,4,7,9,10,10,9,7,4,0]) == (
   [[0.0 0.0]; [0.0 1.0]; [0.0 2.0]; [0.0 3.0];
   [1.0 4.0]; [2.0 5.0]; [3.0 6.0]; [4.0 7.0];
   [4.0 8.0]; [5.0 9.0]; [6.0 10.0]; [7.0 11.0];
   [8.0 12.0]; [9.0 12.0]]',
   [[0 0]; [0 0]; [0 0]; [0 0];
   [4 4]; [7 7]; [9 9]; [10 10];
   [10 10]; [9 9]; [7 7]; [4 4];
   [0 0]; [0 0]]'
)
