#!/bin/sh
#
# Tests to see if bursting messages works correctly.
#

if test -z "${MH_OBJ_DIR}"; then
    srcdir=`dirname "$0"`/../..
    MH_OBJ_DIR=`cd "$srcdir" && pwd`; export MH_OBJ_DIR
fi

. "${MH_OBJ_DIR}/test/common.sh"

setup_test

check_exit '-eq 1' burst -
check_exit '-eq 0' burst -help
check_exit '-eq 1' burst -xyzzy
check_exit '-eq 0' burst -version
check_exit '-eq 1' burst -inplace -noinplace
check_exit '-eq 1' burst -mime -automime -nomime
check_exit '-eq 1' burst -quiet -noquiet
check_exit '-eq 1' burst -verbose -noverbose
check_exit '-eq 1' burst + @

#
# Create a test message that we can burst
#

cat > "${MH_TEST_DIR}/Mail/inbox/11" <<EOF
From: Test Burst Message <burst1@example.com>
To: Test Recipient <recipient@example.com>
Date: Friday, 29 Sep 2006 00:00:00
Subject: Test digest

------- Message one

From: Mister Burster <burst2@example.com>
To: Nobody 1 <nobody1@example.com>
Date: Thursday, 28 Sep 2006 00:01:00
Subject: Message one

This is message one

------- Message two

From: Mister Burster <burst3@example.com>
To: Nobody 2 <nobody2@example.com>
Date: Thursday, 28 Sep 2006 00:02:00
Subject: Message two

This is message two
For real.

-------

End of all messages
EOF

run_prog burst 11 || exit

run_test 'scan -width 80 11-last' "\
  11  09/29 Test Burst Messag  Test digest<<------- Message one From: Mister Bur
  12+ 09/28 Mister Burster     Message one<<This is message one >>
  13  09/28 Mister Burster     Message two<<This is message two For real. >>"

#
# Create another test message that stresses the boundary checker a bit
#

cat > "${MH_TEST_DIR}/Mail/inbox/14" <<EOF
From: Test Burst Message <burst1@example.com>
To: Test Recipient <recipient@example.com>
Date: Friday, 29 Sep 2006 00:00:00
Subject: Test digest

This is a preamble
------- Message one

From: Mister Burster <burst2@example.com>
To: Nobody 1 <nobody1@example.com>
Date: Thursday, 28 Sep 2006 00:01:00
Subject: Message one

- -This is message one

------- Message two
From: Mister Burster <burst3@example.com>
To: Nobody 2 <nobody2@example.com>
Date: Thursday, 28 Sep 2006 00:02:00
Subject: Message two

This is message two
- For real.
------- Message three



From: Mister Burster <burst4@example.com>
To: Nobody 3 <nobody3@example.com>
Date: Thursday, 28 Sep 2006 00:03:00
Subject: Message three

Will this one work?


------ Message three
End of all messages
EOF

run_prog burst 14 || exit

run_test 'scan -width 80 14-last' "\
  14  09/29 Test Burst Messag  Test digest<<This is a preamble ------- Message o
  15+ 09/28 Mister Burster     Message one<<-This is message one >>
  16  09/28 Mister Burster     Message two<<This is message two For real. >>
  17  09/28 Mister Burster     Message three<<Will this one work? >>"

#
# Check to see if each message is what we expect
#

run_test 'show -noheader -noshow 15' \
"From: Mister Burster <burst2@example.com>
To: Nobody 1 <nobody1@example.com>
Date: Thursday, 28 Sep 2006 00:01:00
Subject: Message one

-This is message one"

run_test 'show -noheader -noshow 16' \
"From: Mister Burster <burst3@example.com>
To: Nobody 2 <nobody2@example.com>
Date: Thursday, 28 Sep 2006 00:02:00
Subject: Message two

This is message two
For real."

#
# Backticks used by run_test can consume blank lines at the end of the
# command output, so use check for this one.
#

expected="${MH_TEST_DIR}/$$.expected"
cat > "${expected}" <<EOF
From: Mister Burster <burst4@example.com>
To: Nobody 3 <nobody3@example.com>
Date: Thursday, 28 Sep 2006 00:03:00
Subject: Message three

Will this one work?

EOF

check "${expected}" `mhpath 17`

exit $failed
