1# Commands covered: sound read/write 2# 3 4package require -exact snack 2.2 5 6if {[lsearch [namespace children] ::tcltest] == -1} { 7 package require tcltest 8 namespace import ::tcltest::* 9} 10 11test fileio-1.1 {write/read commands for WAV file format} { 12 set s [snack::sound snd] 13 $s length 300 14 $s write snackTest.wav 15 set res [$s read snackTest.wav] 16 $s destroy 17 set res 18} {WAV} 19 20test fileio-1.2 {write/read commands for AU file format} { 21 set s [snack::sound snd] 22 $s length 300 23 $s write snackTest.au 24 set res [$s read snackTest.au] 25 $s destroy 26 set res 27} {AU} 28 29test fileio-1.3 {write/read commands for AIFF file format} { 30 set s [snack::sound snd] 31 $s length 300 32 $s write snackTest.aiff 33 set res [$s read snackTest.aiff] 34 $s destroy 35 set res 36} {AIFF} 37 38test fileio-1.4 {write/read commands for MP3 file format} { 39 set s [snack::sound snd] 40 $s length 300 41 set res [list [catch {$s write snackTest.mp3} msg] $msg] 42 $s destroy 43 set res 44} {1 {Unsupported save format}} 45 46test fileio-1.5 {write/read commands for RAW file format} { 47 set s [snack::sound snd -load ex1.wav] 48 $s write snackTest.raw -start 5000 -end 10000 -fileformat raw \ 49 -byteorder littleEndian 50 $s read snackTest.raw -guessproperties 1 51 set res [$s cget -byteorder] 52 $s destroy 53 set res 54} {littleEndian} 55 56test fileio-1.6 {write/read commands for RAW file format} { 57 set s [snack::sound snd -load ex1.wav] 58 $s write snackTest.raw -start 5000 -end 10000 -fileformat raw \ 59 -byteorder bigEndian 60 $s read snackTest.raw -guessproperties 1 61 set res [$s cget -byteorder] 62 $s destroy 63 set res 64} {bigEndian} 65 66test fileio-1.7 {write/read commands for RAW file format} { 67 set s [snack::sound snd -load ex1.wav] 68 $s write snackTest.raw -fileformat raw -byteorder bigEndian 69 $s read snackTest.raw -rate 16000 -encoding Lin16 -channels 1 \ 70 -byteorder bigEndian -guessproperties 0 71 set res [$s info] 72 $s destroy 73 set res 74} {15820 16000 14264 -8288 Lin16 1 RAW 0} 75 76test fileio-2.1 {read command, -start/-end options} { 77 set s [snack::sound snd] 78 $s read ex1.wav -start 5000 -end 10000 79 set res [list [$s sample 0] [$s sample 5000] [$s length]] 80 $s destroy 81 set res 82} {7443 779 5001} 83 84test fileio-2.2 {read command, missing argument for -end option} { 85 set s [snack::sound snd] 86 catch {$s read ex1.wav -start 5000 -end} msg 87 $s destroy 88 set msg 89} {No argument given for -end option} 90 91test fileio-3.1 {read command, empty -progress option} { 92 set s [snack::sound snd] 93 catch {$s read ex1.wav -progress ""} msg 94 $s destroy 95 set msg 96} WAV 97 98test fileio-3.2 {write command, empty -progress option} { 99 set s [snack::sound snd] 100 catch {$s write snackTest.wav -progress ""} msg 101 $s destroy 102 set msg 103} {} 104 105test fileio-3.3 {read command, -progress option} { 106 set res "" 107 proc prog {msg frac} { 108 lappend ::res $frac 109 } 110 set s [snack::sound snd] 111 $s read ex1.wav -progress prog 112 $s destroy 113 set res 114} {0.0 1.0} 115 116test fileio-3.4 {write command, -progress option} { 117 set res "" 118 proc prog {msg frac} { 119 lappend ::res $frac 120 } 121 set s [snack::sound snd] 122 $s write snackTest.wav -progress prog 123 $s destroy 124 set res 125} {0.0 1.0} 126 127test fileio-4.1 {read command, read error should leave current untouched} { 128 set s [snack::sound snd -load ex1.wav] 129 catch {$s read nonexisting.wav} 130 set res [$s info] 131 $s destroy 132 set res 133} {15820 16000 14264 -8288 Lin16 1 WAV 44} 134 135test fileio-4.2 {read command, No file name given} { 136 set s [snack::sound snd] 137 catch {$s read} res 138 $s destroy 139 set res 140} {No file name given} 141 142# cleanup 143catch {::tcltest::removeFile snackTest.wav} 144catch {::tcltest::removeFile snackTest.au} 145catch {::tcltest::removeFile snackTest.aiff} 146catch {::tcltest::removeFile snackTest.raw} 147::tcltest::cleanupTests 148return 149