#!/bin/sh

PILOT_DATEBOOK='../pilot-datebook -q'
SUCCESS="Passed"
FAILED="Failed"



##########################################################################
IN1_FILE=update_in1.txt
IN2_FILE=update_in2.txt
TEST1="complex with equal, unequal ifs, multiple additions to description, greater, less comparison, multiple reads, multiple writes, single quotes, double quotes, quote within quote, sort"
OUT1_FILE=update_out1.txt
OUT2_FILE=update_out2.txt
OUT3_FILE=update_out3.txt
OUT4_FILE=update_out4.txt
OUT5_FILE=update_out5.txt
EXPECT1_FILE=update_expect1.txt
EXPECT2_FILE=update_expect2.txt
EXPECT3_FILE=update_expect3.txt
EXPECT4_FILE=update_expect4.txt
EXPECT5_FILE=update_expect5.txt

echo "(${TEST1}): "

cat > ${IN1_FILE} <<EOI
UNTIMED_EVENT <5849139> on <12 may 1997>:
category=2 (Birthday)
*1971 Geburtstag
REPEAT from <12 may 1997> until <forever>: <yearly> on <may 12>
ALARM <2 days before>
NOTE:
##@@B@@@@

APPOINTMENT <5849151> from <12 dec 1997 11:00> to <12 dec 1997 12:00>:
Internal Meeting
ALARM <5 min before>

APPOINTMENT <5849146> from <13 dec 1997 16:45> to <13 dec 1997 17:50>:
External Meeting

EOI


cat > ${EXPECT1_FILE} <<EOI
UNTIMED_EVENT <5849139> on <12 may 1997>:
category=2 ()
*1971 Geburtstag 'Test2
REPEAT from <12 may 1997> until <forever>: <yearly> on <may 12>
ALARM <2 days before>
NOTE:
##@@B@@@@

APPOINTMENT <5849151> from <12 dec 1997 11:00> to <12 dec 1997 12:00>:
Internal Meeting
Test1" Test1; Test1
ALARM <5 min before>

APPOINTMENT <5849146> from <13 dec 1997 16:45> to <13 dec 1997 17:50>:
External Meeting 'Test2

EOI


cat > ${EXPECT2_FILE} <<EOI
APPOINTMENT <5849146> from <13 dec 1997 16:45> to <13 dec 1997 17:50>:
External Meeting 'Test2

EOI


cat > ${EXPECT3_FILE} <<EOI
APPOINTMENT <5849151> from <12 dec 1997 11:00> to <12 dec 1997 12:00>:
Internal Meeting
Test1" Test1; Test1
ALARM <5 min before>

APPOINTMENT <5849146> from <13 dec 1997 16:45> to <13 dec 1997 17:50>:
External Meeting 'Test2

EOI


cat > ${EXPECT4_FILE} <<EOI
APPOINTMENT <5849151> from <12 dec 1997 11:00> to <12 dec 1997 13:03>:
Internal Meeting
Test1" Test1; Test1
ALARM <30 min before>

APPOINTMENT <5849146> from <13 dec 1997 16:45> to <13 dec 1997 18:48>:
External Meeting 'Test2

UNTIMED_EVENT <5849139> on <12 may 1997>:
category=2 ()
*1971 Geburtstag
REPEAT from <12 may 1997> until <forever>: <yearly> on <may 12>
ALARM <6 days before>
NOTE:
##@@B@@@@

APPOINTMENT <5849151> from <12 dec 1997 11:00> to <12 dec 1997 12:03>:
Internal Meeting
ALARM <15 min before>

APPOINTMENT <5849146> from <13 dec 1997 16:45> to <13 dec 1997 17:53>:
External Meeting

EOI


cat > ${EXPECT5_FILE} <<EOI
UNTIMED_EVENT <5849139> on <12 may 1997>:
category=2 ()
*1971 Geburtstag
REPEAT from <12 may 1997> until <forever>: <yearly> on <may 12>
ALARM <6 days before>
NOTE:
##@@B@@@@

