Skip to content

Commit

Permalink
Add more tests in sequence_test.go
Browse files Browse the repository at this point in the history
Fix #42
  • Loading branch information
n10v committed Feb 12, 2020
1 parent a861027 commit e9b1386
Showing 1 changed file with 70 additions and 41 deletions.
111 changes: 70 additions & 41 deletions sequence_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,74 +6,103 @@ package id3v2

import "testing"

func TestSequenceCacheUpdate(t *testing.T) {
t.Parallel()

s := getSequence()
defer putSequence(s)
s.AddFrame(PictureFrame{Description: "A"})
if len(s.Frames()) != 1 {
t.Errorf("Expected %v frames, got %v", 1, len(s.Frames()))
}
s.AddFrame(PictureFrame{Description: "B"})
if len(s.Frames()) != 2 {
t.Errorf("Expected %v frames, got %v", 2, len(s.Frames()))
}
}

func TestSequenceCommentFramesUniqueness(t *testing.T) {
t.Parallel()

s := getSequence()
defer putSequence(s)

s.AddFrame(CommentFrame{Language: "A", Description: "A"})
if s.Count() != 1 {
t.Errorf("Expected %v frames, got %v", 1, s.Count())
}
testSequenceA(t, s)

s.AddFrame(CommentFrame{Language: "B", Description: "B"})
if s.Count() != 2 {
t.Errorf("Expected %v frames, got %v", 2, s.Count())
}
testSequenceAB(t, s)

s.AddFrame(CommentFrame{Language: "B", Description: "B"})
if s.Count() != 2 {
t.Errorf("Expected %v frames, got %v", 2, s.Count())
}
testSequenceAB(t, s)
}

func TestSequencePictureFramesUniqueness(t *testing.T) {
t.Parallel()

s := getSequence()
defer putSequence(s)

s.AddFrame(PictureFrame{Description: "A"})
if s.Count() != 1 {
t.Errorf("Expected %v frames, got %v", 1, s.Count())
}
testSequenceA(t, s)

s.AddFrame(PictureFrame{Description: "B"})
if s.Count() != 2 {
t.Errorf("Expected %v frames, got %v", 2, s.Count())
}
testSequenceAB(t, s)

s.AddFrame(PictureFrame{Description: "B"})
if s.Count() != 2 {
t.Errorf("Expected %v frames, got %v", 2, s.Count())
}
testSequenceAB(t, s)
}

func TestSequenceUSLFsUniqueness(t *testing.T) {
t.Parallel()

s := getSequence()
defer putSequence(s)

s.AddFrame(UnsynchronisedLyricsFrame{Language: "A", ContentDescriptor: "A"})
if s.Count() != 1 {
t.Errorf("Expected %v frames, got %v", 1, s.Count())
}
testSequenceA(t, s)

s.AddFrame(UnsynchronisedLyricsFrame{Language: "B", ContentDescriptor: "B"})
if s.Count() != 2 {
t.Errorf("Expected %v frames, got %v", 2, s.Count())
}
testSequenceAB(t, s)

s.AddFrame(UnsynchronisedLyricsFrame{Language: "B", ContentDescriptor: "B"})
if s.Count() != 2 {
t.Errorf("Expected %v frames, got %v", 2, s.Count())
testSequenceAB(t, s)

valueOfLastFrame := s.Frames()[1].(UnsynchronisedLyricsFrame).Value
if valueOfLastFrame != "C" {
t.Fatalf("Expected value of UserDefinedTextFrame %q, got %q", "C", valueOfLastFrame)
}
}

func TestSequenceUDTFsUniqueness(t *testing.T) {
t.Parallel()

s := getSequence()
defer putSequence(s)

s.AddFrame(UserDefinedTextFrame{Description: "A"})
testSequenceA(t, s)

s.AddFrame(UserDefinedTextFrame{Description: "B", Value: "B"})
testSequenceAB(t, s)

s.AddFrame(UserDefinedTextFrame{Description: "B", Value: "C"})
testSequenceAB(t, s)

// If one more frame added with same unique identifier, it should rewrite the old one.
// See https://github.com/bogem/id3v2/issues/42
valueOfLastFrame := s.Frames()[1].(UserDefinedTextFrame).Value
if valueOfLastFrame != "C" {
t.Fatalf("Expected value of UserDefinedTextFrame %q, got %q", "C", valueOfLastFrame)
}
}

func testSequenceA(t *testing.T, s *sequence) {
testSequenceCount(t, s, 1)
testFrameUniqueIdentifier(t, s.Frames()[0], "A")
}

func testSequenceAB(t *testing.T, s *sequence) {
testSequenceCount(t, s, 2)
testFrameUniqueIdentifier(t, s.Frames()[0], "A")
testFrameUniqueIdentifier(t, s.Frames()[1], "B")
}

func testSequenceCount(t *testing.T, s *sequence, expected int) {
got := s.Count()
if got != expected {
t.Errorf("Expected %v frames, got %v", expected, got)
}
}

func testFrameUniqueIdentifier(t *testing.T, f Framer, expected string) {
got := f.UniqueIdentifier()[:1]
if got != expected {
t.Errorf("Expected frame with unique identifier %v, got %v", expected, got)
}
}

0 comments on commit e9b1386

Please sign in to comment.