linetrack.at 4.02 KB
# This file is part of GNU Mailutils. -*- Autotest -*-
# Copyright (C) 2017 Free Software Foundation, Inc.
#
# GNU Mailutils 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 3, or (at
# your option) any later version.
#
# GNU Mailutils 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 GNU Mailutils.  If not, see <http://www.gnu.org/licenses/>.

AT_BANNER([Line tracker])

m4_pushdef([TRACKTEST],[
AT_SETUP([$1])
AT_KEYWORDS([tracker linetrack $2])
AT_CHECK([linetrack liber $3 <<EOT
$4[]EOT
],
[0],
[$5],
[$6])
AT_CLEANUP
])

TRACKTEST([normal operation],[],[7],
[
agnosco
veteris\n
vestigia
flamme
\n
\n
Publius
Ovidius
Naso
],
[liber:1.1-7: agnosco
liber:1.8-14: veteris\n
liber:2.1-8: vestigia
liber:2.9-14: flamme
liber:2.14: \n
liber:3: \n
liber:4.1-7: Publius
liber:4.8-14: Ovidius
liber:4.15-18: Naso
])

TRACKTEST([retreat],[],[3],
[
agnosco
#retreat 4
veteris
vestigia\n
flamme
#retreat 8
Publius
],
[liber:1.1-7: agnosco
liber:1.4-10: veteris
liber:1.11-18: vestigia\n
liber:2.1-6: flamme
liber:1.18-24: Publius
])

TRACKTEST([retreat over several lines],[],[4],
[
one\n
two\n
three
#retreat 11
four
],
[liber:1.1-3: one\n
liber:2.1-3: two\n
liber:3.1-5: three
liber:1.3-6: four
])

TRACKTEST([retreat to the beginning],[],[4],
[one\n
two\n
#retreat 8
three
],
[liber:1.1-3: one\n
liber:2.1-3: two\n
liber:1.1-5: three
])

TRACKTEST([too big retreat],[],[2],
[one\n
two\n
#retreat 10
three
],
[liber:1.1-3: one\n
liber:2.1-3: two\n
liber:3.1-5: three
],
[linetrack: retreat count too big
])

TRACKTEST([origin 1],[],[10],
[one\n
two\n
three\n
#origin B 5 0
four\n
five\n
#origin C 2 0
six\n
seven\n
eight\n
#stat
],
[liber:1.1-3: one\n
liber:2.1-3: two\n
liber:3.1-5: three\n
B:5.1-4: four\n
B:6.1-4: five\n
C:2.1-3: six\n
C:3.1-5: seven\n
C:4.1-5: eight\n
n_files=3
n_lines=9
n_chars=40
])

TRACKTEST([origin 2],[],[8],
[one\n
two\n
three\n
#origin B 5 0
four\n
five\n
#origin C 2 0
six\n
seven\n
eight\n
#stat
],
[liber:1.1-3: one\n
liber:2.1-3: two\n
liber:3.1-5: three\n
B:5.1-4: four\n
B:6.1-4: five\n
C:2.1-3: six\n
C:3.1-5: seven\n
C:4.1-5: eight\n
n_files=3
n_lines=8
n_chars=36
])

TRACKTEST([origin 3],[],[7],
[one\n
two\n
three\n
#origin B 5 0
four\n
five\n
#origin C 2 0
six\n
seven\n
eight\n
#stat
],
[liber:1.1-3: one\n
liber:2.1-3: two\n
liber:3.1-5: three\n
B:5.1-4: four\n
B:6.1-4: five\n
C:2.1-3: six\n
C:3.1-5: seven\n
C:4.1-5: eight\n
n_files=3
n_lines=7
n_chars=32
])

TRACKTEST([origin 4],[],[6],
[one\n
two\n
three\n
#origin B 5 0
four\n
five\n
#origin C 2 0
six\n
seven\n
eight\n
#stat
],
[liber:1.1-3: one\n
liber:2.1-3: two\n
liber:3.1-5: three\n
B:5.1-4: four\n
B:6.1-4: five\n
C:2.1-3: six\n
C:3.1-5: seven\n
C:4.1-5: eight\n
n_files=2
n_lines=6
n_chars=26
])

TRACKTEST([retreat over origin],[],[9],
[one\n
two\n
three\n
#origin B 5 0
four\n
five\n
#origin C 2 0
six\n
seven\n
eight\n
#retreat 17
nine
#stat
],[liber:1.1-3: one\n
liber:2.1-3: two\n
liber:3.1-5: three\n
B:5.1-4: four\n
B:6.1-4: five\n
C:2.1-3: six\n
C:3.1-5: seven\n
C:4.1-5: eight\n
B:6.5-8: nine
n_files=2
n_lines=5
n_chars=27
])

TRACKTEST([retreat over two origins],[],[9],
[one\n
two\n
three\n
#origin B 5 0
four\n
five\n
#origin C 2 0
six\n
seven\n
eight\n
#retreat 32
nine
#stat
],[liber:1.1-3: one\n
liber:2.1-3: two\n
liber:3.1-5: three\n
B:5.1-4: four\n
B:6.1-4: five\n
C:2.1-3: six\n
C:3.1-5: seven\n
C:4.1-5: eight\n
liber:3.1-4: nine
n_files=1
n_lines=3
n_chars=12
])

TRACKTEST([rebase],[],[9],
[one
#rebase archivum 5 3
two
],
[liber:1.1-3: one
archivum:5.4-6: two
])

TRACKTEST([#line directive],[],[9],
[agnosco
veteris\n
vestigia
#line 20
flamme\n
#retreat 8
Naso
],
[liber:1.1-7: agnosco
liber:1.8-14: veteris\n
liber:2.1-8: vestigia
liber:20.1-6: flamme\n
liber:2.8-11: Naso
])

m4_popdef([TRACKTEST])