Merge branch 'develop'

develop
Michael Yang 2014-07-10 20:59:55 -04:00
commit f9f68c06b0
3 zmienionych plików z 48 dodań i 11 usunięć

Wyświetl plik

@ -4,6 +4,7 @@
package encodedbytes
import (
"bytes"
"io"
)
@ -49,17 +50,13 @@ func (w *Writer) WriteString(s string, encoding byte) (err error) {
}
func (w *Writer) WriteNullTermString(s string, encoding byte) (err error) {
err = w.WriteString(s, encoding)
if err == nil {
nullLength := EncodingMap[encoding].NullLength
for i := 0; i < nullLength; i++ {
err = w.WriteByte(0)
if err != nil {
return
}
}
if err = w.WriteString(s, encoding); err != nil {
return
}
nullLength := EncodingNullLengthForIndex(encoding)
_, err = w.Write(bytes.Repeat([]byte{0x0}, nullLength))
return
}

7
id3.go
Wyświetl plik

@ -10,6 +10,10 @@ import (
"os"
)
const (
LatestVersion = 3
)
// Tagger represents the metadata of a tag
type Tagger interface {
Title() string
@ -57,7 +61,8 @@ func Open(name string) (*File, error) {
} else if v1Tag := v1.ParseTag(fi); v1Tag != nil {
file.Tagger = v1Tag
} else {
return nil, errors.New("Open: unknown tag format")
// Add a new tag if none exists
file.Tagger = v2.NewTag(LatestVersion)
}
return file, nil

Wyświetl plik

@ -125,6 +125,41 @@ func TestReadonly(t *testing.T) {
}
}
func TestAddTag(t *testing.T) {
tempFile, err := ioutil.TempFile("", "notag")
if err != nil {
t.Fatal(err)
}
file, err := Open(tempFile.Name())
if err != nil {
t.Errorf("AddTag: unable to open empty file")
}
tag := file.Tagger
if tag == nil {
t.Errorf("AddTag: no tag added to file")
}
file.SetArtist("Michael")
err = file.Close()
if err != nil {
t.Errorf("AddTag: error closing new file")
}
reopenBytes, err := ioutil.ReadFile(tempFile.Name())
if err != nil {
t.Errorf("AddTag: error reopening file")
}
expectedBytes := tag.Bytes()
if !bytes.Equal(expectedBytes, reopenBytes) {
t.Errorf("AddTag: tag not written correctly: %v", reopenBytes)
}
}
func TestUnsynchTextFrame_RoundTrip(t *testing.T) {
var (
err error