Files
secondo/Algebras/TrajectorySimilarity/TrajectorySimilarity.test
2026-01-23 17:03:45 +08:00

2732 lines
79 KiB
Plaintext

## This file is part of SECONDO.
##
## Copyright (C) 2015, University in Hagen, Department of Computer Science,
## Database Systems for New Applications.
##
## SECONDO is free software; you can redistribute it and/or modify
## it under the terms of the GNU General Public License as published by
## the Free Software Foundation; either version 2 of the License, or
## (at your option) any later version.
##
## SECONDO is distributed in the hope that it will be useful,
## but WITHOUT ANY WARRANTY; without even the implied warranty of
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
## GNU General Public License for more details.
##
## You should have received a copy of the GNU General Public License
## along with SECONDO; if not, write to the Free Software
## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
delete database tsa_test_db;
#setup pst_test \
TrajectorySimilarityAlgebra \
StandardAlgebra \
DateTimeAlgebra \
SpatialAlgebra \
TemporalAlgebra \
SymbolicTrajectoryAlgebra
### Create temporary database for tests.
create database tsa_test_db;
open database tsa_test_db;
###
### Test type constructor 'pointseq'.
###
### Create valid objects.
#testcase PointSeqUndefined
#yields (pointseq undefined)
query [const pointseq value undefined]
#testcase PointSeqEmpty
#yields (pointseq ())
query [const pointseq value ()]
#testcase PointSeq1Element
#yields (pointseq ((1.0 2.3)))
query [const pointseq value ((1.0 2.3))]
#testcase PointSeq2Elements
#yields (pointseq ((1.0 2.3) (-2.0 0.0)))
query [const pointseq value ((1.0 2.3) (-2.0 0.0))]
#testcase PointSeqLet
#yields ()
let ps = [const pointseq value ((1.0 2.3) (-2.0 0.0))]
#testcase PointSeqReadObject
#yields (pointseq ((1.0 2.3) (-2.0 0.0)))
## Works only after test case PointSeqLet.
query ps
### Create invalid objects.
#testcase PointSeqErrorAtom
#yields error
query [const pointseq value bad]
#testcase PointSeqErrorAtomElement
#yields error
query [const pointseq value (bad)]
#testcase PointSeqErrorEmptyElement
#yields error
query [const pointseq value (())]
#testcase PointSeqErrorElement1Value
#yields error
query [const pointseq value ((1.0))]
#testcase PointSeqErrorElement3Values
#yields error
query [const pointseq value ((1.0 2.0 3.0))]
#testcase PointSeqErrorElementIntValue1
#yields error
query [const pointseq value ((1 2.0))]
#testcase PointSeqErrorElementIntValue2
#yields error
query [const pointseq value ((1.0 2))]
#testcase PointSeqErrorElementNAN
#yields error
query [const pointseq value ((NAN 1.0))]
#testcase PointSeqErrorElementINF
#yields error
query [const pointseq value ((INF 1.0))]
###
### Test type constructor 'tpointseq'.
###
### Create valid objects.
#testcase TPointSeqUndefined
#yields (tpointseq undefined)
query [const tpointseq value undefined]
#testcase TPointSeqEmpty
#yields (tpointseq ())
query [const tpointseq value ()]
#testcase TPointSeq1Element
#yields (tpointseq (("2015-12-29-01:23:45" (1.0 2.3))))
query [const tpointseq value (("2015-12-29-01:23:45" (1.0 2.3)))]
#testcase TPointSeq2Elements
#yields (tpointseq ( \
("2015-12-29-01:23:45" (1.0 2.3)) ("2015-12-29-01:30:20" (-2.0 0.0))))
query [const tpointseq value (
("2015-12-29-01:23:45" (1.0 2.3)) ("2015-12-29-01:30:20" (-2.0 0.0)))]
#testcase TPointSeqLet
#yields ()
let tps = [const tpointseq value (("2015-12-29-01:23:45" (1.0 2.3)))]
#testcase TPointSeqReadObject
#yields (tpointseq (("2015-12-29-01:23:45" (1.0 2.3))))
## Works only after test case TPointSeqLet.
query tps
### Create invalid objects.
#testcase TPointSeqWrongOrder
#yields error
query [const tpointseq value (
("2015-12-29-01:23:45" (1.0 2.3)) ("2015-12-29-01:23:44" (-2.0 0.0)))]
#testcase TPointSeqErrorAtom
#yields error
query [const tpointseq value bad]
#testcase TPointSeqErrorAtomElement
#yields error
query [const tpointseq value (bad)]
#testcase TPointSeqErrorEmptyElement
#yields error
query [const tpointseq value (())]
#testcase TPointSeqErrorElement1Value
#yields error
query [const tpointseq value ((1))]
#testcase TPointSeqErrorElement3Values
#yields error
query [const tpointseq value ((1 2 3))]
#testcase PointSeqErrorInstantUndefined
#yields error
query [const tpointseq value ((undefined (1.0 2.0)))]
#testcase PointSeqErrorInstantInvalid
#yields error
query [const tpointseq value ((bad (1.0 2.0)))]
#testcase PointSeqErrorPointInvalid
#yields error
query [const tpointseq value (("2015-12-29-01:23:45" (bad 2.0)))]
###
### Test (general) operator 'isdefined'.
###
#testcase IsDefinedPointSeqUndefined
#yields (bool FALSE)
query isdefined([const pointseq value undefined])
#testcase IsDefinedPointSeq0
#yields (bool TRUE)
query isdefined([const pointseq value ()])
#testcase IsDefinedPointSeq1
#yields (bool TRUE)
query isdefined([const pointseq value ((1.0 2.3))])
#testcase IsDefinedTPointSeqUndefined
#yields (bool FALSE)
query isdefined([const tpointseq value undefined])
#testcase IsDefinedTPointSeq0
#yields (bool TRUE)
query isdefined([const tpointseq value ()])
#testcase IsDefinedTPointSeq1
#yields (bool TRUE)
query isdefined([const tpointseq value (("2015-12-29-01:23:45" (1.0 2.3)))])
###
### Test operator 'isempty'.
###
#testcase IsDefinedPointSeqUndefined
#yields (bool TRUE)
query isempty([const pointseq value undefined])
#testcase IsDefinedPointSeq0
#yields (bool TRUE)
query isempty([const pointseq value ()])
#testcase IsDefinedPointSeq1
#yields (bool FALSE)
query isempty([const pointseq value ((1.0 2.3))])
#testcase IsDefinedTPointSeqUndefined
#yields (bool TRUE)
query isempty([const tpointseq value undefined])
#testcase IsDefinedTPointSeq0
#yields (bool TRUE)
query isempty([const tpointseq value ()])
#testcase IsDefinedTPointSeq1
#yields (bool FALSE)
query isempty([const tpointseq value (("2015-12-29-01:23:45" (1.0 2.3)))])
###
### Test operator 'no_components'.
###
#testcase NoComponentsPointSeqUndefined
#yields (int 0)
query no_components([const pointseq value undefined])
#testcase NoComponentsPointSeq0
#yields (int 0)
query no_components([const pointseq value ()])
#testcase NoComponentsPointSeq1
#yields (int 1)
query no_components([const pointseq value ((1.0 2.3))])
#testcase NoComponentsPointSeq2
#yields (int 2)
query no_components([const pointseq value ((1.0 2.3) (-2.0 0.0))])
#testcase NoComponentsTPointSeqUndefined
#yields (int 0)
query no_components([const tpointseq value undefined])
#testcase NoComponentsTPointSeq0
#yields (int 0)
query no_components([const tpointseq value ()])
#testcase NoComponentsTPointSeq1
#yields (int 1)
query no_components([const tpointseq value (("2015-12-29-01:23:45" (1.0 2.3)))])
#testcase NoComponentsTPointSeq2
#yields (int 2)
query no_components([const tpointseq value (
("2015-12-29-01:23:45" (1.0 2.3)) ("2015-12-29-01:30:20" (-2.0 0.0)))])
###
### Test operator 'to_dline'.
###
#testcase ToDLinePointSeqUndefined
#yields (dline undefined)
## The list representation of the undefined dline is '()' and not 'undefined'.
query to_dline([const pointseq value undefined])
#testcase ToDLinePointSeq0
#yields (dline ())
query to_dline([const pointseq value ()])
#testcase ToDLinePointSeq1
#yields (dline ())
query to_dline([const pointseq value ((1.0 2.3))])
#testcase ToDLinePointSeq2
#yields (dline ((1.0 2.3 -2.0 0.0)))
query to_dline([const pointseq value ((1.0 2.3) (-2.0 0.0))])
#testcase ToDLinePointSeq3
#yields (dline ((1.0 2.3 -2.0 0.0) (-2.0 0.0 4.5 6.7)))
query to_dline([const pointseq value ((1.0 2.3) (-2.0 0.0) (4.5 6.7))])
#testcase ToDLineTPointSeqUndefined
#yields (dline undefined)
## The list representation of the undefined dline is '()' and not 'undefined'.
query to_dline([const tpointseq value undefined])
#testcase ToDLineTPointSeq0
#yields (dline ())
query to_dline([const tpointseq value ()])
#testcase ToDLineTPointSeq1
#yields (dline ())
query to_dline([const tpointseq value (("2015-12-29-01:23:45" (1.0 2.3)))])
#testcase ToDLineTPointSeq2
#yields (dline ((1.0 2.3 -2.0 0.0)))
query to_dline([const tpointseq value (
("2015-12-29-01:23:45" (1.0 2.3)) ("2015-12-29-01:30:20" (-2.0 0.0)))])
#testcase ToDLineTPointSeq3
#yields (dline ((1.0 2.3 -2.0 0.0) (-2.0 0.0 4.5 6.7)))
query to_dline([const tpointseq value (
("2015-12-29-01:23:45" (1.0 2.3))
("2015-12-29-01:30:20" (-2.0 0.0))
("2015-12-29-01:35:05" (4.5 6.7)))])
###
### Test operator 'to_pointseq'.
###
### to_pointseq : mpoint -> pointseq
#testcase ToPointSeqMPointUndefined
#yields (pointseq undefined)
query to_pointseq([const mpoint value undefined])
#testcase ToPointSeqMPoint0
#yields (pointseq ())
query to_pointseq([const mpoint value ()])
#testcase ToPointSeqMPoint1
#yields (pointseq ((1.0 2.3) (-2.0 0.0)))
query to_pointseq([const mpoint value (
(("2015-12-29-01:23:45" "2015-12-29-01:30:20" TRUE FALSE) (1.0 2.3 -2.0 0.0))
)])
#testcase ToPointSeqMPoint2
#yields (pointseq ((1.0 2.3) (-2.0 0.0) (4.5 6.7)))
query to_pointseq([const mpoint value (
(("2015-12-29-01:23:45" "2015-12-29-01:30:20" TRUE FALSE) (1.0 2.3 -2.0 0.0))
(("2015-12-29-01:30:20" "2015-12-29-01:33:05" TRUE FALSE) (-2.0 0.0 4.5 6.7))
)])
#testcase ToPointSeqMPointTemporalGap
#yields (pointseq undefined)
query to_pointseq([const mpoint value (
(("2015-12-29-01:23:45" "2015-12-29-01:30:20" TRUE FALSE) (1.0 2.3 -2.0 0.0))
(("2015-12-29-01:31:20" "2015-12-29-01:33:05" TRUE FALSE) (-2.0 0.0 4.5 6.7))
)])
#testcase ToPointSeqMPointSpatialGap
#yields (pointseq undefined)
query to_pointseq([const mpoint value (
(("2015-12-29-01:23:45" "2015-12-29-01:30:20" TRUE FALSE) (1.0 2.3 -2.0 0.0))
(("2015-12-29-01:30:20" "2015-12-29-01:33:05" TRUE FALSE) (-1.5 0.5 4.5 6.7))
)])
#testcase ToPointSeqMPointTeleport
#yields (pointseq undefined)
query to_pointseq([const mpoint value (
(("2015-12-29-01:23:45" "2015-12-29-01:30:20" TRUE FALSE) (1.0 2.3 -2.0 0.0))
(("2015-12-29-01:30:20" "2015-12-29-01:30:20" TRUE TRUE) (-2.0 0.0 4.5 6.7))
)])
#testcase ToPointSeqMPointInstantUnitWithNoMove
#yields (pointseq ((1.0 2.3) (-2.0 0.0)))
## Second unit contains just one instant and does not move in time. Therefore it
## shall be skipped.
query to_pointseq([const mpoint value (
(("2015-12-29-01:23:45" "2015-12-29-01:30:20" TRUE FALSE) (1.0 2.3 -2.0 0.0))
(("2015-12-29-01:30:20" "2015-12-29-01:30:20" TRUE TRUE) (-2.0 0.0 -2.0 0.0))
)])
### to_pointseq : mpoint x bool -> pointseq
#testcase ToPointSeqMPointBoolUndefined
#yields (pointseq undefined)
query to_pointseq([const mpoint value undefined], TRUE)
#testcase ToPointSeqMPointBool0
#yields (pointseq ())
query to_pointseq([const mpoint value ()], TRUE)
#testcase ToPointSeqMPointBool1
#yields (pointseq ((1.0 2.3) (-2.0 0.0)))
query to_pointseq([const mpoint value (
(("2015-12-29-01:23:45" "2015-12-29-01:30:20" TRUE FALSE) (1.0 2.3 -2.0 0.0))
)], TRUE)
#testcase ToPointSeqMPointBool2
#yields (pointseq ((1.0 2.3) (-2.0 0.0) (4.5 6.7)))
query to_pointseq([const mpoint value (
(("2015-12-29-01:23:45" "2015-12-29-01:30:20" TRUE FALSE) (1.0 2.3 -2.0 0.0))
(("2015-12-29-01:30:20" "2015-12-29-01:33:05" TRUE FALSE) (-2.0 0.0 4.5 6.7))
)], TRUE)
#testcase ToPointSeqMPointBoolTemporalGap
#yields (pointseq ((1.0 2.3) (-2.0 0.0) (-2.0 0.0) (4.5 6.7)))
query to_pointseq([const mpoint value (
(("2015-12-29-01:23:45" "2015-12-29-01:30:20" TRUE FALSE) (1.0 2.3 -2.0 0.0))
(("2015-12-29-01:31:20" "2015-12-29-01:33:05" TRUE FALSE) (-2.0 0.0 4.5 6.7))
)], TRUE)
#testcase ToPointSeqMPointBoolTemporalGap2
#yields (pointseq ((1.0 2.3) (-2.0 0.0) (-2.0 1.0) (4.5 6.7)))
query to_pointseq([const mpoint value (
(("2015-12-29-01:23:45" "2015-12-29-01:30:20" TRUE FALSE) (1.0 2.3 -2.0 0.0))
(("2015-12-29-01:31:20" "2015-12-29-01:33:05" TRUE FALSE) (-2.0 1.0 4.5 6.7))
)], TRUE)
#testcase ToPointSeqMPointBoolSpatialGap
#yields (pointseq undefined)
query to_pointseq([const mpoint value (
(("2015-12-29-01:23:45" "2015-12-29-01:30:20" TRUE FALSE) (1.0 2.3 -2.0 0.0))
(("2015-12-29-01:30:20" "2015-12-29-01:33:05" TRUE FALSE) (-1.5 0.5 4.5 6.7))
)], TRUE)
#testcase ToPointSeqMPointBoolTeleport
#yields (pointseq undefined)
query to_pointseq([const mpoint value (
(("2015-12-29-01:23:45" "2015-12-29-01:30:20" TRUE FALSE) (1.0 2.3 -2.0 0.0))
(("2015-12-29-01:30:20" "2015-12-29-01:30:20" TRUE TRUE) (-2.0 0.0 4.5 6.7))
)], TRUE)
#testcase ToPointSeqMPointBoolInstantUnitWithNoMove
#yields (pointseq ((1.0 2.3) (-2.0 0.0)))
## Second unit contains just one instant and does not move in time. Therefore it
## shall be skipped.
query to_pointseq([const mpoint value (
(("2015-12-29-01:23:45" "2015-12-29-01:30:20" TRUE FALSE) (1.0 2.3 -2.0 0.0))
(("2015-12-29-01:30:20" "2015-12-29-01:30:20" TRUE TRUE) (-2.0 0.0 -2.0 0.0))
)], TRUE)
### to_pointseq : tpointseq -> pointseq
#testcase ToPointSeqTPointSeqUndefined
#yields (pointseq undefined)
query to_pointseq([const tpointseq value undefined])
#testcase ToPointSeqTPointSeq0
#yields (pointseq ())
query to_pointseq([const tpointseq value ()])
#testcase ToPointSeqTPointSeq1
#yields (pointseq ((1.0 2.3)))
query to_pointseq([const tpointseq value (("2015-12-29-01:23:45" (1.0 2.3)))])
#testcase ToPointSeqTPointSeq2
#yields (pointseq ((1.0 2.3) (-2.0 0.0)))
query to_pointseq([const tpointseq value (
("2015-12-29-01:23:45" (1.0 2.3)) ("2015-12-29-01:30:20" (-2.0 0.0)))])
###
### Test operator 'to_tpointseq'.
###
### to_tpointseq : mpoint -> tpointseq
#testcase ToTPointSeqMPointUndefined
#yields (tpointseq undefined)
query to_tpointseq([const mpoint value undefined])
#testcase ToTPointSeqMPoint0
#yields (tpointseq ())
query to_tpointseq([const mpoint value ()])
#testcase ToTPointSeqMPoint1
#yields (tpointseq ( \
("2015-12-29-01:23:45" (1.0 2.3)) ("2015-12-29-01:30:20" (-2.0 0.0))))
query to_tpointseq([const mpoint value (
(("2015-12-29-01:23:45" "2015-12-29-01:30:20" TRUE FALSE) (1.0 2.3 -2.0 0.0))
)])
#testcase ToTPointSeqMPoint2
#yields (tpointseq ( \
("2015-12-29-01:23:45" (1.0 2.3)) \
("2015-12-29-01:30:20" (-2.0 0.0)) \
("2015-12-29-01:33:05" (4.5 6.7))))
query to_tpointseq([const mpoint value (
(("2015-12-29-01:23:45" "2015-12-29-01:30:20" TRUE FALSE) (1.0 2.3 -2.0 0.0))
(("2015-12-29-01:30:20" "2015-12-29-01:33:05" TRUE FALSE) (-2.0 0.0 4.5 6.7))
)])
#testcase ToTPointSeqMPointTemporalGap
#yields (tpointseq undefined)
query to_tpointseq([const mpoint value (
(("2015-12-29-01:23:45" "2015-12-29-01:30:20" TRUE FALSE) (1.0 2.3 -2.0 0.0))
(("2015-12-29-01:31:20" "2015-12-29-01:33:05" TRUE FALSE) (-2.0 0.0 4.5 6.7))
)])
#testcase ToTPointSeqMPointSpatialGap
#yields (tpointseq undefined)
query to_tpointseq([const mpoint value (
(("2015-12-29-01:23:45" "2015-12-29-01:30:20" TRUE FALSE) (1.0 2.3 -2.0 0.0))
(("2015-12-29-01:30:20" "2015-12-29-01:33:05" TRUE FALSE) (-1.5 0.5 4.5 6.7))
)])
#testcase ToTPointSeqMPointTeleport
#yields (tpointseq undefined)
query to_tpointseq([const mpoint value (
(("2015-12-29-01:23:45" "2015-12-29-01:30:20" TRUE FALSE) (1.0 2.3 -2.0 0.0))
(("2015-12-29-01:30:20" "2015-12-29-01:30:20" TRUE TRUE) (-2.0 0.0 4.5 6.7))
)])
#testcase ToTPointSeqMPointInstantUnitWithNoMove
#yields (tpointseq ( \
("2015-12-29-01:23:45" (1.0 2.3)) ("2015-12-29-01:30:20" (-2.0 0.0))))
## Second unit contains just one instant and does not move in time. Therefore it
## shall be skipped.
query to_tpointseq([const mpoint value (
(("2015-12-29-01:23:45" "2015-12-29-01:30:20" TRUE FALSE) (1.0 2.3 -2.0 0.0))
(("2015-12-29-01:30:20" "2015-12-29-01:30:20" TRUE TRUE) (-2.0 0.0 -2.0 0.0))
)])
### to_tpointseq : mpoint x bool -> tpointseq
#testcase ToTPointSeqMPointBoolUndefined
#yields (tpointseq undefined)
query to_tpointseq([const mpoint value undefined], TRUE)
#testcase ToTPointSeqMPointBool0
#yields (tpointseq ())
query to_tpointseq([const mpoint value ()], TRUE)
#testcase ToTPointSeqMPointBool1
#yields (tpointseq ( \
("2015-12-29-01:23:45" (1.0 2.3)) ("2015-12-29-01:30:20" (-2.0 0.0))))
query to_tpointseq([const mpoint value (
(("2015-12-29-01:23:45" "2015-12-29-01:30:20" TRUE FALSE) (1.0 2.3 -2.0 0.0))
)], TRUE)
#testcase ToTPointSeqMPointBool2
#yields (tpointseq ( \
("2015-12-29-01:23:45" (1.0 2.3)) \
("2015-12-29-01:30:20" (-2.0 0.0)) \
("2015-12-29-01:33:05" (4.5 6.7))))
query to_tpointseq([const mpoint value (
(("2015-12-29-01:23:45" "2015-12-29-01:30:20" TRUE FALSE) (1.0 2.3 -2.0 0.0))
(("2015-12-29-01:30:20" "2015-12-29-01:33:05" TRUE FALSE) (-2.0 0.0 4.5 6.7))
)], TRUE)
#testcase ToTPointSeqMPointBoolTemporalGap
#yields (tpointseq ( \
("2015-12-29-01:23:45" (1.0 2.3)) \
("2015-12-29-01:30:20" (-2.0 0.0)) \
("2015-12-29-01:31:20" (-2.0 0.0)) \
("2015-12-29-01:33:05" (4.5 6.7))))
query to_tpointseq([const mpoint value (
(("2015-12-29-01:23:45" "2015-12-29-01:30:20" TRUE FALSE) (1.0 2.3 -2.0 0.0))
(("2015-12-29-01:31:20" "2015-12-29-01:33:05" TRUE FALSE) (-2.0 0.0 4.5 6.7))
)], TRUE)
#testcase ToTPointSeqMPointBoolTemporalGap2
#yields (tpointseq ( \
("2015-12-29-01:23:45" (1.0 2.3)) \
("2015-12-29-01:30:20" (-2.0 0.0)) \
("2015-12-29-01:31:20" (-2.0 1.0)) \
("2015-12-29-01:33:05" (4.5 6.7))))
query to_tpointseq([const mpoint value (
(("2015-12-29-01:23:45" "2015-12-29-01:30:20" TRUE FALSE) (1.0 2.3 -2.0 0.0))
(("2015-12-29-01:31:20" "2015-12-29-01:33:05" TRUE FALSE) (-2.0 1.0 4.5 6.7))
)], TRUE)
#testcase ToTPointSeqMPointBoolSpatialGap
#yields (tpointseq undefined)
query to_tpointseq([const mpoint value (
(("2015-12-29-01:23:45" "2015-12-29-01:30:20" TRUE FALSE) (1.0 2.3 -2.0 0.0))
(("2015-12-29-01:30:20" "2015-12-29-01:33:05" TRUE FALSE) (-1.5 0.5 4.5 6.7))
)], TRUE)
#testcase ToTPointSeqMPointBoolTeleport
#yields (tpointseq undefined)
query to_tpointseq([const mpoint value (
(("2015-12-29-01:23:45" "2015-12-29-01:30:20" TRUE FALSE) (1.0 2.3 -2.0 0.0))
(("2015-12-29-01:30:20" "2015-12-29-01:30:20" TRUE TRUE) (-2.0 0.0 4.5 6.7))
)], TRUE)
#testcase ToTPointSeqMPointBoolInstantUnitWithNoMove
#yields (tpointseq ( \
("2015-12-29-01:23:45" (1.0 2.3)) ("2015-12-29-01:30:20" (-2.0 0.0))))
## Second unit contains just one instant and does not move in time. Therefore it
## shall be skipped.
query to_tpointseq([const mpoint value (
(("2015-12-29-01:23:45" "2015-12-29-01:30:20" TRUE FALSE) (1.0 2.3 -2.0 0.0))
(("2015-12-29-01:30:20" "2015-12-29-01:30:20" TRUE TRUE) (-2.0 0.0 -2.0 0.0))
)], TRUE)
###
### Test operator 'sample_to_pointseq'.
###
### sample_to_pointseq : tpointseq x duration [x bool [x bool]] -> pointseq
#testcase SampleToPointSeqTPointSeqUndefined
#yields (pointseq undefined)
query sample_to_pointseq(
[const tpointseq value undefined], [const duration value (0 1000)])
#testcase SampleToPointSeqTPointSeq0
#yields (pointseq ())
query sample_to_pointseq(
[const tpointseq value ()], [const duration value (0 1000)])
#testcase SampleToPointSeqTPointSeq1
#yields (pointseq ((0.0 0.0)))
query sample_to_pointseq([const tpointseq value (
("2015-12-29-01:23:45" (0.0 0.0)))],
[const duration value (0 1000)])
#testcase SampleToPointSeqTPointSeq2
#yields (pointseq ((0.0 0.0) (1.0 0.5) (2.0 1.0) (3.0 1.5)))
query sample_to_pointseq([const tpointseq value (
("2015-12-29-01:23:45" (0.0 0.0))
("2015-12-29-01:23:48" (3.0 1.5)))],
[const duration value (0 1000)])
#testcase SampleToPointSeqTPointSeq2NoEndPoint
#yields (pointseq ((0.0 0.0) (2.0 1.0)))
query sample_to_pointseq([const tpointseq value (
("2015-12-29-01:23:45" (0.0 0.0))
("2015-12-29-01:23:48" (3.0 1.5)))],
[const duration value (0 2000)])
#testcase SampleToPointSeqTPointSeq2KeepEndPoint
#yields (pointseq ((0.0 0.0) (2.0 1.0) (3.0 1.5)))
query sample_to_pointseq([const tpointseq value (
("2015-12-29-01:23:45" (0.0 0.0))
("2015-12-29-01:23:48" (3.0 1.5)))],
[const duration value (0 2000)],
[const bool value TRUE])
#testcase SampleToPointSeqTPointSeq3
#yields (pointseq ( \
(0.0 0.0) (1.0 0.5) (2.0 1.0) (3.0 1.5) (3.0 2.0) (3.0 2.5) (3.0 3.0)))
query sample_to_pointseq([const tpointseq value (
("2015-12-29-01:23:45" (0.0 0.0))
("2015-12-29-01:23:48" (3.0 1.5))
("2015-12-29-01:23:51" (3.0 3.0)))],
[const duration value (0 1000)])
#testcase SampleToPointSeqTPointSeq3NoMidPoint
#yields (pointseq ((0.0 0.0) (2.0 1.0) (3.0 2.0) (3.0 3.0)))
query sample_to_pointseq([const tpointseq value (
("2015-12-29-01:23:45" (0.0 0.0))
("2015-12-29-01:23:48" (3.0 1.5))
("2015-12-29-01:23:51" (3.0 3.0)))],
[const duration value (0 2000)])
#testcase SampleToPointSeqTPointSeq3ExactPath
#yields (pointseq ((0.0 0.0) (2.0 1.0) (3.0 1.5) (3.0 2.0) (3.0 3.0)))
query sample_to_pointseq([const tpointseq value (
("2015-12-29-01:23:45" (0.0 0.0))
("2015-12-29-01:23:48" (3.0 1.5))
("2015-12-29-01:23:51" (3.0 3.0)))],
[const duration value (0 2000)],
[const bool value TRUE],
[const bool value TRUE])
#testcase SampleToPointSeqTPointSeqDownSample
#yields (pointseq ((0.0 0.0)))
query sample_to_pointseq([const tpointseq value (
("2015-12-29-01:23:45" (0.0 0.0))
("2015-12-29-01:23:48" (3.0 1.5))
("2015-12-29-01:23:51" (3.0 3.0)))],
[const duration value (0 10000)])
#testcase SampleToPointSeqTPointSeqDownSampleKeepEndPoint
#yields (pointseq ((0.0 0.0) (3.0 3.0)))
query sample_to_pointseq([const tpointseq value (
("2015-12-29-01:23:45" (0.0 0.0))
("2015-12-29-01:23:48" (3.0 1.5))
("2015-12-29-01:23:51" (3.0 3.0)))],
[const duration value (0 10000)],
[const bool value TRUE])
###
### Test operator 'sample_to_tpointseq'.
###
### sample_to_tpointseq : tpointseq x duration [x bool [x bool]] -> tpointseq
#testcase SampleToTPointSeqTPointSeqUndefined
#yields (tpointseq undefined)
query sample_to_tpointseq(
[const tpointseq value undefined], [const duration value (0 1000)])
#testcase SampleToTPointSeqTPointSeq0
#yields (tpointseq ())
query sample_to_tpointseq(
[const tpointseq value ()], [const duration value (0 1000)])
#testcase SampleToTPointSeqTPointSeq1
#yields (tpointseq ( \
("2015-12-29-01:23:45" (0.0 0.0))))
query sample_to_tpointseq([const tpointseq value (
("2015-12-29-01:23:45" (0.0 0.0)))],
[const duration value (0 1000)])
#testcase SampleToTPointSeqTPointSeq2
#yields (tpointseq ( \
("2015-12-29-01:23:45" (0.0 0.0)) \
("2015-12-29-01:23:46" (1.0 0.5)) \
("2015-12-29-01:23:47" (2.0 1.0)) \
("2015-12-29-01:23:48" (3.0 1.5))))
query sample_to_tpointseq([const tpointseq value (
("2015-12-29-01:23:45" (0.0 0.0))
("2015-12-29-01:23:48" (3.0 1.5)))],
[const duration value (0 1000)])
#testcase SampleToTPointSeqTPointSeq2NoEndPoint
#yields (tpointseq ( \
("2015-12-29-01:23:45" (0.0 0.0)) \
("2015-12-29-01:23:47" (2.0 1.0))))
query sample_to_tpointseq([const tpointseq value (
("2015-12-29-01:23:45" (0.0 0.0))
("2015-12-29-01:23:48" (3.0 1.5)))],
[const duration value (0 2000)])
#testcase SampleToTPointSeqTPointSeq2KeepEndPoint
#yields (tpointseq ( \
("2015-12-29-01:23:45" (0.0 0.0)) \
("2015-12-29-01:23:47" (2.0 1.0)) \
("2015-12-29-01:23:48" (3.0 1.5))))
query sample_to_tpointseq([const tpointseq value (
("2015-12-29-01:23:45" (0.0 0.0))
("2015-12-29-01:23:48" (3.0 1.5)))],
[const duration value (0 2000)],
[const bool value TRUE])
#testcase SampleToTPointSeqTPointSeq3
#yields (tpointseq ( \
("2015-12-29-01:23:45" (0.0 0.0)) \
("2015-12-29-01:23:46" (1.0 0.5)) \
("2015-12-29-01:23:47" (2.0 1.0)) \
("2015-12-29-01:23:48" (3.0 1.5)) \
("2015-12-29-01:23:49" (3.0 2.0)) \
("2015-12-29-01:23:50" (3.0 2.5)) \
("2015-12-29-01:23:51" (3.0 3.0))))
query sample_to_tpointseq([const tpointseq value (
("2015-12-29-01:23:45" (0.0 0.0))
("2015-12-29-01:23:48" (3.0 1.5))
("2015-12-29-01:23:51" (3.0 3.0)))],
[const duration value (0 1000)])
#testcase SampleToTPointSeqTPointSeq3NoMidPoint
#yields (tpointseq ( \
("2015-12-29-01:23:45" (0.0 0.0)) \
("2015-12-29-01:23:47" (2.0 1.0)) \
("2015-12-29-01:23:49" (3.0 2.0)) \
("2015-12-29-01:23:51" (3.0 3.0))))
query sample_to_tpointseq([const tpointseq value (
("2015-12-29-01:23:45" (0.0 0.0))
("2015-12-29-01:23:48" (3.0 1.5))
("2015-12-29-01:23:51" (3.0 3.0)))],
[const duration value (0 2000)])
#testcase SampleToTPointSeqTPointSeq3ExactPath
#yields (tpointseq ( \
("2015-12-29-01:23:45" (0.0 0.0)) \
("2015-12-29-01:23:47" (2.0 1.0)) \
("2015-12-29-01:23:48" (3.0 1.5)) \
("2015-12-29-01:23:49" (3.0 2.0)) \
("2015-12-29-01:23:51" (3.0 3.0))))
query sample_to_tpointseq([const tpointseq value (
("2015-12-29-01:23:45" (0.0 0.0))
("2015-12-29-01:23:48" (3.0 1.5))
("2015-12-29-01:23:51" (3.0 3.0)))],
[const duration value (0 2000)],
[const bool value TRUE],
[const bool value TRUE])
#testcase SampleToTPointSeqTPointSeqDownSample
#yields (tpointseq ( \
("2015-12-29-01:23:45" (0.0 0.0))))
query sample_to_tpointseq([const tpointseq value (
("2015-12-29-01:23:45" (0.0 0.0))
("2015-12-29-01:23:48" (3.0 1.5))
("2015-12-29-01:23:51" (3.0 3.0)))],
[const duration value (0 10000)])
#testcase SampleToTPointSeqTPointSeqDownSampleKeepEndPoint
#yields (tpointseq ( \
("2015-12-29-01:23:45" (0.0 0.0)) \
("2015-12-29-01:23:51" (3.0 3.0))))
query sample_to_tpointseq([const tpointseq value (
("2015-12-29-01:23:45" (0.0 0.0))
("2015-12-29-01:23:48" (3.0 1.5))
("2015-12-29-01:23:51" (3.0 3.0)))],
[const duration value (0 10000)],
[const bool value TRUE])
###
### Test operator 'dist_origin'.
###
### Bad parameters
#testcase DistOriginParams0
#yields error
query dist_origin()
#testcase DistOriginParams1
#yields error
query dist_origin([const pointseq value ((1.0 2.3) (-2.0 0.0))])
#testcase DistOriginParams3
#yields error
query dist_origin(
[const pointseq value ((1.0 2.3) (-2.0 0.0))],
[const pointseq value ((1.0 2.3) (-2.0 0.0))],
[const pointseq value ((1.0 2.3) (-2.0 0.0))])
### dist_origin : pointseq x pointseq [x geoid] -> real
#tolerance_real %0.1
#testcase DistOriginPointSeq
#yields (real 1.86)
query dist_origin(
[const pointseq value ((1.0 2.3) (-2.0 0.0))],
[const pointseq value ((2.5 1.2) (0.5 3.2))])
#testcase DistOriginPointSeqSymmetry
#yields (real 1.86)
query dist_origin(
[const pointseq value ((2.5 1.2) (0.5 3.2))],
[const pointseq value ((1.0 2.3) (-2.0 0.0))])
#testcase DistOriginPointSeqEqual
#yields (real 0.0)
query dist_origin(
[const pointseq value ((2.5 1.2) (0.5 3.2))],
[const pointseq value ((2.5 1.2) (0.5 3.2))])
#testcase DistOriginPointSeqGeoid
#yields (real 206000.0)
query dist_origin(
[const pointseq value ((1.0 2.3) (-2.0 0.0))],
[const pointseq value ((2.5 1.2) (0.5 3.2))],
create_geoid("WGS1984"))
#testcase DistOriginPointSeqUndefined1
#yields (real undefined)
query dist_origin(
[const pointseq value undefined],
[const pointseq value ((2.5 1.2) (0.5 3.2))])
#testcase DistOriginPointSeqUndefined2
#yields (real undefined)
query dist_origin(
[const pointseq value ((1.0 2.3) (-2.0 0.0))],
[const pointseq value undefined])
#testcase DistOriginPointSeqEmpty1
#yields (real undefined)
query dist_origin(
[const pointseq value ()],
[const pointseq value ((2.5 1.2) (0.5 3.2))])
#testcase DistOriginPointSeqEmpty2
#yields (real undefined)
query dist_origin(
[const pointseq value ((1.0 2.3) (-2.0 0.0))],
[const pointseq value ()])
### dist_origin : tpointseq x tpointseq [x geoid] -> real
# (Performing only a basic test, since this is the same implementation as for
# pointseqs.)
#testcase DistOriginTPointSeq
#yields (real 1.86)
query dist_origin(
[const tpointseq value (
("2015-12-29-01:23:45" (1.0 2.3))
("2015-12-29-01:30:20" (-2.0 0.0)))],
[const tpointseq value (
("2015-12-29-01:21:16" (2.5 1.2))
("2015-12-29-01:32:28" (0.5 3.2)))])
###
### Test operator 'dist_destination'.
###
### Bad parameters
#testcase DistDestinationParams0
#yields error
query dist_destination()
#testcase DistDestinationParams1
#yields error
query dist_destination([const pointseq value ((1.0 2.3) (-2.0 0.0))])
#testcase DistDestinationParams3
#yields error
query dist_destination(
[const pointseq value ((1.0 2.3) (-2.0 0.0))],
[const pointseq value ((1.0 2.3) (-2.0 0.0))],
[const pointseq value ((1.0 2.3) (-2.0 0.0))])
### dist_destination : pointseq x pointseq [x geoid] -> real
#tolerance_real %0.1
#testcase DistDestinationPointSeq
#yields (real 4.06)
query dist_destination(
[const pointseq value ((1.0 2.3) (-2.0 0.0))],
[const pointseq value ((2.5 1.2) (0.5 3.2))])
#testcase DistDestinationPointSeqSymmetry
#yields (real 4.06)
query dist_destination(
[const pointseq value ((2.5 1.2) (0.5 3.2))],
[const pointseq value ((1.0 2.3) (-2.0 0.0))])
#testcase DistDestinationPointSeqEqual
#yields (real 0.0)
query dist_destination(
[const pointseq value ((2.5 1.2) (0.5 3.2))],
[const pointseq value ((2.5 1.2) (0.5 3.2))])
#testcase DistDestinationPointSeqGeoid
#yields (real 449500.0)
query dist_destination(
[const pointseq value ((1.0 2.3) (-2.0 0.0))],
[const pointseq value ((2.5 1.2) (0.5 3.2))],
create_geoid("WGS1984"))
#testcase DistDestinationPointSeqUndefined1
#yields (real undefined)
query dist_destination(
[const pointseq value undefined],
[const pointseq value ((2.5 1.2) (0.5 3.2))])
#testcase DistDestinationPointSeqUndefined2
#yields (real undefined)
query dist_destination(
[const pointseq value ((1.0 2.3) (-2.0 0.0))],
[const pointseq value undefined])
#testcase DistDestinationPointSeqEmpty1
#yields (real undefined)
query dist_destination(
[const pointseq value ()],
[const pointseq value ((2.5 1.2) (0.5 3.2))])
#testcase DistDestinationPointSeqEmpty2
#yields (real undefined)
query dist_destination(
[const pointseq value ((1.0 2.3) (-2.0 0.0))],
[const pointseq value ()])
### dist_destination : tpointseq x tpointseq [x geoid] -> real
# (Performing only a basic test, since this is the same implementation as for
# pointseqs.)
#testcase DistDestinationTPointSeq
#yields (real 4.06)
query dist_destination(
[const tpointseq value (
("2015-12-29-01:23:45" (1.0 2.3))
("2015-12-29-01:30:20" (-2.0 0.0)))],
[const tpointseq value (
("2015-12-29-01:21:16" (2.5 1.2))
("2015-12-29-01:32:28" (0.5 3.2)))])
###
### Test operator 'dist_origin_and_destination'.
###
### Bad parameters
#testcase DistOriginAndDestinationParams0
#yields error
query dist_origin_and_destination()
#testcase DistOriginAndDestinationParams1
#yields error
query dist_origin_and_destination([const pointseq value ((1.0 2.3) (-2.0 0.0))])
#testcase DistOriginAndDestinationParams3
#yields error
query dist_origin_and_destination(
[const pointseq value ((1.0 2.3) (-2.0 0.0))],
[const pointseq value ((1.0 2.3) (-2.0 0.0))],
[const pointseq value ((1.0 2.3) (-2.0 0.0))])
### dist_origin_and_destination : pointseq x pointseq [x geoid] -> real
#tolerance_real %0.1
#testcase DistOriginAndDestinationPointSeq
#yields (real 5.92)
query dist_origin_and_destination(
[const pointseq value ((1.0 2.3) (-2.0 0.0))],
[const pointseq value ((2.5 1.2) (0.5 3.2))])
#testcase DistOriginAndDestinationPointSeqSymmetry
#yields (real 5.92)
query dist_origin_and_destination(
[const pointseq value ((2.5 1.2) (0.5 3.2))],
[const pointseq value ((1.0 2.3) (-2.0 0.0))])
#testcase DistOriginAndDestinationPointSeqEqual
#yields (real 0.0)
query dist_origin_and_destination(
[const pointseq value ((2.5 1.2) (0.5 3.2))],
[const pointseq value ((2.5 1.2) (0.5 3.2))])
#testcase DistOriginAndDestinationPointSeqGeoid
#yields (real 655570.0)
query dist_origin_and_destination(
[const pointseq value ((1.0 2.3) (-2.0 0.0))],
[const pointseq value ((2.5 1.2) (0.5 3.2))],
create_geoid("WGS1984"))
#testcase DistOriginAndDestinationPointSeqUndefined1
#yields (real undefined)
query dist_origin_and_destination(
[const pointseq value undefined],
[const pointseq value ((2.5 1.2) (0.5 3.2))])
#testcase DistOriginAndDestinationPointSeqUndefined2
#yields (real undefined)
query dist_origin_and_destination(
[const pointseq value ((1.0 2.3) (-2.0 0.0))],
[const pointseq value undefined])
#testcase DistOriginAndDestinationPointSeqEmpty1
#yields (real undefined)
query dist_origin_and_destination(
[const pointseq value ()],
[const pointseq value ((2.5 1.2) (0.5 3.2))])
#testcase DistOriginAndDestinationPointSeqEmpty2
#yields (real undefined)
query dist_origin_and_destination(
[const pointseq value ((1.0 2.3) (-2.0 0.0))],
[const pointseq value ()])
### dist_origin_and_destination : tpointseq x tpointseq [x geoid] -> real
# (Performing only a basic test, since this is the same implementation as for
# pointseqs.)
#testcase DistOriginAndDestinationTPointSeq
#yields (real 5.92)
query dist_origin_and_destination(
[const tpointseq value (
("2015-12-29-01:23:45" (1.0 2.3))
("2015-12-29-01:30:20" (-2.0 0.0)))],
[const tpointseq value (
("2015-12-29-01:21:16" (2.5 1.2))
("2015-12-29-01:32:28" (0.5 3.2)))])
###
### Test operator 'dist_euclidean'.
###
### Bad parameters
#testcase DistEuclideanParams0
#yields error
query dist_euclidean()
#testcase DistEuclideanParams1
#yields error
query dist_euclidean([const pointseq value ((1.0 2.3) (-2.0 0.0))])
#testcase DistEuclideanParams3
#yields error
query dist_euclidean(
[const pointseq value ((1.0 2.3) (-2.0 0.0))],
[const pointseq value ((1.0 2.3) (-2.0 0.0))],
[const pointseq value ((1.0 2.3) (-2.0 0.0))])
### dist_euclidean : pointseq x pointseq [x geoid] -> real
#tolerance_real %0.1
#testcase DistEuclideanPointSeq
#yields (real 4.467)
query dist_euclidean(
[const pointseq value ((1.0 2.3) (-2.0 0.0))],
[const pointseq value ((2.5 1.2) (0.5 3.2))])
#testcase DistEuclideanPointSeqSymmetry
#yields (real 4.467)
query dist_euclidean(
[const pointseq value ((2.5 1.2) (0.5 3.2))],
[const pointseq value ((1.0 2.3) (-2.0 0.0))])
#testcase DistEuclideanPointSeqEqual
#yields (real 0.0)
query dist_euclidean(
[const pointseq value ((2.5 1.2) (0.5 3.2))],
[const pointseq value ((2.5 1.2) (0.5 3.2))])
#testcase DistEuclideanPointSeqGeoid
#yields (real 494480.0)
query dist_euclidean(
[const pointseq value ((1.0 2.3) (-2.0 0.0))],
[const pointseq value ((2.5 1.2) (0.5 3.2))],
create_geoid("WGS1984"))
#testcase DistEuclideanPointSeqDifferentLengths
#yields (real undefined)
query dist_euclidean(
[const pointseq value ((1.0 2.3) (-2.0 0.0) (-2.5 0.7))],
[const pointseq value ((2.5 1.2) (0.5 3.2))])
#testcase DistEuclideanPointSeqUndefined1
#yields (real undefined)
query dist_euclidean(
[const pointseq value undefined],
[const pointseq value ((2.5 1.2) (0.5 3.2))])
#testcase DistEuclideanPointSeqUndefined2
#yields (real undefined)
query dist_euclidean(
[const pointseq value ((1.0 2.3) (-2.0 0.0))],
[const pointseq value undefined])
#testcase DistEuclideanPointSeqEmpty1
#yields (real undefined)
query dist_euclidean(
[const pointseq value ()],
[const pointseq value ((2.5 1.2) (0.5 3.2))])
#testcase DistEuclideanPointSeqEmpty2
#yields (real undefined)
query dist_euclidean(
[const pointseq value ((1.0 2.3) (-2.0 0.0))],
[const pointseq value ()])
### dist_euclidean : tpointseq x tpointseq [x geoid] -> real
# (Performing only a basic test, since this is the same implementation as for
# pointseqs.)
#testcase DistEuclideanTPointSeq
#yields (real 4.467)
query dist_euclidean(
[const tpointseq value (
("2015-12-29-01:23:45" (1.0 2.3))
("2015-12-29-01:30:20" (-2.0 0.0)))],
[const tpointseq value (
("2015-12-29-01:21:16" (2.5 1.2))
("2015-12-29-01:32:28" (0.5 3.2)))])
###
### Test operator 'lcss'.
###
### Bad parameters
#testcase LCSSParams0
#yields error
query lcss()
#testcase LCSSParams1
#yields error
query lcss([const pointseq value ((1.0 2.3) (-2.0 0.0))])
#testcase LCSSParams2
#yields error
query lcss(
[const pointseq value ((1.0 2.3) (-2.0 0.0))],
[const pointseq value ((1.0 2.3) (-2.0 0.0))])
#testcase LCSSParams3
#yields error
query lcss(
[const pointseq value ((1.0 2.3) (-2.0 0.0))],
[const pointseq value ((1.0 2.3) (-2.0 0.0))],
[const real value 1.5],
[const real value 2.5])
### lcss : pointseq x pointseq x real [x int] -> int
#testcase LCSSPointSeq
#yields (int 1)
query lcss(
[const pointseq value ((1.0 2.3) (-2.0 0.0))],
[const pointseq value ((2.5 1.2) (0.5 3.2))],
[const real value 1.5])
#testcase LCSSPointSeqSymmetry
#yields (int 1)
query lcss(
[const pointseq value ((2.5 1.2) (0.5 3.2))],
[const pointseq value ((1.0 2.3) (-2.0 0.0))],
[const real value 1.5])
#testcase LCSSPointSeqVariant2
#yields (int 2)
query lcss(
[const pointseq value ((1.0 2.3) (-2.0 0.0))],
[const pointseq value ((2.5 1.2) (-0.6 1.2))],
[const real value 1.5])
#testcase LCSSPointSeqVariant3
#yields (int 1)
query lcss(
[const pointseq value ((1.0 2.3) (-2.0 0.0))],
[const pointseq value ((2.5 0.2) (-2.0 1.2))],
[const real value 1.5])
#testcase LCSSPointSeqVariant4
#yields (int 0)
query lcss(
[const pointseq value ((1.0 2.3) (-2.0 0.8))],
[const pointseq value ((2.5 -0.7) (2.6 3.8))],
[const real value 1.5])
#testcase LCSSPointSeqDelta0
#yields (int 0)
query lcss(
[const pointseq value ((1.0 2.3) (2.0 0.0))],
[const pointseq value ((2.5 0.2) (-2.0 3.2))],
[const real value 1.5], [const int value 0])
#testcase LCSSPointSeqDelta1
#yields (int 1)
query lcss(
[const pointseq value ((1.0 2.3) (2.0 0.0))],
[const pointseq value ((2.5 0.2) (-2.0 3.2))],
[const real value 1.5], [const int value 1])
#testcase LCSSPointSeqEqual
#yields (int 2)
query lcss(
[const pointseq value ((2.5 1.2) (0.5 3.2))],
[const pointseq value ((2.5 1.2) (0.5 3.2))],
[const real value 1.5])
#testcase LCSSPointSeqDifferentLengths
#yields (int 1)
query lcss(
[const pointseq value ((1.0 2.3) (-2.0 0.0) (-2.5 0.7))],
[const pointseq value ((2.5 1.2) (0.5 3.2))],
[const real value 1.5])
#testcase LCSSPointSeqUndefined1
#yields (int undefined)
query lcss(
[const pointseq value undefined],
[const pointseq value ((2.5 1.2) (0.5 3.2))],
[const real value 1.5])
#testcase LCSSPointSeqUndefined2
#yields (int undefined)
query lcss(
[const pointseq value ((1.0 2.3) (-2.0 0.0))],
[const pointseq value undefined],
[const real value 1.5])
#testcase LCSSPointSeqEmpty1
#yields (int 0)
query lcss(
[const pointseq value ()],
[const pointseq value ((2.5 1.2) (0.5 3.2))],
[const real value 1.5])
#testcase LCSSPointSeqEmpty2
#yields (int 0)
query lcss(
[const pointseq value ((1.0 2.3) (-2.0 0.0))],
[const pointseq value ()],
[const real value 1.5])
### lcss : tpointseq x tpointseq x real [x int] -> int
# (Performing only a basic test, since this is the same implementation as for
# pointseqs.)
#testcase LCSSTPointSeq
#yields (int 1)
query lcss(
[const tpointseq value (
("2015-12-29-01:23:45" (1.0 2.3))
("2015-12-29-01:30:20" (-2.0 0.0)))],
[const tpointseq value (
("2015-12-29-01:21:16" (2.5 1.2))
("2015-12-29-01:32:28" (0.5 3.2)))],
[const real value 1.5])
### lcss : mlabel x mlabel [x int] -> int
#testcase LCSSMLabel
#yields (int 2)
query lcss(
[const mlabel value (
(("2015-12-29-01:23:45" "2015-12-29-01:30:20" TRUE FALSE) 'Label_A')
(("2015-12-29-01:30:20" "2015-12-29-01:33:05" TRUE FALSE) 'Label_B')
(("2015-12-29-01:33:05" "2015-12-29-01:35:00" TRUE FALSE) 'Label_C'))],
[const mlabel value (
(("2015-12-29-01:23:45" "2015-12-29-01:30:20" TRUE FALSE) 'Label_A')
(("2015-12-29-01:30:20" "2015-12-29-01:33:05" TRUE FALSE) 'Label_C'))])
#testcase LCSSMLabelSymmetry
#yields (int 2)
query lcss(
[const mlabel value (
(("2015-12-29-01:23:45" "2015-12-29-01:30:20" TRUE FALSE) 'Label_A')
(("2015-12-29-01:30:20" "2015-12-29-01:33:05" TRUE FALSE) 'Label_C'))],
[const mlabel value (
(("2015-12-29-01:23:45" "2015-12-29-01:30:20" TRUE FALSE) 'Label_A')
(("2015-12-29-01:30:20" "2015-12-29-01:33:05" TRUE FALSE) 'Label_B')
(("2015-12-29-01:33:05" "2015-12-29-01:35:00" TRUE FALSE) 'Label_C'))])
#testcase LCSSMLabelVariant2
#yields (int 1)
query lcss(
[const mlabel value (
(("2015-12-29-01:23:45" "2015-12-29-01:30:20" TRUE FALSE) 'Label_A')
(("2015-12-29-01:30:20" "2015-12-29-01:33:05" TRUE FALSE) 'Label_B')
(("2015-12-29-01:33:05" "2015-12-29-01:35:00" TRUE FALSE) 'Label_C'))],
[const mlabel value (
(("2015-12-29-01:23:45" "2015-12-29-01:30:20" TRUE FALSE) 'Label_A')
(("2015-12-29-01:30:20" "2015-12-29-01:33:05" TRUE FALSE) 'Label_D'))])
#testcase LCSSMLabelVariant3
#yields (int 1)
query lcss(
[const mlabel value (
(("2015-12-29-01:23:45" "2015-12-29-01:30:20" TRUE FALSE) 'Label_A')
(("2015-12-29-01:30:20" "2015-12-29-01:33:05" TRUE FALSE) 'Label_B')
(("2015-12-29-01:33:05" "2015-12-29-01:35:00" TRUE FALSE) 'Label_C'))],
[const mlabel value (
(("2015-12-29-01:23:45" "2015-12-29-01:30:20" TRUE FALSE) 'Label_B')
(("2015-12-29-01:30:20" "2015-12-29-01:33:05" TRUE FALSE) 'Label_A'))])
#testcase LCSSMLabelVariant4
#yields (int 0)
query lcss(
[const mlabel value (
(("2015-12-29-01:23:45" "2015-12-29-01:30:20" TRUE FALSE) 'Label_A')
(("2015-12-29-01:30:20" "2015-12-29-01:33:05" TRUE FALSE) 'Label_B')
(("2015-12-29-01:33:05" "2015-12-29-01:35:00" TRUE FALSE) 'Label_C'))],
[const mlabel value (
(("2015-12-29-01:23:45" "2015-12-29-01:30:20" TRUE FALSE) 'Label_D')
(("2015-12-29-01:30:20" "2015-12-29-01:33:05" TRUE FALSE) 'Label_E'))])
#testcase LCSSMLabelDelta0
#yields (int 1)
query lcss(
[const mlabel value (
(("2015-12-29-01:23:45" "2015-12-29-01:30:20" TRUE FALSE) 'Label_A')
(("2015-12-29-01:30:20" "2015-12-29-01:33:05" TRUE FALSE) 'Label_B')
(("2015-12-29-01:33:05" "2015-12-29-01:35:00" TRUE FALSE) 'Label_C'))],
[const mlabel value (
(("2015-12-29-01:23:45" "2015-12-29-01:30:20" TRUE FALSE) 'Label_A')
(("2015-12-29-01:30:20" "2015-12-29-01:33:05" TRUE FALSE) 'Label_C'))],
0)
#testcase LCSSMLabelDelta1
#yields (int 2)
query lcss(
[const mlabel value (
(("2015-12-29-01:23:45" "2015-12-29-01:30:20" TRUE FALSE) 'Label_A')
(("2015-12-29-01:30:20" "2015-12-29-01:33:05" TRUE FALSE) 'Label_B')
(("2015-12-29-01:33:05" "2015-12-29-01:35:00" TRUE FALSE) 'Label_C'))],
[const mlabel value (
(("2015-12-29-01:23:45" "2015-12-29-01:30:20" TRUE FALSE) 'Label_A')
(("2015-12-29-01:30:20" "2015-12-29-01:33:05" TRUE FALSE) 'Label_C'))],
1)
#testcase LCSSMLabelEqual
#yields (int 3)
query lcss(
[const mlabel value (
(("2015-12-29-01:23:45" "2015-12-29-01:30:20" TRUE FALSE) 'Label_A')
(("2015-12-29-01:30:20" "2015-12-29-01:33:05" TRUE FALSE) 'Label_B')
(("2015-12-29-01:33:05" "2015-12-29-01:35:00" TRUE FALSE) 'Label_C'))],
[const mlabel value (
(("2015-12-29-01:23:45" "2015-12-29-01:30:20" TRUE FALSE) 'Label_A')
(("2015-12-29-01:30:20" "2015-12-29-01:33:05" TRUE FALSE) 'Label_B')
(("2015-12-29-01:33:05" "2015-12-29-01:35:00" TRUE FALSE) 'Label_C'))])
#testcase LCSSMLabelUndefined1
#yields (int undefined)
query lcss(
[const mlabel value undefined],
[const mlabel value (
(("2015-12-29-01:23:45" "2015-12-29-01:30:20" TRUE FALSE) 'Label_A')
(("2015-12-29-01:30:20" "2015-12-29-01:33:05" TRUE FALSE) 'Label_C'))])
#testcase LCSSMLabelUndefined2
#yields (int undefined)
query lcss(
[const mlabel value (
(("2015-12-29-01:23:45" "2015-12-29-01:30:20" TRUE FALSE) 'Label_A')
(("2015-12-29-01:30:20" "2015-12-29-01:33:05" TRUE FALSE) 'Label_B')
(("2015-12-29-01:33:05" "2015-12-29-01:35:00" TRUE FALSE) 'Label_C'))],
[const mlabel value undefined])
#testcase LCSSMLabelEmpty1
#yields (int 0)
query lcss(
[const mlabel value ()],
[const mlabel value (
(("2015-12-29-01:23:45" "2015-12-29-01:30:20" TRUE FALSE) 'Label_A')
(("2015-12-29-01:30:20" "2015-12-29-01:33:05" TRUE FALSE) 'Label_C'))])
#testcase LCSSMLabelEmpty2
#yields (int 0)
query lcss(
[const mlabel value (
(("2015-12-29-01:23:45" "2015-12-29-01:30:20" TRUE FALSE) 'Label_A')
(("2015-12-29-01:30:20" "2015-12-29-01:33:05" TRUE FALSE) 'Label_B')
(("2015-12-29-01:33:05" "2015-12-29-01:35:00" TRUE FALSE) 'Label_C'))],
[const mlabel value ()])
###
### Test operator 'rel_lcss'.
###
### Bad parameters
#testcase RelLCSSParams0
#yields error
query rel_lcss()
#testcase RelLCSSParams1
#yields error
query rel_lcss([const pointseq value ((1.0 2.3) (-2.0 0.0))])
#testcase RelLCSSParams2
#yields error
query rel_lcss(
[const pointseq value ((1.0 2.3) (-2.0 0.0))],
[const pointseq value ((1.0 2.3) (-2.0 0.0))])
#testcase RelLCSSParams3
#yields error
query rel_lcss(
[const pointseq value ((1.0 2.3) (-2.0 0.0))],
[const pointseq value ((1.0 2.3) (-2.0 0.0))],
[const real value 1.5],
[const real value 2.5])
### rel_lcss : pointseq x pointseq x real [x int] -> real
#testcase RelLCSSPointSeq
#yields (real 0.5)
query rel_lcss(
[const pointseq value ((1.0 2.3) (-2.0 0.0))],
[const pointseq value ((2.5 1.2) (0.5 3.2))],
[const real value 1.5])
#testcase RelLCSSPointSeqSymmetry
#yields (real 0.5)
query rel_lcss(
[const pointseq value ((2.5 1.2) (0.5 3.2))],
[const pointseq value ((1.0 2.3) (-2.0 0.0))],
[const real value 1.5])
#testcase RelLCSSPointSeqVariant2
#yields (real 1.0)
query rel_lcss(
[const pointseq value ((1.0 2.3) (-2.0 0.0))],
[const pointseq value ((2.5 1.2) (-0.6 1.2))],
[const real value 1.5])
#testcase RelLCSSPointSeqVariant3
#yields (real 0.5)
query rel_lcss(
[const pointseq value ((1.0 2.3) (-2.0 0.0))],
[const pointseq value ((2.5 0.2) (-2.0 1.2))],
[const real value 1.5])
#testcase RelLCSSPointSeqVariant4
#yields (real 0.0)
query rel_lcss(
[const pointseq value ((1.0 2.3) (-2.0 0.8))],
[const pointseq value ((2.5 -0.7) (2.6 3.8))],
[const real value 1.5])
#testcase RelLCSSPointSeqDelta0
#yields (real 0.0)
query rel_lcss(
[const pointseq value ((1.0 2.3) (2.0 0.0))],
[const pointseq value ((2.5 0.2) (-2.0 3.2))],
[const real value 1.5], [const int value 0])
#testcase RelLCSSPointSeqDelta1
#yields (real 0.5)
query rel_lcss(
[const pointseq value ((1.0 2.3) (2.0 0.0))],
[const pointseq value ((2.5 0.2) (-2.0 3.2))],
[const real value 1.5], [const int value 1])
#testcase RelLCSSPointSeqEqual
#yields (real 1.0)
query rel_lcss(
[const pointseq value ((2.5 1.2) (0.5 3.2))],
[const pointseq value ((2.5 1.2) (0.5 3.2))],
[const real value 1.5])
#testcase RelLCSSPointSeqDifferentLengths
#yields (real 0.5)
query rel_lcss(
[const pointseq value ((1.0 2.3) (-2.0 0.0) (-2.5 0.7))],
[const pointseq value ((2.5 1.2) (0.5 3.2))],
[const real value 1.5])
#testcase RelLCSSPointSeqUndefined1
#yields (real undefined)
query rel_lcss(
[const pointseq value undefined],
[const pointseq value ((2.5 1.2) (0.5 3.2))],
[const real value 1.5])
#testcase RelLCSSPointSeqUndefined2
#yields (real undefined)
query rel_lcss(
[const pointseq value ((1.0 2.3) (-2.0 0.0))],
[const pointseq value undefined],
[const real value 1.5])
#testcase RelLCSSPointSeqEmpty1
#yields (real undefined)
query rel_lcss(
[const pointseq value ()],
[const pointseq value ((2.5 1.2) (0.5 3.2))],
[const real value 1.5])
#testcase RelLCSSPointSeqEmpty2
#yields (real undefined)
query rel_lcss(
[const pointseq value ((1.0 2.3) (-2.0 0.0))],
[const pointseq value ()],
[const real value 1.5])
### rel_lcss : tpointseq x tpointseq x real [x int] -> real
# (Performing only a basic test, since this is the same implementation as for
# pointseqs.)
#testcase RelLCSSTPointSeq
#yields (real 0.5)
query rel_lcss(
[const tpointseq value (
("2015-12-29-01:23:45" (1.0 2.3))
("2015-12-29-01:30:20" (-2.0 0.0)))],
[const tpointseq value (
("2015-12-29-01:21:16" (2.5 1.2))
("2015-12-29-01:32:28" (0.5 3.2)))],
[const real value 1.5])
### rel_lcss : mlabel x mlabel [x int] -> real
# (Performing only basic tests, since this is the same implementation as for
# pointseqs in combination with the lcss implementation for mlabels.)
#testcase RelLCSSMLabel
#yields (real 1.0)
query rel_lcss(
[const mlabel value (
(("2015-12-29-01:23:45" "2015-12-29-01:30:20" TRUE FALSE) 'Label_A')
(("2015-12-29-01:30:20" "2015-12-29-01:33:05" TRUE FALSE) 'Label_B')
(("2015-12-29-01:33:05" "2015-12-29-01:35:00" TRUE FALSE) 'Label_C'))],
[const mlabel value (
(("2015-12-29-01:23:45" "2015-12-29-01:30:20" TRUE FALSE) 'Label_A')
(("2015-12-29-01:30:20" "2015-12-29-01:33:05" TRUE FALSE) 'Label_C'))])
#testcase RelLCSSMLabelDelta
#yields (real 0.5)
query rel_lcss(
[const mlabel value (
(("2015-12-29-01:23:45" "2015-12-29-01:30:20" TRUE FALSE) 'Label_A')
(("2015-12-29-01:30:20" "2015-12-29-01:33:05" TRUE FALSE) 'Label_B')
(("2015-12-29-01:33:05" "2015-12-29-01:35:00" TRUE FALSE) 'Label_C'))],
[const mlabel value (
(("2015-12-29-01:23:45" "2015-12-29-01:30:20" TRUE FALSE) 'Label_A')
(("2015-12-29-01:30:20" "2015-12-29-01:33:05" TRUE FALSE) 'Label_C'))],
0)
###
### Test operator 'dist_lcss'.
###
### Bad parameters
#testcase DistLCSSParams0
#yields error
query dist_lcss()
#testcase DistLCSSParams1
#yields error
query dist_lcss([const pointseq value ((1.0 2.3) (-2.0 0.0))])
#testcase DistLCSSParams2
#yields error
query dist_lcss(
[const pointseq value ((1.0 2.3) (-2.0 0.0))],
[const pointseq value ((1.0 2.3) (-2.0 0.0))])
#testcase DistLCSSParams3
#yields error
query dist_lcss(
[const pointseq value ((1.0 2.3) (-2.0 0.0))],
[const pointseq value ((1.0 2.3) (-2.0 0.0))],
[const real value 1.5],
[const real value 2.5])
### dist_lcss : pointseq x pointseq x real [x int] -> real
#testcase DistLCSSPointSeq
#yields (real 0.5)
query dist_lcss(
[const pointseq value ((1.0 2.3) (-2.0 0.0))],
[const pointseq value ((2.5 1.2) (0.5 3.2))],
[const real value 1.5])
#testcase DistLCSSPointSeqSymmetry
#yields (real 0.5)
query dist_lcss(
[const pointseq value ((2.5 1.2) (0.5 3.2))],
[const pointseq value ((1.0 2.3) (-2.0 0.0))],
[const real value 1.5])
#testcase DistLCSSPointSeqVariant2
#yields (real 0.0)
query dist_lcss(
[const pointseq value ((1.0 2.3) (-2.0 0.0))],
[const pointseq value ((2.5 1.2) (-0.6 1.2))],
[const real value 1.5])
#testcase DistLCSSPointSeqVariant3
#yields (real 0.5)
query dist_lcss(
[const pointseq value ((1.0 2.3) (-2.0 0.0))],
[const pointseq value ((2.5 0.2) (-2.0 1.2))],
[const real value 1.5])
#testcase DistLCSSPointSeqVariant4
#yields (real 1.0)
query dist_lcss(
[const pointseq value ((1.0 2.3) (-2.0 0.8))],
[const pointseq value ((2.5 -0.7) (2.6 3.8))],
[const real value 1.5])
#testcase DistLCSSPointSeqDelta0
#yields (real 1.0)
query dist_lcss(
[const pointseq value ((1.0 2.3) (2.0 0.0))],
[const pointseq value ((2.5 0.2) (-2.0 3.2))],
[const real value 1.5], [const int value 0])
#testcase DistLCSSPointSeqDelta1
#yields (real 0.5)
query dist_lcss(
[const pointseq value ((1.0 2.3) (2.0 0.0))],
[const pointseq value ((2.5 0.2) (-2.0 3.2))],
[const real value 1.5], [const int value 1])
#testcase DistLCSSPointSeqEqual
#yields (real 0.0)
query dist_lcss(
[const pointseq value ((2.5 1.2) (0.5 3.2))],
[const pointseq value ((2.5 1.2) (0.5 3.2))],
[const real value 1.5])
#testcase DistLCSSPointSeqDifferentLengths
#yields (real 0.5)
query dist_lcss(
[const pointseq value ((1.0 2.3) (-2.0 0.0) (-2.5 0.7))],
[const pointseq value ((2.5 1.2) (0.5 3.2))],
[const real value 1.5])
#testcase DistLCSSPointSeqUndefined1
#yields (real undefined)
query dist_lcss(
[const pointseq value undefined],
[const pointseq value ((2.5 1.2) (0.5 3.2))],
[const real value 1.5])
#testcase DistLCSSPointSeqUndefined2
#yields (real undefined)
query dist_lcss(
[const pointseq value ((1.0 2.3) (-2.0 0.0))],
[const pointseq value undefined],
[const real value 1.5])
#testcase DistLCSSPointSeqEmpty1
#yields (real undefined)
query dist_lcss(
[const pointseq value ()],
[const pointseq value ((2.5 1.2) (0.5 3.2))],
[const real value 1.5])
#testcase DistLCSSPointSeqEmpty2
#yields (real undefined)
query dist_lcss(
[const pointseq value ((1.0 2.3) (-2.0 0.0))],
[const pointseq value ()],
[const real value 1.5])
### dist_lcss : tpointseq x tpointseq x real [x int] -> real
# (Performing only a basic test, since this is the same implementation as for
# pointseqs.)
#testcase DistLCSSTPointSeq
#yields (real 0.5)
query dist_lcss(
[const tpointseq value (
("2015-12-29-01:23:45" (1.0 2.3))
("2015-12-29-01:30:20" (-2.0 0.0)))],
[const tpointseq value (
("2015-12-29-01:21:16" (2.5 1.2))
("2015-12-29-01:32:28" (0.5 3.2)))],
[const real value 1.5])
### dist_lcss : mlabel x mlabel [x int] -> real
# (Performing only basic tests, since this is the same implementation as for
# pointseqs in combination with the lcss implementation for mlabels.)
#testcase DistLCSSMLabel
#yields (real 0.0)
query dist_lcss(
[const mlabel value (
(("2015-12-29-01:23:45" "2015-12-29-01:30:20" TRUE FALSE) 'Label_A')
(("2015-12-29-01:30:20" "2015-12-29-01:33:05" TRUE FALSE) 'Label_B')
(("2015-12-29-01:33:05" "2015-12-29-01:35:00" TRUE FALSE) 'Label_C'))],
[const mlabel value (
(("2015-12-29-01:23:45" "2015-12-29-01:30:20" TRUE FALSE) 'Label_A')
(("2015-12-29-01:30:20" "2015-12-29-01:33:05" TRUE FALSE) 'Label_C'))])
#testcase DistLCSSMLabelDelta
#yields (real 0.5)
query dist_lcss(
[const mlabel value (
(("2015-12-29-01:23:45" "2015-12-29-01:30:20" TRUE FALSE) 'Label_A')
(("2015-12-29-01:30:20" "2015-12-29-01:33:05" TRUE FALSE) 'Label_B')
(("2015-12-29-01:33:05" "2015-12-29-01:35:00" TRUE FALSE) 'Label_C'))],
[const mlabel value (
(("2015-12-29-01:23:45" "2015-12-29-01:30:20" TRUE FALSE) 'Label_A')
(("2015-12-29-01:30:20" "2015-12-29-01:33:05" TRUE FALSE) 'Label_C'))],
0)
###
### Test operator 'dist_lip'.
###
### Bad parameters
#testcase DistLIPParams0
#yields error
query dist_lip()
#testcase DistLIPParams1
#yields error
query dist_lip([const pointseq value ((1.0 2.3) (-2.0 0.0))])
#testcase DistLIPParams3
#yields error
query dist_lip(
[const pointseq value ((1.0 2.3) (-2.0 0.0))],
[const pointseq value ((1.0 2.3) (-2.0 0.0))],
[const pointseq value ((1.0 2.3) (-2.0 0.0))])
### dist_lip : pointseq x pointseq -> real
#testcase DistLIPPointSeq
#yields (real 0.75)
query dist_lip(
[const pointseq value ((0.0 0.0) (1.0 0.0))],
[const pointseq value ((0.0 1.0) (1.0 0.5))])
#testcase DistLIPPointSeqSymmetry1
#yields (real 0.75)
query dist_lip(
[const pointseq value ((0.0 1.0) (1.0 0.5))],
[const pointseq value ((0.0 0.0) (1.0 0.0))])
#testcase DistLIPPointSeqSymmetry2
#yields (real 0.75)
query dist_lip(
[const pointseq value ((1.0 0.0) (0.0 0.0))],
[const pointseq value ((1.0 0.5) (0.0 1.0))])
#testcase DistLIPPointSeqVariant2
#yields (real 0.75)
query dist_lip(
[const pointseq value ((0.0 0.0) (0.2 0.0) (1.0 0.0))],
[const pointseq value ((0.0 1.0) (1.0 0.5))])
#testcase DistLIPPointSeqCross
#yields (real 0.25)
query dist_lip(
[const pointseq value ((0.0 0.0) (1.0 1.0))],
[const pointseq value ((0.0 1.0) (1.0 0.0))])
#testcase DistLIPPointSeqCrossExplicit
#yields (real 0.25)
query dist_lip(
[const pointseq value ((0.0 0.0) (0.5 0.5) (1.0 1.0))],
[const pointseq value ((0.0 1.0) (0.5 0.5) (1.0 0.0))])
#testcase DistLIPPointSeqNoSegments
#yields (real undefined)
query dist_lip(
[const pointseq value ((0.0 0.0) (1.0 0.0))],
[const pointseq value ((0.0 1.0))])
#testcase DistLIPPointSeqEqual
#yields (real 0.0)
query dist_lip(
[const pointseq value ((0.0 0.0) (1.0 0.0))],
[const pointseq value ((0.0 0.0) (1.0 0.0))])
#testcase DistLIPPointSeqFlat
#yields (real 0.0)
query dist_lip(
[const pointseq value ((0.0 0.0) (1.0 0.0) (2.0 0.0) (3.0 0.0))],
[const pointseq value ((0.0 0.0) (1.3 0.0))])
#testcase DistLIPPointSeqUndefined1
#yields (real undefined)
query dist_lip(
[const pointseq value undefined],
[const pointseq value ((2.5 1.2) (0.5 3.2))])
#testcase DistLIPPointSeqUndefined2
#yields (real undefined)
query dist_lip(
[const pointseq value ((1.0 2.3) (-2.0 0.0))],
[const pointseq value undefined])
#testcase DistLIPPointSeqEmpty1
#yields (real undefined)
query dist_lip(
[const pointseq value ()],
[const pointseq value ((2.5 1.2) (0.5 3.2))])
#testcase DistLIPPointSeqEmpty2
#yields (real undefined)
query dist_lip(
[const pointseq value ((1.0 2.3) (-2.0 0.0))],
[const pointseq value ()])
#testcase DistLIPPointSeqLoops
#yields (real 6.0)
query dist_lip(
[const pointseq value (
(0.0 1.0) (1.0 1.0) (2.0 2.0) (1.0 2.0) (2.0 1.0) (3.0 1.0))],
[const pointseq value (
(0.0 -1.0) (1.0 -1.0) (2.0 0.0) (1.0 0.0) (2.0 -1.0) (3.0 -1.0))])
#testcase DistLIPPointSeqLoops2
#yields (real 6.0)
query dist_lip(
[const pointseq value (
(0.0 1.0) (1.0 1.0) (2.0 2.0) (1.8 2.0) (1.6 2.0) (1.4 2.0)
(1.0 2.0) (2.0 1.0) (3.0 1.0))],
[const pointseq value (
(0.0 -1.0) (1.0 -1.0) (2.0 0.0) (1.8 0.0) (1.6 0.0) (1.4 0.0)
(1.0 0.0) (2.0 -1.0) (3.0 -1.0))])
### dist_lip : tpointseq x tpointseq -> real
# (Performing only a basic test, since this is the same implementation as for
# pointseqs.)
#testcase DistLIPTPointSeq
#yields (real 0.75)
query dist_lip(
[const tpointseq value (
("2015-12-29-01:23:45" (0.0 0.0))
("2015-12-29-01:30:20" (1.0 0.0)))],
[const tpointseq value (
("2015-12-29-01:21:16" (0.0 1.0))
("2015-12-29-01:32:28" (1.0 0.5)))])
###
### Test operator 'dist_stlip'.
###
### Bad parameters
#testcase DistSTLIPParams0
#yields error
query dist_stlip()
#testcase DistSTLIPParams1
#yields error
query dist_stlip(
[const tpointseq value (
("2015-12-29-01:23:45" (0.0 0.0)) ("2015-12-29-01:30:20" (1.0 0.0)))])
#testcase DistSTLIPParams2
#yields error
query dist_stlip(
[const tpointseq value (
("2015-12-29-01:23:45" (0.0 0.0)) ("2015-12-29-01:30:20" (1.0 0.0)))],
[const tpointseq value (
("2015-12-29-01:23:45" (0.0 1.0)) ("2015-12-29-01:30:20" (1.0 0.5)))])
#testcase DistSTLIPParams3
#yields error
query dist_stlip(
[const tpointseq value (
("2015-12-29-01:23:45" (0.0 0.0)) ("2015-12-29-01:30:20" (1.0 0.0)))],
[const tpointseq value (
("2015-12-29-01:23:45" (0.0 0.0)) ("2015-12-29-01:30:20" (1.0 0.0)))],
[const tpointseq value (
("2015-12-29-01:23:45" (0.0 1.0)) ("2015-12-29-01:30:20" (1.0 0.5)))])
### dist_stlip : tpointseq x tpointseq x real x duration -> real
#testcase DistSTLIPTPointSeq
#yields (real 0.75)
query dist_stlip(
[const tpointseq value (
("2015-12-29-01:23:45" (0.0 0.0))
("2015-12-29-01:30:20" (1.0 0.0)))],
[const tpointseq value (
("2015-12-29-01:23:45" (0.0 1.0))
("2015-12-29-01:30:20" (1.0 0.5)))],
[const real value 1.0],
[const duration value (0 0)])
#testcase DistSTLIPTPointSeqSymmetry
#yields (real 0.75)
query dist_stlip(
[const tpointseq value (
("2015-12-29-01:23:45" (0.0 1.0))
("2015-12-29-01:30:20" (1.0 0.5)))],
[const tpointseq value (
("2015-12-29-01:23:45" (0.0 0.0))
("2015-12-29-01:30:20" (1.0 0.0)))],
[const real value 1.0],
[const duration value (0 0)])
#testcase DistSTLIPTPointSeqVariant2
#yields (real 0.75)
query dist_stlip(
[const tpointseq value (
("2015-12-29-01:20:00" (0.0 0.0))
("2015-12-29-01:25:00" (0.5 0.0))
("2015-12-29-01:30:00" (1.0 0.0)))],
[const tpointseq value (
("2015-12-29-01:20:00" (0.0 1.0))
("2015-12-29-01:25:00" (0.5 0.75))
("2015-12-29-01:30:00" (1.0 0.5)))],
[const real value 1.0],
[const duration value (0 0)])
#testcase DistSTLIPTPointSeqVariant3
#yields (real 0.75)
query dist_stlip(
[const tpointseq value (
("2015-12-29-01:23:45" (0.0 0.0))
("2015-12-29-01:30:20" (1.0 0.0)))],
[const tpointseq value (
("2015-12-29-01:23:45" (0.0 1.0))
("2015-12-29-01:30:20" (1.0 0.5)))],
[const real value 1.0],
[const duration value (0 60000)])
#testcase DistSTLIPTPointSeqEqual
#yields (real 0.0)
query dist_stlip(
[const tpointseq value (
("2015-12-29-01:20:00" (0.0 0.0))
("2015-12-29-01:25:00" (0.5 0.0))
("2015-12-29-01:30:00" (1.0 0.0)))],
[const tpointseq value (
("2015-12-29-01:20:00" (0.0 0.0))
("2015-12-29-01:25:00" (0.5 0.0))
("2015-12-29-01:30:00" (1.0 0.0)))],
[const real value 1.0],
[const duration value (0 0)])
#testcase DistSTLIPTPointSeqSkewedInstants
#yields (real 0.75)
query dist_stlip(
[const tpointseq value (
("2015-12-29-01:20:00" (0.0 0.0))
("2015-12-29-01:22:00" (0.5 0.0))
("2015-12-29-01:30:00" (1.0 0.0)))],
[const tpointseq value (
("2015-12-29-01:20:00" (0.0 1.0))
("2015-12-29-01:28:00" (0.5 0.75))
("2015-12-29-01:30:00" (1.0 0.5)))],
[const real value 1.0],
[const duration value (0 0)])
#testcase DistSTLIPPointSeqCross
#yields (real 0.375)
query dist_stlip(
[const tpointseq value (
("2015-12-29-01:20:00" (0.0 0.0))
("2015-12-29-01:30:00" (1.0 1.0)))],
[const tpointseq value (
("2015-12-29-01:20:00" (0.0 1.0))
("2015-12-29-01:30:00" (1.0 0.0)))],
[const real value 1.0],
[const duration value (0 0)])
#testcase DistSTLIPPointSeqCrossExplicit
#yields (real 0.375)
query dist_stlip(
[const tpointseq value (
("2015-12-29-01:20:00" (0.0 0.0))
("2015-12-29-01:25:00" (0.5 0.5))
("2015-12-29-01:30:00" (1.0 1.0)))],
[const tpointseq value (
("2015-12-29-01:20:00" (0.0 1.0))
("2015-12-29-01:25:00" (0.5 0.5))
("2015-12-29-01:30:00" (1.0 0.0)))],
[const real value 1.0],
[const duration value (0 0)])
#testcase DistSTLIPPointSeqSkewedCross
#yields (real 0.425)
query dist_stlip(
[const tpointseq value (
("2015-12-29-01:20:00" (0.0 0.0))
("2015-12-29-01:23:00" (0.5 0.5))
("2015-12-29-01:30:00" (1.0 1.0)))],
[const tpointseq value (
("2015-12-29-01:20:00" (0.0 1.0))
("2015-12-29-01:27:00" (0.5 0.5))
("2015-12-29-01:30:00" (1.0 0.0)))],
[const real value 1.0],
[const duration value (0 0)])
#testcase DistSTLIPPointSeqSkewedCrossSymmetry
#yields (real 0.425)
query dist_stlip(
[const tpointseq value (
("2015-12-29-01:20:00" (0.0 1.0))
("2015-12-29-01:27:00" (0.5 0.5))
("2015-12-29-01:30:00" (1.0 0.0)))],
[const tpointseq value (
("2015-12-29-01:20:00" (0.0 0.0))
("2015-12-29-01:23:00" (0.5 0.5))
("2015-12-29-01:30:00" (1.0 1.0)))],
[const real value 1.0],
[const duration value (0 0)])
#testcase DistSTLIPPointSeqSkewedCrossSTFactor0
## (This yields the same result as the dist_lip operator.)
#yields (real 0.25)
query dist_stlip(
[const tpointseq value (
("2015-12-29-01:20:00" (0.0 0.0))
("2015-12-29-01:23:00" (0.5 0.5))
("2015-12-29-01:30:00" (1.0 1.0)))],
[const tpointseq value (
("2015-12-29-01:20:00" (0.0 1.0))
("2015-12-29-01:27:00" (0.5 0.5))
("2015-12-29-01:30:00" (1.0 0.0)))],
[const real value 0.0],
[const duration value (0 0)])
#testcase DistSTLIPPointSeqSkewedCrossDelta4Min
## (This cancels out the effects of the skewed intersection.)
#yields (real 0.375)
query dist_stlip(
[const tpointseq value (
("2015-12-29-01:20:00" (0.0 0.0))
("2015-12-29-01:23:00" (0.5 0.5))
("2015-12-29-01:30:00" (1.0 1.0)))],
[const tpointseq value (
("2015-12-29-01:20:00" (0.0 1.0))
("2015-12-29-01:27:00" (0.5 0.5))
("2015-12-29-01:30:00" (1.0 0.0)))],
[const real value 1.0],
[const duration value (0 240000)])
#testcase DistSTLIPPointSeqSkewedCrossDelta1Min
## (This lowers the effects of the skewed intersection.)
#yields (real 0.4125)
query dist_stlip(
[const tpointseq value (
("2015-12-29-01:20:00" (0.0 0.0))
("2015-12-29-01:23:00" (0.5 0.5))
("2015-12-29-01:30:00" (1.0 1.0)))],
[const tpointseq value (
("2015-12-29-01:20:00" (0.0 1.0))
("2015-12-29-01:27:00" (0.5 0.5))
("2015-12-29-01:30:00" (1.0 0.0)))],
[const real value 1.0],
[const duration value (0 60000)])
###
### Test operator 'dist_spstlip2'.
###
### Bad parameters
#testcase DistSPSTLIP2Params0
#yields error
query dist_spstlip2()
#testcase DistSPSTLIP2Params1
#yields error
query dist_spstlip2(
[const tpointseq value (
("2015-12-29-01:23:45" (0.0 0.0)) ("2015-12-29-01:30:20" (1.0 0.0)))])
#testcase DistSPSTLIP2Params2
#yields error
query dist_spstlip2(
[const tpointseq value (
("2015-12-29-01:23:45" (0.0 0.0)) ("2015-12-29-01:30:20" (1.0 0.0)))],
[const tpointseq value (
("2015-12-29-01:23:45" (0.0 1.0)) ("2015-12-29-01:30:20" (1.0 0.5)))])
#testcase DistSPSTLIP2Params3
#yields error
query dist_spstlip2(
[const tpointseq value (
("2015-12-29-01:23:45" (0.0 0.0)) ("2015-12-29-01:30:20" (1.0 0.0)))],
[const tpointseq value (
("2015-12-29-01:23:45" (0.0 0.0)) ("2015-12-29-01:30:20" (1.0 0.0)))],
[const tpointseq value (
("2015-12-29-01:23:45" (0.0 1.0)) ("2015-12-29-01:30:20" (1.0 0.5)))])
### dist_spstlip2 : tpointseq x tpointseq x real x duration x real -> real
#testcase DistSPSTLIP2TPointSeq
#yields (real 1.0)
query dist_spstlip2(
[const tpointseq value (
("2015-12-29-01:20:00" (0.0 0.0))
("2015-12-29-01:30:00" (1.0 0.0)))],
[const tpointseq value (
("2015-12-29-01:20:00" (0.0 1.0))
("2015-12-29-01:30:00" (1.0 1.0)))],
[const real value 0.0],
[const duration value (0 0)],
[const real value 1.0])
#testcase DistSPSTLIP2TPointSeqTimeShift
#yields (real 1.0)
query dist_spstlip2(
[const tpointseq value (
("2015-12-29-01:20:00" (0.0 0.0))
("2015-12-29-01:30:00" (1.0 0.0)))],
[const tpointseq value (
("2015-12-29-01:40:00" (0.0 1.0))
("2015-12-29-01:50:00" (1.0 1.0)))],
[const real value 0.0],
[const duration value (0 0)],
[const real value 1.0])
#testcase DistSPSTLIP2TPointSeqTimeStretch
#yields (real 1.333)
query dist_spstlip2(
[const tpointseq value (
("2015-12-29-01:15:00" (0.0 0.0))
("2015-12-29-01:35:00" (1.0 0.0)))],
[const tpointseq value (
("2015-12-29-01:20:00" (0.0 1.0))
("2015-12-29-01:30:00" (1.0 1.0)))],
[const real value 0.0],
[const duration value (0 0)],
[const real value 1.0])
#testcase DistSPSTLIP2TPointSeqTimeStretchSymmetry
#yields (real 1.333)
query dist_spstlip2(
[const tpointseq value (
("2015-12-29-01:20:00" (0.0 1.0))
("2015-12-29-01:30:00" (1.0 1.0)))],
[const tpointseq value (
("2015-12-29-01:15:00" (0.0 0.0))
("2015-12-29-01:35:00" (1.0 0.0)))],
[const real value 0.0],
[const duration value (0 0)],
[const real value 1.0])
#testcase DistSPSTLIP2TPointSeqVariant
#yields (real 0.792)
query dist_spstlip2(
[const tpointseq value (
("2015-12-29-01:23:45" (0.0 0.0))
("2015-12-29-01:30:20" (1.0 0.0)))],
[const tpointseq value (
("2015-12-29-02:23:45" (0.0 1.0))
("2015-12-29-02:30:20" (1.0 0.5)))],
[const real value 0.0],
[const duration value (0 0)],
[const real value 1.0])
#testcase DistSPSTLIP2TPointSeqVariant2
#yields (real 0.792)
query dist_spstlip2(
[const tpointseq value (
("2015-12-29-01:20:00" (0.0 0.0))
("2015-12-29-01:25:00" (0.5 0.0))
("2015-12-29-01:30:00" (1.0 0.0)))],
[const tpointseq value (
("2015-12-29-02:20:00" (0.0 1.0))
("2015-12-29-02:25:00" (0.5 0.75))
("2015-12-29-02:30:00" (1.0 0.5)))],
[const real value 0.0],
[const duration value (0 0)],
[const real value 1.0])
#testcase DistSPSTLIP2TPointSeqEqual
#yields (real 0.0)
query dist_spstlip2(
[const tpointseq value (
("2015-12-29-01:20:00" (0.0 0.0))
("2015-12-29-01:25:00" (0.5 0.0))
("2015-12-29-01:30:00" (1.0 0.0)))],
[const tpointseq value (
("2015-12-29-01:20:00" (0.0 0.0))
("2015-12-29-01:25:00" (0.5 0.0))
("2015-12-29-01:30:00" (1.0 0.0)))],
[const real value 0.0],
[const duration value (0 0)],
[const real value 1.0])
#testcase DistSPSTLIP2PointSeqCross
#yields (real 0.25)
query dist_spstlip2(
[const tpointseq value (
("2015-12-29-01:20:00" (0.0 0.0))
("2015-12-29-01:30:00" (1.0 1.0)))],
[const tpointseq value (
("2015-12-29-02:20:00" (0.0 1.0))
("2015-12-29-02:30:00" (1.0 0.0)))],
[const real value 0.0],
[const duration value (0 0)],
[const real value 1.0])
#testcase DistSPSTLIP2PointSeqCrossExplicit
#yields (real 0.25)
query dist_spstlip2(
[const tpointseq value (
("2015-12-29-01:20:00" (0.0 0.0))
("2015-12-29-01:25:00" (0.5 0.5))
("2015-12-29-01:30:00" (1.0 1.0)))],
[const tpointseq value (
("2015-12-29-02:20:00" (0.0 1.0))
("2015-12-29-02:25:00" (0.5 0.5))
("2015-12-29-02:30:00" (1.0 0.0)))],
[const real value 0.0],
[const duration value (0 0)],
[const real value 1.0])
#testcase DistSPSTLIP2PointSeqSkewedCross
#yields (real 0.35)
query dist_spstlip2(
[const tpointseq value (
("2015-12-29-01:20:00" (0.0 0.0))
("2015-12-29-01:23:00" (0.5 0.5))
("2015-12-29-01:30:00" (1.0 1.0)))],
[const tpointseq value (
("2015-12-29-02:20:00" (0.0 1.0))
("2015-12-29-02:27:00" (0.5 0.5))
("2015-12-29-02:30:00" (1.0 0.0)))],
[const real value 0.0],
[const duration value (0 0)],
[const real value 1.0])
#testcase DistSPSTLIP2PointSeqSkewedCrossSymmetry
#yields (real 0.35)
query dist_spstlip2(
[const tpointseq value (
("2015-12-29-02:20:00" (0.0 1.0))
("2015-12-29-02:27:00" (0.5 0.5))
("2015-12-29-02:30:00" (1.0 0.0)))],
[const tpointseq value (
("2015-12-29-01:20:00" (0.0 0.0))
("2015-12-29-01:23:00" (0.5 0.5))
("2015-12-29-01:30:00" (1.0 1.0)))],
[const real value 0.0],
[const duration value (0 0)],
[const real value 1.0])
###
### Test operator 'genlip'.
###
### Bad parameters
#testcase GenLIPPointSeqParamsInconsistent
#yields error
query genlip(
[const pointseq value ((0.0 0.0) (1.0 0.0))],
[const pointseq value ((0.0 1.0) (1.0 0.5))],
[const int value 3],
fun(seq1 : tpointseq, seq2 : tpointseq) dist_lip(seq1, seq2))
#testcase GenLIPPointSeqParamsFunctionWithBadParamType
#yields error
query genlip(
[const pointseq value ((0.0 0.0) (1.0 0.0))],
[const pointseq value ((0.0 1.0) (1.0 0.5))],
[const int value 3],
fun(seq1 : pointseq, seq2 : pointseq)
dist_stlip(seq1, seq2, 0.0, [const duration value (0 0)]))
### genlip : pointseq x pointseq x int x (pointseq x pointseq -> real) -> real
# (This repeats the dist_lip tests.)
#testcase GenLIPPointSeq
#yields (real 0.75)
query genlip(
[const pointseq value ((0.0 0.0) (1.0 0.0))],
[const pointseq value ((0.0 1.0) (1.0 0.5))],
[const int value 3],
fun(seq1 : pointseq, seq2 : pointseq) dist_lip(seq1, seq2))
#testcase GenLIPPointSeqSymmetry1
#yields (real 0.75)
query genlip(
[const pointseq value ((0.0 1.0) (1.0 0.5))],
[const pointseq value ((0.0 0.0) (1.0 0.0))],
[const int value 3],
fun(seq1 : pointseq, seq2 : pointseq) dist_lip(seq1, seq2))
#testcase GenLIPPointSeqSymmetry2
#yields (real 0.75)
query genlip(
[const pointseq value ((1.0 0.0) (0.0 0.0))],
[const pointseq value ((1.0 0.5) (0.0 1.0))],
[const int value 3],
fun(seq1 : pointseq, seq2 : pointseq) dist_lip(seq1, seq2))
#testcase GenLIPPointSeqVariant2
# (Note: GenLIP considers only the minimum length of the two sequences.)
#yields (real 0.55)
query genlip(
[const pointseq value ((0.0 0.0) (0.2 0.0) (1.0 0.0))],
[const pointseq value ((0.0 1.0) (1.0 0.5))],
[const int value 3],
fun(seq1 : pointseq, seq2 : pointseq) dist_lip(seq1, seq2))
#testcase GenLIPPointSeqCross
#yields (real 0.25)
query genlip(
[const pointseq value ((0.0 0.0) (1.0 1.0))],
[const pointseq value ((0.0 1.0) (1.0 0.0))],
[const int value 3],
fun(seq1 : pointseq, seq2 : pointseq) dist_lip(seq1, seq2))
#testcase GenLIPPointSeqCrossExplicit
#yields (real 0.25)
query genlip(
[const pointseq value ((0.0 0.0) (0.5 0.5) (1.0 1.0))],
[const pointseq value ((0.0 1.0) (0.5 0.5) (1.0 0.0))],
[const int value 3],
fun(seq1 : pointseq, seq2 : pointseq) dist_lip(seq1, seq2))
#testcase GenLIPPointSeqNoSegments
#yields (real undefined)
query genlip(
[const pointseq value ((0.0 0.0) (1.0 0.0))],
[const pointseq value ((0.0 1.0))],
[const int value 3],
fun(seq1 : pointseq, seq2 : pointseq) dist_lip(seq1, seq2))
#testcase GenLIPPointSeqEqual
#yields (real 0.0)
query genlip(
[const pointseq value ((0.0 0.0) (1.0 0.0))],
[const pointseq value ((0.0 0.0) (1.0 0.0))],
[const int value 3],
fun(seq1 : pointseq, seq2 : pointseq) dist_lip(seq1, seq2))
#testcase GenLIPPointSeqFlat
#yields (real 0.0)
query genlip(
[const pointseq value ((0.0 0.0) (1.0 0.0) (2.0 0.0) (3.0 0.0))],
[const pointseq value ((0.0 0.0) (1.3 0.0))],
[const int value 3],
fun(seq1 : pointseq, seq2 : pointseq) dist_lip(seq1, seq2))
#testcase GenLIPPointSeqUndefined1
#yields (real undefined)
query genlip(
[const pointseq value undefined],
[const pointseq value ((2.5 1.2) (0.5 3.2))],
[const int value 3],
fun(seq1 : pointseq, seq2 : pointseq) dist_lip(seq1, seq2))
#testcase GenLIPPointSeqUndefined2
#yields (real undefined)
query genlip(
[const pointseq value ((1.0 2.3) (-2.0 0.0))],
[const pointseq value undefined],
[const int value 3],
fun(seq1 : pointseq, seq2 : pointseq) dist_lip(seq1, seq2))
#testcase GenLIPPointSeqEmpty1
#yields (real undefined)
query genlip(
[const pointseq value ()],
[const pointseq value ((2.5 1.2) (0.5 3.2))],
[const int value 3],
fun(seq1 : pointseq, seq2 : pointseq) dist_lip(seq1, seq2))
#testcase GenLIPPointSeqEmpty2
#yields (real undefined)
query genlip(
[const pointseq value ((1.0 2.3) (-2.0 0.0))],
[const pointseq value ()],
[const int value 3],
fun(seq1 : pointseq, seq2 : pointseq) dist_lip(seq1, seq2))
#testcase GenLIPPointSeqLoops
#yields (real 6.0)
query genlip(
[const pointseq value (
(0.0 1.0) (1.0 1.0) (2.0 2.0) (1.0 2.0) (2.0 1.0) (3.0 1.0))],
[const pointseq value (
(0.0 -1.0) (1.0 -1.0) (2.0 0.0) (1.0 0.0) (2.0 -1.0) (3.0 -1.0))],
[const int value 3],
fun(seq1 : pointseq, seq2 : pointseq) dist_lip(seq1, seq2))
#testcase GenLIPPointSeqLoops2
# (The GenLIP algorithm detects such long loop.)
#yields (real 7.36)
query genlip(
[const pointseq value (
(0.0 1.0) (1.0 1.0) (2.0 2.0) (1.8 2.0) (1.6 2.0) (1.4 2.0)
(1.0 2.0) (2.0 1.0) (3.0 1.0))],
[const pointseq value (
(0.0 -1.0) (1.0 -1.0) (2.0 0.0) (1.8 0.0) (1.6 0.0) (1.4 0.0)
(1.0 0.0) (2.0 -1.0) (3.0 -1.0))],
[const int value 2],
fun(seq1 : pointseq, seq2 : pointseq) dist_lip(seq1, seq2))
### genlip : tpointseq x tpointseq x int x (tpointseq x tpointseq -> real)
### -> real
# (Performing only few basic tests, since this is the same implementation as for
# pointseqs.)
#testcase GenLIPTPointSeq
#yields (real 0.75)
query genlip(
[const tpointseq value (
("2015-12-29-01:23:45" (0.0 0.0))
("2015-12-29-01:30:20" (1.0 0.0)))],
[const tpointseq value (
("2015-12-29-01:21:16" (0.0 1.0))
("2015-12-29-01:32:28" (1.0 0.5)))],
[const int value 3],
fun(seq1 : tpointseq, seq2 : tpointseq) dist_lip(seq1, seq2))
#testcase GenLIPTPointSeq2
#yields (real 1.0)
query genlip(
[const tpointseq value (
("2015-12-29-01:20:00" (0.0 0.0))
("2015-12-29-01:30:00" (1.0 0.0)))],
[const tpointseq value (
("2015-12-29-01:20:00" (0.0 1.0))
("2015-12-29-01:30:00" (1.0 1.0)))],
[const int value 3],
fun(seq1 : tpointseq, seq2 : tpointseq)
dist_spstlip2(seq1, seq2,
[const real value 0.0],
[const duration value (0 0)],
[const real value 1.0]))
###
### Test operator 'genlip2'.
###
### Bad parameters
#testcase GenLIP2PointSeqParamsInconsistent
#yields error
query genlip2(
[const pointseq value ((0.0 0.0) (1.0 0.0))],
[const pointseq value ((0.0 1.0) (1.0 0.5))],
[const int value 3],
fun(seq1 : tpointseq, seq2 : tpointseq) dist_lip(seq1, seq2))
#testcase GenLIP2PointSeqParamsFunctionWithBadParamType
#yields error
query genlip2(
[const pointseq value ((0.0 0.0) (1.0 0.0))],
[const pointseq value ((0.0 1.0) (1.0 0.5))],
[const int value 3],
fun(seq1 : pointseq, seq2 : pointseq)
dist_stlip(seq1, seq2, 0.0, [const duration value (0 0)]))
### genlip2 : pointseq x pointseq x int x (pointseq x pointseq -> real) -> real
# (This repeats the dist_lip tests.)
#testcase GenLIP2PointSeq
#yields (real 0.75)
query genlip2(
[const pointseq value ((0.0 0.0) (1.0 0.0))],
[const pointseq value ((0.0 1.0) (1.0 0.5))],
[const int value 3],
fun(seq1 : pointseq, seq2 : pointseq) dist_lip(seq1, seq2))
#testcase GenLIP2PointSeqSymmetry1
#yields (real 0.75)
query genlip2(
[const pointseq value ((0.0 1.0) (1.0 0.5))],
[const pointseq value ((0.0 0.0) (1.0 0.0))],
[const int value 3],
fun(seq1 : pointseq, seq2 : pointseq) dist_lip(seq1, seq2))
#testcase GenLIP2PointSeqSymmetry2
#yields (real 0.75)
query genlip2(
[const pointseq value ((1.0 0.0) (0.0 0.0))],
[const pointseq value ((1.0 0.5) (0.0 1.0))],
[const int value 3],
fun(seq1 : pointseq, seq2 : pointseq) dist_lip(seq1, seq2))
#testcase GenLIP2PointSeqVariant2
# (Note: In contrast to GenLIP, GenLIP2 also considers additional segments of
# the longer sequence.)
#yields (real 0.75)
query genlip2(
[const pointseq value ((0.0 0.0) (0.2 0.0) (1.0 0.0))],
[const pointseq value ((0.0 1.0) (1.0 0.5))],
[const int value 3],
fun(seq1 : pointseq, seq2 : pointseq) dist_lip(seq1, seq2))
#testcase GenLIP2PointSeqCross
#yields (real 0.25)
query genlip2(
[const pointseq value ((0.0 0.0) (1.0 1.0))],
[const pointseq value ((0.0 1.0) (1.0 0.0))],
[const int value 3],
fun(seq1 : pointseq, seq2 : pointseq) dist_lip(seq1, seq2))
#testcase GenLIP2PointSeqCrossExplicit
#yields (real 0.25)
query genlip2(
[const pointseq value ((0.0 0.0) (0.5 0.5) (1.0 1.0))],
[const pointseq value ((0.0 1.0) (0.5 0.5) (1.0 0.0))],
[const int value 3],
fun(seq1 : pointseq, seq2 : pointseq) dist_lip(seq1, seq2))
#testcase GenLIP2PointSeqNoSegments
#yields (real undefined)
query genlip2(
[const pointseq value ((0.0 0.0) (1.0 0.0))],
[const pointseq value ((0.0 1.0))],
[const int value 3],
fun(seq1 : pointseq, seq2 : pointseq) dist_lip(seq1, seq2))
#testcase GenLIP2PointSeqEqual
#yields (real 0.0)
query genlip2(
[const pointseq value ((0.0 0.0) (1.0 0.0))],
[const pointseq value ((0.0 0.0) (1.0 0.0))],
[const int value 3],
fun(seq1 : pointseq, seq2 : pointseq) dist_lip(seq1, seq2))
#testcase GenLIP2PointSeqFlat
#yields (real 0.0)
query genlip2(
[const pointseq value ((0.0 0.0) (1.0 0.0) (2.0 0.0) (3.0 0.0))],
[const pointseq value ((0.0 0.0) (1.3 0.0))],
[const int value 3],
fun(seq1 : pointseq, seq2 : pointseq) dist_lip(seq1, seq2))
#testcase GenLIP2PointSeqUndefined1
#yields (real undefined)
query genlip2(
[const pointseq value undefined],
[const pointseq value ((2.5 1.2) (0.5 3.2))],
[const int value 3],
fun(seq1 : pointseq, seq2 : pointseq) dist_lip(seq1, seq2))
#testcase GenLIP2PointSeqUndefined2
#yields (real undefined)
query genlip2(
[const pointseq value ((1.0 2.3) (-2.0 0.0))],
[const pointseq value undefined],
[const int value 3],
fun(seq1 : pointseq, seq2 : pointseq) dist_lip(seq1, seq2))
#testcase GenLIP2PointSeqEmpty1
#yields (real undefined)
query genlip2(
[const pointseq value ()],
[const pointseq value ((2.5 1.2) (0.5 3.2))],
[const int value 3],
fun(seq1 : pointseq, seq2 : pointseq) dist_lip(seq1, seq2))
#testcase GenLIP2PointSeqEmpty2
#yields (real undefined)
query genlip2(
[const pointseq value ((1.0 2.3) (-2.0 0.0))],
[const pointseq value ()],
[const int value 3],
fun(seq1 : pointseq, seq2 : pointseq) dist_lip(seq1, seq2))
#testcase GenLIP2PointSeqLoops
#yields (real 6.0)
query genlip2(
[const pointseq value (
(0.0 1.0) (1.0 1.0) (2.0 2.0) (1.0 2.0) (2.0 1.0) (3.0 1.0))],
[const pointseq value (
(0.0 -1.0) (1.0 -1.0) (2.0 0.0) (1.0 0.0) (2.0 -1.0) (3.0 -1.0))],
[const int value 3],
fun(seq1 : pointseq, seq2 : pointseq) dist_lip(seq1, seq2))
#testcase GenLIP2PointSeqLoops2
# (The GenLIP algorithm detects such long loop.)
#yields (real 7.36)
query genlip2(
[const pointseq value (
(0.0 1.0) (1.0 1.0) (2.0 2.0) (1.8 2.0) (1.6 2.0) (1.4 2.0)
(1.0 2.0) (2.0 1.0) (3.0 1.0))],
[const pointseq value (
(0.0 -1.0) (1.0 -1.0) (2.0 0.0) (1.8 0.0) (1.6 0.0) (1.4 0.0)
(1.0 0.0) (2.0 -1.0) (3.0 -1.0))],
[const int value 2],
fun(seq1 : pointseq, seq2 : pointseq) dist_lip(seq1, seq2))
### genlip2 : tpointseq x tpointseq x int x (tpointseq x tpointseq -> real)
### -> real
# (Performing only few basic tests, since this is the same implementation as for
# pointseqs.)
#testcase GenLIP2TPointSeq
#yields (real 0.75)
query genlip2(
[const tpointseq value (
("2015-12-29-01:23:45" (0.0 0.0))
("2015-12-29-01:30:20" (1.0 0.0)))],
[const tpointseq value (
("2015-12-29-01:21:16" (0.0 1.0))
("2015-12-29-01:32:28" (1.0 0.5)))],
[const int value 3],
fun(seq1 : tpointseq, seq2 : tpointseq) dist_lip(seq1, seq2))
#testcase GenLIP2TPointSeq2
#yields (real 1.0)
query genlip2(
[const tpointseq value (
("2015-12-29-01:20:00" (0.0 0.0))
("2015-12-29-01:30:00" (1.0 0.0)))],
[const tpointseq value (
("2015-12-29-01:20:00" (0.0 1.0))
("2015-12-29-01:30:00" (1.0 1.0)))],
[const int value 3],
fun(seq1 : tpointseq, seq2 : tpointseq)
dist_spstlip2(seq1, seq2,
[const real value 0.0],
[const duration value (0 0)],
[const real value 1.0]))
#teardown
close database;
delete database tsa_test_db;