# Commands covered: snack::audio
#

package require -exact snack 2.2

if {[lsearch [namespace children] ::tcltest] == -1} {
    package require tcltest
    namespace import ::tcltest::*
}

test audio-1.1 {snack::audio command with unknow sub-command} {
  catch {snack::audio junk} msg
  set msg
} {bad option "junk": must be outputDevices, inputDevices, selectOutput, selectInput, formats, frequencies, active, play_gain, record_gain, elapsedTime, currentSound, playLatency, scaling, encodings, rates, play, stop, or pause}

test audio-1.2 {snack::audio outputDevices command} {
  set devs [snack::audio outputDevices]
  set res [expr [string length $devs] > 0]
  set res
} 1

test audio-1.3 {snack::audio inputDevices command} {
  set devs [snack::audio inputDevices]
  set res [expr [string length $devs] > 0]
  set res
} 1

test audio-1.4 {snack::audio selectOutput command} {
  catch {snack::audio selectOutput junk} msg
  set msg
} {No such device: junk}

test audio-1.5 {snack::audio selectOutput command} {
  set dev [lindex [snack::audio outputDevices] 0]
  catch {snack::audio selectOutput $dev}
} 0

test audio-1.6 {snack::audio selectInput command} {
  catch {snack::audio selectInput junk} msg
  set msg
} {No such device: junk}

test audio-1.7 {snack::audio selectInput command} {
  set dev [lindex [snack::audio inputDevices] 0]
  catch {snack::audio selectInput $dev}
} 0

# cleanup
::tcltest::cleanupTests
return
