From 75ac8e6f2be3ef7e51a2cfc1c343dc0b308fcc90 Mon Sep 17 00:00:00 2001 From: Hajime Hoshi Date: Sat, 31 Mar 2018 01:51:39 +0900 Subject: [PATCH] vorbis: Add tests (#570) --- audio/vorbis/test_mono.ogg | Bin 0 -> 27858 bytes audio/vorbis/vorbis.go | 3 +- audio/vorbis/vorbis_test.go | 59 ++++++++++++++++++++++++++++++++++++ 3 files changed, 61 insertions(+), 1 deletion(-) create mode 100644 audio/vorbis/test_mono.ogg create mode 100644 audio/vorbis/vorbis_test.go diff --git a/audio/vorbis/test_mono.ogg b/audio/vorbis/test_mono.ogg new file mode 100644 index 0000000000000000000000000000000000000000..dc1a576797a5db99a2a7013d1fe65d24ae930603 GIT binary patch literal 27858 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 W;uv4b61FP4p>up*^0R&A1O5*_@vt2L literal 0 HcmV?d00001 diff --git a/audio/vorbis/vorbis.go b/audio/vorbis/vorbis.go index 895e4a309..5c2d238b0 100644 --- a/audio/vorbis/vorbis.go +++ b/audio/vorbis/vorbis.go @@ -20,9 +20,10 @@ import ( "io" "runtime" + "github.com/jfreymuth/oggvorbis" + "github.com/hajimehoshi/ebiten/audio" "github.com/hajimehoshi/ebiten/audio/internal/convert" - "github.com/jfreymuth/oggvorbis" ) // Stream is a decoded audio stream. diff --git a/audio/vorbis/vorbis_test.go b/audio/vorbis/vorbis_test.go new file mode 100644 index 000000000..5bd64c1f9 --- /dev/null +++ b/audio/vorbis/vorbis_test.go @@ -0,0 +1,59 @@ +// Copyright 2018 The Ebiten Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package vorbis_test + +import ( + "io/ioutil" + "testing" + + "github.com/jfreymuth/oggvorbis" + + "github.com/hajimehoshi/ebiten/audio" + . "github.com/hajimehoshi/ebiten/audio/vorbis" +) + +func TestMono(t *testing.T) { + bs, err := ioutil.ReadFile("test_mono.ogg") + if err != nil { + t.Fatal(err) + } + + c, err := audio.NewContext(44100) + if err != nil { + t.Fatal(err) + } + + s, err := Decode(c, audio.BytesReadSeekCloser(bs)) + if err != nil { + t.Fatal(err) + } + + r, err := oggvorbis.NewReader(audio.BytesReadSeekCloser(bs)) + if err != nil { + t.Fatal(err) + } + + // Stream decoded by audio/vorbis.Decode() is always 16bit stereo. + got := s.Length() + + // On the other hand, the original vorbis package is monoral. + // As Length() represents the number of samples, + // this needs to be doubled by 2 (= bytes in 16bits). + want := r.Length() * 2 * 2 + + if got != want { + t.Errorf("s.Length(): got: %d, want: %d", got, want) + } +}