list.at 4.94 KB
# This file is part of GNU Mailutils. -*- Autotest -*-
# Copyright (C) 2007, 2008, 2009, 2010, 2011 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(List)

dnl ------------------------------------------------------------
dnl TESTLIST([NAME], [KW = `'], [INPUT], [STDOUT = `'],
dnl          [STDERR = `'], [RUN-IF-FAIL], [RUN-IF-PASS])
dnl
m4_pushdef([TESTLIST],[
m4_pushdef([MU_TEST_KEYWORDS],[list])
m4_pushdef([MU_TEST_COMMAND],[listop])
MU_GENERIC_TEST([$1],[$2],[$3],[],[$4],[$5])
m4_popdef([MU_TEST_COMMAND])
m4_popdef([MU_TEST_KEYWORDS])
])


# ------------------------------------------------------------
# Lists
# ------------------------------------------------------------

m4_pushdef([MU_TEST_GROUP],[List])

TESTLIST([build],[],
[add en to tre fire fem
print],
[# items: 5
en
to
tre
fire
fem
])

TESTLIST([insert after],[],
[add en tre fire fem
ins after en to
print],
[# items: 5
en
to
tre
fire
fem
])

TESTLIST([insert before],[],
[add en tre fire fem
ins before tre to
print],
[# items: 5
en
to
tre
fire
fem
])

TESTLIST([prepend],[],
[add en to tre fire fem
prep null jeden dwa trzy
print],
[# items: 9
trzy
dwa
jeden
null
en
to
tre
fire
fem
])

TESTLIST([delete],[],
[add en to tre fire fem
del to fire
print],
[# items: 3
en
tre
fem
])

TESTLIST([get],[],
[add en to tre fire fem
3],
[fire
])


# ------------------------------------------------------------
# Iterators
# ------------------------------------------------------------

m4_define([MU_TEST_GROUP],[Iterator])
m4_pushdef([MU_TEST_KEYWORDS],MU_TEST_KEYWORDS[ iterator itr])

TESTLIST([forward],[],
[add en to tre fire fem
first
cur
next 3
cur],
[0:0:en
0:3:fire
])

TESTLIST([locate],[],
[add en to tre fire fem
find tre
cur],
[0:2:tre
])

TESTLIST([backward],[],
[add en to tre fire fem
ictl dir backwards
find fem
cur
next
cur
next 2
cur
],
[0:4:fem
0:3:fire
0:1:to
])

TESTLIST([delete],[],
[add en to tre fire fem
find tre
cur
ictl del
cur
print
],
[0:2:tre
0:2:fire
# items: 4
en
to
fire
fem
])

TESTLIST([insert],[],
[add en to fire
find to
cur
ictl ins tre
cur
next
cur
next
cur
print
],
[0:1:to
0:1:to
0:2:tre
0:3:fire
# items: 4
en
to
tre
fire
])

TESTLIST([replace],[],
[add en to tre fire fem
find tre
cur
ictl repl trzy
cur
print
],
[0:2:tre
0:2:trzy
# items: 5
en
to
trzy
fire
fem
])

TESTLIST([interaction],[],
[add en to tre fire fem
first
iter 1
find tre
cur
iter 0
cur
],
[1:2:tre
0:0:en
])

TESTLIST([interaction: moves],[],
[add en to tre fire fem
first
iter 1
find tre
iter 0
next
iter 1
next
iter 0
cur
iter 1
cur
],
[0:1:to
1:3:fire
])

TESTLIST([interaction: deletes],[],
[add en to tre fire fem
find tre
iter 1
find tre
ictl del
cur
iter 0
cur
],
[1:2:fire
0:2:fire
])

m4_popdef([MU_TEST_KEYWORDS])


# ------------------------------------------------------------
# Maps
# ------------------------------------------------------------

m4_define([MU_TEST_GROUP],[Map])
m4_pushdef([MU_TEST_KEYWORDS],MU_TEST_KEYWORDS[ map])

TESTLIST([even],[],
[add null en to tre fire fem
map even
],
[# items: 3
null
to
fire
])

TESTLIST([odd],[],
[add null en to tre fire fem
map odd
],
[# items: 3
en
tre
fem
])

TESTLIST([odd0],[],
[add null
map odd
],
[# items: 0
])

TESTLIST([concat],[],
[add en to tre fire fem
map concat 2 -
],
[# items: 3
en-to
tre-fire
fem
])

TESTLIST([concat3],[],
[add en to tre fire fem
map concat 3 -
],
[# items: 2
en-to-tre
fire-fem
])

TESTLIST([skip],[],
[add null en to tre fire fem
map skip 3
],
[# items: 3
tre
fire
fem
])

TESTLIST([trim],[],
[add null en to tre fire fem
map trim 3
],
[# items: 3
null
en
to
])

m4_popdef([MU_TEST_KEYWORDS])

# ------------------------------------------------------------
# Slices
# ------------------------------------------------------------

m4_define([MU_TEST_GROUP],[Slice])
m4_pushdef([MU_TEST_KEYWORDS],MU_TEST_KEYWORDS[ slice])

TESTLIST([one limit],[],
[add null en to tre fire
slice 3
],
[# items: 2
tre
fire
])

TESTLIST([two limits],[],
[add null en to tre fire fem seks syv atte ni ti
slice 4 7
],
[# items: 4
fire
fem
seks
syv
])

TESTLIST([four limits],[],
[add null en to tre fire fem seks syv atte ni ti
slice 4 6 9 10
],
[# items: 5
fire
fem
seks
ni
ti
])

TESTLIST([four limits unsorted],[],
[add null en to tre fire fem seks syv atte ni ti
slice 10 6 9 4 
],
[# items: 5
fire
fem
seks
ni
ti
])

m4_popdef([MU_TEST_KEYWORDS])

dnl ------------------------------------------------------------
dnl Cleanup
m4_popdef([TESTLIST])
m4_popdef([MU_TEST_GROUP])