From 1369765ae012494087a37d9622b8679aa5448ff7 Mon Sep 17 00:00:00 2001 From: Egan Ford <datajerk@gmail.com> Date: Tue, 5 Jan 2016 23:09:38 -0700 Subject: [PATCH] play list to stderr, added automated testing on OS/X with virtual ][ --- Makefile | 3 +++ c2t-96h | Bin 133644 -> 133508 bytes c2t-96h.c | 6 +++--- test.scrp | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++ test.sh | 40 ++++++++++++++++++++++++++++++++++++++++ 5 files changed, 99 insertions(+), 3 deletions(-) create mode 100644 test.scrp create mode 100755 test.sh diff --git a/Makefile b/Makefile index 9afc504..9c51095 100644 --- a/Makefile +++ b/Makefile @@ -14,3 +14,6 @@ c2t-96h: c2t-96h.c c2t.h c2t.h: mon/dos33.boot1.mon mon/dos33.boot2.mon asm/autoload.s asm/diskload2.s asm/diskload3.s asm/diskload8000.s asm/diskload9600.s asm/fastload8000.s asm/fastload9600.s asm/fastloadcd.s asm/inflate.s ./makeheader + +test: c2t-96h + ./test.sh diff --git a/c2t-96h b/c2t-96h index 0891e2d1e89dca79f565e94b27a4d0ca37582a13..e338e62385690a69e53cc7f3b7cdebcce266cfa7 100755 GIT binary patch delta 20767 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 delta 20861 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 diff --git a/c2t-96h.c b/c2t-96h.c index b447ca1..6661b92 100644 --- a/c2t-96h.c +++ b/c2t-96h.c @@ -1849,8 +1849,8 @@ void printevents(event *events, int rate) { int i; - printf("Play List:\n\n"); + fprintf(stderr,"Play List:\n\n"); for(i=0;i<eventnumber;i++) - printf("%06.02f\t%s\n",events[i].timestamp/(float)rate,events[i].label); - printf("\n"); + fprintf(stderr,"%06.02f\t%s\n",events[i].timestamp/(float)rate,events[i].label); + fprintf(stderr,"\n"); } diff --git a/test.scrp b/test.scrp new file mode 100644 index 0000000..a3f1901 --- /dev/null +++ b/test.scrp @@ -0,0 +1,53 @@ +on run argv + + set my_path to (system attribute "PWD") & "/" + set my_test to item 1 of argv + + tell application "Virtual ][" + activate + delay 0.5 + -- Close all open machines + close every machine saving no + -- Create a standard Apple //els + set theMachine to (make new AppleIIe) + tell theMachine + set speaker volume to 0.25 + #insert my_path & "test.dsk" into device "S6D1" + insert my_path & my_test into device "S6D1" + -- Now wait for the startup screen + delay 0.5 + reset + + repeat until the last line of the compact screen text = "]" + delay 0.5 + end repeat + + type line "LOAD" + play my_path & "test.aif" on device "cassette recorder" + -- Set the speed to maximum, to go quickly through the startup phase. + set speed to maximum + + -- with timeout of 180 seconds + -- waiting until the last word of the last line of the compact screen text = "REBOOT" + -- end timeout + + -- with timeout of 180 seconds + -- waiting until the last line of the compact screen text = "DONE. PRESS [RETURN] TO REBOOT." + -- end timeout + + -- use timeout code + + repeat until the last line of the compact screen text = "DONE. PRESS [RETURN] TO REBOOT." + delay 0.5 + end repeat + + -- short test of image, not necessary, next 3 lines can be removed + -- delay 0.5 + -- type line "" + -- delay 3 + + end tell + close every machine saving no + quit + end tell +end run diff --git a/test.sh b/test.sh new file mode 100755 index 0000000..cb01b46 --- /dev/null +++ b/test.sh @@ -0,0 +1,40 @@ +#!/bin/bash + +dsk_test() +{ + BASENAME=$(basename $1) + FILETYPE=$(echo $BASENAME | awk -F. '{print $NF}') + FILENAME=$(echo $BASENAME | sed "s/.$FILETYPE$//") + + dd if=/dev/zero of=test.$FILETYPE bs=1k count=140 >/dev/null 2>&1 + + ./c2t-96h ${BASENAME} test.aif + + osascript test.scrp test.${FILETYPE} + + S1=$(md5sum ${BASENAME} | awk '{print $1}') + S2=$(md5sum test.$FILETYPE | awk '{print $1}') + + echo "$BASENAME $S1 $S2" + + if [ "$S1" = "$S2" ] + then + rm -f test.$FILETYPE test.aif + return 0 + fi + return 1 +} + +for i in zork.dsk dangerous_dave.po +do + if dsk_test $i + then + echo "$i passed" + else + echo "$i failed" + exit 1 + fi +done + +exit 0 +