#!/bin/sh
######################################################
#
# Test sortm
#
######################################################

. "$MH_TEST_COMMON"


expected=$MH_TEST_DIR/$$.expected
actual=$MH_TEST_DIR/$$.actual

cd "$MH_TEST_DIR"

runandcheck "sortm -help" <<!
Usage: sortm [+folder] [msgs] [switches]
  switches are:
  -datefield field
  -textfield field
  -(no)textfield
  -limit days
  -(no)limit
  -[no]verbose
  -Version
  -help
!


cat >$MH_TEST_DIR/Mail/inbox/11 <<EOF || exit 1
From: Test11 <test11@example.com>
To: Some User <user@example.com>
Date: Fri, 29 Sep 2006 00:00:01
Alt-Date: Thu,  1 Sep 2005 00:00:00
Subject: Re: common subject

This is message number 11
EOF

cat >$MH_TEST_DIR/Mail/inbox/12 <<EOF || exit 1
From: Test12 <test12@example.com>
To: Some User <user@example.com>
Date: Thu, 28 Sep 2006 23:59:59
Alt-Date: Sat, 30 Sep 2006 00:00:00
Subject: common subject

This is message number 12
EOF



# check with no options

runandcheck sortm <<!
!
runandcheck scan <<!
   1  2006-09-28 23:59  Test12             common subject
   2  2006-09-29 00:00  Test1              Testing message 1
   3  2006-09-29 00:00  Test2              Testing message 2
   4  2006-09-29 00:00  Test3              Testing message 3
   5  2006-09-29 00:00  Test4              Testing message 4
   6  2006-09-29 00:00  Test5              Testing message 5
   7  2006-09-29 00:00  Test6              Testing message 6
   8  2006-09-29 00:00  Test7              Testing message 7
   9  2006-09-29 00:00  Test8              Testing message 8
  10  2006-09-29 00:00  Test9              Testing message 9
  11  2006-09-29 00:00  Test10             Testing message 10
  12  2006-09-29 00:00  Test11             Re: common subject
!



# check +folder

refile f +inbox
folder -pack >/dev/null

runandcheck "sortm +inbox" <<!
!
runandcheck "scan" <<!
   1  2006-09-28 23:59  Test12             common subject
   2  2006-09-29 00:00  Test1              Testing message 1
   3  2006-09-29 00:00  Test2              Testing message 2
   4  2006-09-29 00:00  Test3              Testing message 3
   5  2006-09-29 00:00  Test4              Testing message 4
   6  2006-09-29 00:00  Test5              Testing message 5
   7  2006-09-29 00:00  Test6              Testing message 6
   8  2006-09-29 00:00  Test7              Testing message 7
   9  2006-09-29 00:00  Test8              Testing message 8
  10  2006-09-29 00:00  Test9              Testing message 9
  11  2006-09-29 00:00  Test10             Testing message 10
  12  2006-09-29 00:00  Test11             Re: common subject
!



# check -verbose

refile f +inbox
folder -pack >/dev/null

runandcheck "sortm -verbose" <<!
sorting by datefield date
renaming message chain from 12 to 1
message 11 becomes message 12
message 10 becomes message 11
message 9 becomes message 10
message 8 becomes message 9
message 7 becomes message 8
message 6 becomes message 7
message 5 becomes message 6
message 4 becomes message 5
message 3 becomes message 4
message 2 becomes message 3
message 1 becomes message 2
!
runandcheck "scan" <<!
   1  2006-09-28 23:59  Test12             common subject
   2  2006-09-29 00:00  Test1              Testing message 1
   3  2006-09-29 00:00  Test2              Testing message 2
   4  2006-09-29 00:00  Test3              Testing message 3
   5  2006-09-29 00:00  Test4              Testing message 4
   6  2006-09-29 00:00  Test5              Testing message 5
   7  2006-09-29 00:00  Test6              Testing message 6
   8  2006-09-29 00:00  Test7              Testing message 7
   9  2006-09-29 00:00  Test8              Testing message 8
  10  2006-09-29 00:00  Test9              Testing message 9
  11  2006-09-29 00:00  Test10             Testing message 10
  12  2006-09-29 00:00  Test11             Re: common subject
!



# check -noverbose

refile f +inbox
folder -pack >/dev/null

runandcheck "sortm -verbose -noverbose" <<!
!
runandcheck "scan" <<!
   1  2006-09-28 23:59  Test12             common subject
   2  2006-09-29 00:00  Test1              Testing message 1
   3  2006-09-29 00:00  Test2              Testing message 2
   4  2006-09-29 00:00  Test3              Testing message 3
   5  2006-09-29 00:00  Test4              Testing message 4
   6  2006-09-29 00:00  Test5              Testing message 5
   7  2006-09-29 00:00  Test6              Testing message 6
   8  2006-09-29 00:00  Test7              Testing message 7
   9  2006-09-29 00:00  Test8              Testing message 8
  10  2006-09-29 00:00  Test9              Testing message 9
  11  2006-09-29 00:00  Test10             Testing message 10
  12  2006-09-29 00:00  Test11             Re: common subject