APPOINTMENT <5849151> from <12 dec 1997 11:00> to <12 dec 1997 12:03>:
Internal Meeting
ALARM <15 min before>

APPOINTMENT <5849151> from <12 dec 1997 11:00> to <12 dec 1997 13:03>:
Internal Meeting
Test1" Test1; Test1
ALARM <30 min before>

APPOINTMENT <5849146> from <13 dec 1997 16:45> to <13 dec 1997 17:53>:
External Meeting

APPOINTMENT <5849146> from <13 dec 1997 16:45> to <13 dec 1997 18:48>:
External Meeting 'Test2

EOI


cat > ${IN2_FILE} <<EOI
# Test complex updates, and various other things...

# First read in file 1
-r longtxt -f ${IN1_FILE}

# Add Test1 to description, if alarm AND advance set to 5i
# (min, hours, or days)
-i "alarm==1;advance==5" -u "description+='\nTest1\" Test1\; Test1'"

# If no alarm OR advance is not equal to 5, then add Test2 to description
-i "alarm!=1" -i "advance!=5" -u 'description+=" \\'Test2"'

# Write Output up to here to out file 1
-w longtxt -f ${OUT1_FILE}

# Write everything to out file 2 which begins after 12 dec 1997 11:00
-i "begin>12 dec 1997 11:00"
-w longtxt -f ${OUT2_FILE}

#  Delete everything which ends before 12 dec 1997 12:00
-i "end<12 dec 1997 12:00" -d

# Write remaining records to out file 3
-w longtxt -f ${OUT3_FILE}

# Update remaining records: set end time 2 hours after begin time
# (x..., y..., and z... fields are temporary (transient) scratch fields),
# then multiply advance by 2
-u "xTime=begin;xTime+=2h;end=xTime;zInt=advance;zInt+=advance;advance=zInt"

# Additionally to the remaining records read from in file 1
-r longtxt -f ${IN1_FILE}

# Update all records: multiply advance by 3, add 3 minutes to end time
-u 'yInt=advance;yInt+=advance;yInt+=advance;advance=yInt;end+=3m'

# Write all records to out file 4
-w longtxt -f ${OUT4_FILE}

# Sort: first be end time, then (if end time is equal) by begin time
-s "end;begin"

# Write sorted list of records to out file 5
-w longtxt -f ${OUT5_FILE}

EOI


echo "Executing param file test: "

${PILOT_DATEBOOK} "@${IN2_FILE}"
if [ $? -ne 0 ]; then
	echo "${FAILED}"
	exit 1
fi
echo -n "Test result 1: "
diff ${EXPECT1_FILE} ${OUT1_FILE}
if [ $? -ne 0 ]; then
	echo "${FAILED}"
	exit 1
else
	echo "${SUCCESS}"
fi
echo -n "Test result 2: "
diff ${EXPECT2_FILE} ${OUT2_FILE}
if [ $? -ne 0 ]; then
	echo "${FAILED}"
	exit 1
else
	echo "${SUCCESS}"
fi
echo -n "Test result 3: "
diff ${EXPECT3_FILE} ${OUT3_FILE}
if [ $? -ne 0 ]; then
	echo "${FAILED}"
	exit 1
else
	echo "${SUCCESS}"
fi
echo -n "Test result 4: "
diff ${EXPECT4_FILE} ${OUT4_FILE}
if [ $? -ne 0 ]; then
	echo "${FAILED}"
	exit 1
else
	echo "${SUCCESS}"
fi
echo -n "Test result 5: "
diff ${EXPECT5_FILE} ${OUT5_FILE}
if [ $? -ne 0 ]; then
	echo "${FAILED}"
	exit 1
else
	echo "${SUCCESS}"
fi
rm ${IN1_FILE} ${IN2_FILE} \
    ${OUT1_FILE} ${OUT2_FILE} ${OUT3_FILE} ${OUT4_FILE} ${OUT5_FILE} \
    ${EXPECT1_FILE} ${EXPECT2_FILE} ${EXPECT3_FILE} ${EXPECT4_FILE} ${EXPECT5_FILE}
