Skip to content

Commit

Permalink
Merge pull request veandco#135 from jangler/master
Browse files Browse the repository at this point in the history
Make audio funcs return errors instead of ints; add tests
  • Loading branch information
Jacky Boen committed Jul 22, 2015
2 parents ee5ef82 + 0c1b7d7 commit dc0a068
Show file tree
Hide file tree
Showing 2 changed files with 50 additions and 6 deletions.
21 changes: 15 additions & 6 deletions sdl/audio.go
Original file line number Diff line number Diff line change
Expand Up @@ -145,10 +145,13 @@ func GetAudioDriver(index int) string {
}

// AudioInit (https://wiki.libsdl.org/SDL_AudioInit)
func AudioInit(driverName string) int {
func AudioInit(driverName string) error {
_driverName := C.CString(driverName)
defer C.free(unsafe.Pointer(_driverName))
return int(C.SDL_AudioInit(_driverName))
if C.SDL_AudioInit(_driverName) != 0 {
return GetError()
}
return nil
}

// AudioQuit (https://wiki.libsdl.org/SDL_AudioQuit)
Expand All @@ -162,8 +165,11 @@ func GetCurrentAudioDriver() string {
}

// OpenAudio (https://wiki.libsdl.org/SDL_OpenAudio)
func OpenAudio(desired, obtained *AudioSpec) int {
return int(C.SDL_OpenAudio(desired.cptr(), obtained.cptr()))
func OpenAudio(desired, obtained *AudioSpec) error {
if C.SDL_OpenAudio(desired.cptr(), obtained.cptr()) != 0 {
return GetError()
}
return nil
}

// GetNumAudioDevices (https://wiki.libsdl.org/SDL_GetNumAudioDevices)
Expand Down Expand Up @@ -249,9 +255,12 @@ func BuildAudioCVT(cvt *AudioCVT, srcFormat AudioFormat, srcChannels uint8, srcR
}

// ConvertAudio (https://wiki.libsdl.org/SDL_ConvertAudio)
func ConvertAudio(cvt *AudioCVT) int {
func ConvertAudio(cvt *AudioCVT) error {
_cvt := (*C.SDL_AudioCVT)(unsafe.Pointer(cvt))
return int(C.SDL_ConvertAudio(_cvt))
if C.SDL_ConvertAudio(_cvt) != 0 {
return GetError()
}
return nil
}

// MixAudio (https://wiki.libsdl.org/SDL_MixAudio)
Expand Down
35 changes: 35 additions & 0 deletions sdl/audio_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,41 @@ var squareWave = []byte("RIFF,\x00\x00\x00WAVEfmt \x10\x00\x00\x00\x01\x00" +
"\x01\x00\xab \x00\x00\xab \x00\x00\x01\x00\b\x00data\b\x00\x00\x00\x00" +
"\x00\x00\x00\xff\xff\xff\xff")

func TestAudioInitQuit(t *testing.T) {
// figure out what driver will work
if err := InitSubSystem(INIT_AUDIO); err != nil {
t.Fatalf("InitSubSystem(INIT_AUDIO): %v", err)
}
driver := GetCurrentAudioDriver()

// reset audio subsystem
QuitSubSystem(INIT_AUDIO)
if GetCurrentAudioDriver() != "" {
t.Fatalf(`GetCurrentAudioDriver() != "" after QuitSubSystem()`)
}

// test valid init
if err := AudioInit(driver); err != nil {
t.Errorf("AudioInit(%s) returned error: %v", driver, err)
} else {
if got := GetCurrentAudioDriver(); got != driver {
t.Errorf("GetCurrentAudioDriver() == %#v; want %#v", got, driver)
}

// test quit
AudioQuit()
if GetCurrentAudioDriver() != "" {
t.Fatalf(`GetCurrentAudioDriver() != "" after AudioQuit()`)
}
}

// test invalid init
driver = "bogus"
if err := AudioInit(driver); err == nil {
t.Errorf("AudioInit(%s) did not return error", driver)
}
}

func TestLoadWAV_RW(t *testing.T) {
// load WAV from *RWOps pointing to WAV data
sliceHeader := (*reflect.SliceHeader)(unsafe.Pointer(&squareWave))
Expand Down

0 comments on commit dc0a068

Please sign in to comment.