1# Commands covered: sound data/append 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 data-1.1 {data command, read sound from binary variable} { 12 if [catch {set fd [open ex1.wav]} res] { 13 return $res 14 } 15 fconfigure $fd -translation binary 16 if {$::tcl_version > 8.0} { 17 fconfigure $fd -encoding binary 18 } 19 set data [read $fd] 20 21 set s [snack::sound snd] 22 $s data $data 23 24 set res [$s info] 25 $s destroy 26 set res 27} {15820 16000 14264 -8288 Lin16 1 WAV 44} 28 29test data-1.2 {data command, read sound from binary string} { 30 set s [snack::sound snd] 31 $s data "\x00\x00\xFF\x00\x00\x00" -byteorder littleEndian 32 set res [$s info] 33 $s destroy 34 set res 35} {3 16000 255 0 Lin16 1 RAW 0} 36 37test data-2.1 {data command, write sound to binary variable} { 38 set s [snack::sound snd -load ex1.wav] 39 set var [$s data -start 5000 -end 5001 -fileformat raw -byteorder bigEndian] 40 binary scan $var S out 41 $s destroy 42 set out 43} 7443 44 45test data-3.1 {data command, append binary variable} { 46 if [catch {set fd [open ex1.wav]} res] { 47 return $res 48 } 49 fconfigure $fd -translation binary 50 if {$::tcl_version > 8.0} { 51 fconfigure $fd -encoding binary 52 } 53 set data [read $fd] 54 set s [snack::sound snd] 55 $s length 1000 56 $s append $data 57 set res [list [$s sample 999] [$s sample 6000] [$s sample 11000]] 58 $s destroy 59 set res 60} {0 7443 779} 61 62test data-4.1 {append command, append binary string} { 63 set s [snack::sound snd] 64 $s append "\x00\x00\x40\x00\x00\x00" -byteorder littleEndian 65 set res [$s info] 66 $s destroy 67 set res 68} {3 16000 64 0 Lin16 1 RAW 0} 69 70test data-4.2 {append command, append binary string} { 71 set s [snack::sound snd] 72 $s append "\x00\x00\x00\x40\x00\x00" -byteorder littleEndian 73 set res [$s info] 74 $s destroy 75 set res 76} {3 16000 16384 0 Lin16 1 RAW 0} 77 78test data-4.3 {append command, append binary string} { 79 set s [snack::sound snd] 80 $s append "\xff\xc0\x00\x40\x00\x00" -byteorder bigendian 81 set res [$s info] 82 $s destroy 83 set res 84} {3 16000 64 -64 Lin16 1 RAW 0} 85 86test data-4.4 {append command, append binary string} { 87 set s [snack::sound snd] 88 $s append "\xc0\xff\x40\x00\x00\x00" -byteorder littleendian 89 set res [$s info] 90 $s destroy 91 set res 92} {3 16000 64 -64 Lin16 1 RAW 0} 93 94test data-4.5 {append command, append binary string} { 95 set s [snack::sound snd] 96 $s append "\xff\xc0\x00\x40\x00\x00" -guessproperties yes 97 set res [$s info] 98 $s destroy 99 set res 100} {3 16000 64 -64 Lin16 1 RAW 0} 101 102test data-4.6 {append command, append binary string} { 103 set s [snack::sound snd] 104 $s append "\xc0\xff\x40\x00\x00\x00" -guessproperties yes 105 set res [$s info] 106 $s destroy 107 set res 108} {3 16000 64 -64 Lin16 1 RAW 0} 109 110test data-4.7 {append command, missing arg} { 111 set s [snack::sound snd] 112 catch {$s append} res 113 $s destroy 114 set res 115} {wrong # args: should be "snd append variable"} 116 117test data-5.1 {data command, initial data byte is '-'} { 118 set s [snack::sound snd] 119 $s data "-\x00" -byteorder littleEndian 120 set res [$s info] 121 $s destroy 122 set res 123} {1 16000 45 45 Lin16 1 RAW 0} 124 125# cleanup 126::tcltest::cleanupTests 127return 128