kopia lustrzana https://github.com/jcs/id3-go
Merge branch 'develop'
commit
f9f68c06b0
|
@ -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
7
id3.go
|
@ -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
|
||||
|
|
35
id3_test.go
35
id3_test.go
|
@ -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
|
||||
|
|
Ładowanie…
Reference in New Issue