!



# check msgs

refile f +inbox
folder -pack >/dev/null

runandcheck "sortm f l" <<!
!
runandcheck "scan" <<!
   1  2006-09-28 23:59  Test12             common subject
   2  2006-09-29 00:00  Test2              Testing message 2
   3  2006-09-29 00:00  Test3              Testing message 3
   4  2006-09-29 00:00  Test4              Testing message 4
   5  2006-09-29 00:00  Test5              Testing message 5
   6  2006-09-29 00:00  Test6              Testing message 6
   7  2006-09-29 00:00  Test7              Testing message 7
   8  2006-09-29 00:00  Test8              Testing message 8
   9  2006-09-29 00:00  Test9              Testing message 9
  10  2006-09-29 00:00  Test10             Testing message 10
  11  2006-09-29 00:00  Test11             Re: common subject
  12  2006-09-29 00:00  Test1              Testing message 1
!



# check -datefield

runandcheck "sortm -datefield Alt-Date 1 11" <<!
!
runandcheck scan <<!
   1  2006-09-29 00:00  Test11             Re: common subject
   2  2006-09-29 00:00  Test2              Testing message 2
   3  2006-09-29 00:00  Test3              Testing message 3
   4  2006-09-29 00:00  Test4              Testing message 4
   5  2006-09-29 00:00  Test5              Testing message 5
   6  2006-09-29 00:00  Test6              Testing message 6
   7  2006-09-29 00:00  Test7              Testing message 7
   8  2006-09-29 00:00  Test8              Testing message 8
   9  2006-09-29 00:00  Test9              Testing message 9
  10  2006-09-29 00:00  Test10             Testing message 10
  11  2006-09-28 23:59  Test12             common subject
  12  2006-09-29 00:00  Test1              Testing message 1
!



# check -textfield subject (datefield major, subjects grouped)

runandcheck "sortm -textfield subject" <<!
!
runandcheck scan <<!
   1  2006-09-28 23:59  Test12             common subject
   2  2006-09-29 00:00  Test11             Re: common subject
   3  2006-09-29 00:00  Test2              Testing message 2
   4  2006-09-29 00:00  Test3              Testing message 3
   5  2006-09-29 00:00  Test4              Testing message 4
   6  2006-09-29 00:00  Test5              Testing message 5
   7  2006-09-29 00:00  Test6              Testing message 6
   8  2006-09-29 00:00  Test7              Testing message 7
   9  2006-09-29 00:00  Test8              Testing message 8
  10  2006-09-29 00:00  Test9              Testing message 9
  11  2006-09-29 00:00  Test10             Testing message 10
  12  2006-09-29 00:00  Test1              Testing message 1
!



# check -nolimit

runandcheck "sortm -textfield subject -limit 0 -nolimit" <<!
!
runandcheck scan <<!
   1  2006-09-28 23:59  Test12             common subject
   2  2006-09-29 00:00  Test11             Re: common subject
   3  2006-09-29 00:00  Test2              Testing message 2
   4  2006-09-29 00:00  Test3              Testing message 3
   5  2006-09-29 00:00  Test4              Testing message 4
   6  2006-09-29 00:00  Test5              Testing message 5
   7  2006-09-29 00:00  Test6              Testing message 6
   8  2006-09-29 00:00  Test7              Testing message 7
   9  2006-09-29 00:00  Test8              Testing message 8
  10  2006-09-29 00:00  Test9              Testing message 9
  11  2006-09-29 00:00  Test10             Testing message 10
  12  2006-09-29 00:00  Test1              Testing message 1
!



# check -textfield subject -limit 0 (subject sort)

refile 2-7 +inbox
refile 1 +inbox
folder -pack l >/dev/null

runandcheck "sortm -textfield subject -limit 0" <<!
!
runandcheck "scan" <<!
   1  2006-09-29 00:00  Test11             Re: common subject
   2  2006-09-28 23:59  Test12             common subject
   3  2006-09-29 00:00  Test1              Testing message 1
   4  2006-09-29 00:00  Test10             Testing message 10
   5  2006-09-29 00:00  Test2              Testing message 2
   6  2006-09-29 00:00  Test3              Testing message 3
   7  2006-09-29 00:00  Test4              Testing message 4
   8  2006-09-29 00:00  Test5              Testing message 5
   9  2006-09-29 00:00  Test6              Testing message 6
  10  2006-09-29 00:00  Test7              Testing message 7
  11  2006-09-29 00:00  Test8              Testing message 8
  12+ 2006-09-29 00:00  Test9              Testing message 9
!



# check -textfield -limit 0 (text sort)

refile 2-7 +inbox
refile 1 +inbox
folder -pack l >/dev/null

