object Test extends Application {
println(" 1:" + List(1,2,3,4).indexOfSlice(List(0,1))) // -1
println(" 2:" + List(1,2,3,4).indexOfSlice(List(1,2))) // 0
println(" 3:" + List(1,2,3,4).indexOfSlice(List(2,3))) // 1
println(" 4:" + List(1,2,3,4).indexOfSlice(List(3,4))) // 2
println(" 5:" + List(1,2,3,4).indexOfSlice(List(4,5))) // -1
println(" 6:" + List(1,2,3,4).indexOfSlice(List(2,4))) // -1
println(" 7:" + List(1,2,3,4).indexOfSlice(List(4,3))) // -1
println(" 8:" + List(1,2,3,4).indexOfSlice(List(1,3))) // -1
println(" 9:" + List(1,2,3,4).indexOfSlice(List(1,3))) // -1
println("10:" + List(1,2,3,4).indexOfSlice(List(1,2,3,4))) // 0
println("11:" + List(1,2,3,4).indexOfSlice(List(4,3,2,1))) // -1
println("12:" + List(1,2,3,4).indexOfSlice(List(1,2,3,4,5))) // -1
println("13:" + List(1,2,3,4).indexOfSlice(List(5,4,3,2,1))) // -1
println("14:" + List(1,2,3,4).indexOfSlice(List())) // 0
println("15:" + List().indexOfSlice(List())) // 0
println("16:" + List().indexOfSlice(List(1,2,3,4))) // -1
// Do some testing with infinite sequences
def from(n: Int): Stream[Int] = Stream.cons(n, from(n + 1))
println("17:" + List(1,2,3,4).indexOfSlice(from(1))) // -1
println("18:" + from(1).indexOfSlice(List(4,5,6))) // 3
}