runandcheck "sortm -textfield from -limit 0" <<!
!
runandcheck "scan" <<!
   1  2006-09-29 00:00  Test10             Testing message 10
   2  2006-09-29 00:00  Test11             Re: common subject
   3  2006-09-28 23:59  Test12             common subject
   4  2006-09-29 00:00  Test1              Testing message 1
   5  2006-09-29 00:00  Test2              Testing message 2
   6  2006-09-29 00:00  Test3              Testing message 3
   7  2006-09-29 00:00  Test4              Testing message 4
   8  2006-09-29 00:00  Test5              Testing message 5
   9  2006-09-29 00:00  Test6              Testing message 6
  10  2006-09-29 00:00  Test7              Testing message 7
  11  2006-09-29 00:00  Test8              Testing message 8
  12+ 2006-09-29 00:00  Test9              Testing message 9
!



# add another message

cat >$MH_TEST_DIR/Mail/inbox/13 <<EOF || exit 1
From: Test13 <test13@example.com>
To: Some User <user@example.com>
Date: Tue, 31 Oct 2006 23:59:59
Subject: Re: common subject

This is message number 13
EOF



# check -textfield with finite -limit that doesn't cover message 13

refile 2-7 +inbox
refile 1 +inbox
folder -pack l >/dev/null

runandcheck "sortm -textfield subject -limit 10" <<!
!
runandcheck "scan" <<!
   1  2006-09-28 23:59  Test12             common subject
   2  2006-09-29 00:00  Test11             Re: common subject
   3  2006-09-29 00:00  Test5              Testing message 5
   4  2006-09-29 00:00  Test6              Testing message 6
   5  2006-09-29 00:00  Test7              Testing message 7
   6  2006-09-29 00:00  Test8              Testing message 8
   7  2006-09-29 00:00  Test9              Testing message 9
   8  2006-09-29 00:00  Test1              Testing message 1
   9  2006-09-29 00:00  Test2              Testing message 2
  10  2006-09-29 00:00  Test3              Testing message 3
  11  2006-09-29 00:00  Test4              Testing message 4
  12+ 2006-09-29 00:00  Test10             Testing message 10
  13  2006-10-31 23:59  Test13             Re: common subject
!



# check -textfield with finite -limit that does cover message 13

refile 2-7 +inbox
refile 1 +inbox
folder -pack l >/dev/null

runandcheck "sortm -textfield subject -limit 60" <<!
!
runandcheck scan <<!
   1  2006-09-28 23:59  Test12             common subject
   2  2006-09-29 00:00  Test11             Re: common subject
   3  2006-10-31 23:59  Test13             Re: common subject
   4  2006-09-29 00:00  Test1              Testing message 1
   5  2006-09-29 00:00  Test2              Testing message 2
   6  2006-09-29 00:00  Test3              Testing message 3
   7  2006-09-29 00:00  Test4              Testing message 4
   8  2006-09-29 00:00  Test10             Testing message 10
   9  2006-09-29 00:00  Test5              Testing message 5
  10  2006-09-29 00:00  Test6              Testing message 6
  11  2006-09-29 00:00  Test7              Testing message 7
  12  2006-09-29 00:00  Test8              Testing message 8
  13+ 2006-09-29 00:00  Test9              Testing message 9
!



# check -notextfield

refile 2-7 +inbox
refile 1 +inbox
folder -pack l >/dev/null

runandcheck "sortm -textfield subject -limit 60 -notextfield" <<!
!
runandcheck scan <<!
   1  2006-09-28 23:59  Test12             common subject
   2  2006-09-29 00:00  Test10             Testing message 10
   3  2006-09-29 00:00  Test5              Testing message 5
   4  2006-09-29 00:00  Test6              Testing message 6
   5  2006-09-29 00:00  Test7              Testing message 7
   6  2006-09-29 00:00  Test8              Testing message 8
   7  2006-09-29 00:00  Test9              Testing message 9
   8  2006-09-29 00:00  Test1              Testing message 1
   9  2006-09-29 00:00  Test2              Testing message 2
  10  2006-09-29 00:00  Test3              Testing message 3
  11  2006-09-29 00:00  Test4              Testing message 4
  12  2006-09-29 00:00  Test11             Re: common subject
  13+ 2006-10-31 23:59  Test13             Re: common subject
!



# check -check

sed -e 's/Sep//' $MH_TEST_DIR/Mail/inbox/7 > $MH_TEST_DIR/Mail/inbox/14

runandcheck "sortm" <<!
sortm: can't parse date field in message 14, continuing...
!
runandcheck scan <<!
   1  2006-09-28 23:59  Test12             common subject
   2  2006-09-29 00:00  Test10             Testing message 10
   3  2006-09-29 00:00  Test5              Testing message 5
   4  2006-09-29 00:00  Test6              Testing message 6
   5  2006-09-29 00:00  Test7              Testing message 7
   6  2006-09-29 00:00  Test8              Testing message 8
   7  2006-09-29 00:00  Test9              Testing message 9
   8  2006-09-29 00:00  Test1              Testing message 1
   9  2006-09-29 00:00  Test2              Testing message 2
  10  2006-09-29 00:00  Test3              Testing message 3
  11  2006-09-29 00:00  Test4              Testing message 4
  12  2006-09-29 00:00  Test11             Re: common subject
  13+ 2006-10-31 23:59  Test13             Re: common subject
  14     0-01-00 00:00  Test9              Testing message 9
!

