123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- package qmc
- import (
- "bytes"
- "fmt"
- "io"
- "os"
- "reflect"
- "testing"
- "unlock-music.dev/cli/algo/common"
- )
- func loadTestDataQmcDecoder(filename string) ([]byte, []byte, error) {
- encBody, err := os.ReadFile(fmt.Sprintf("./testdata/%s_raw.bin", filename))
- if err != nil {
- return nil, nil, err
- }
- encSuffix, err := os.ReadFile(fmt.Sprintf("./testdata/%s_suffix.bin", filename))
- if err != nil {
- return nil, nil, err
- }
- target, err := os.ReadFile(fmt.Sprintf("./testdata/%s_target.bin", filename))
- if err != nil {
- return nil, nil, err
- }
- return bytes.Join([][]byte{encBody, encSuffix}, nil), target, nil
- }
- func TestMflac0Decoder_Read(t *testing.T) {
- tests := []struct {
- name string
- fileExt string
- wantErr bool
- }{
- {"mflac0_rc4", ".mflac0", false},
- {"mflac_rc4", ".mflac", false},
- {"mflac_map", ".mflac", false},
- {"mgg_map", ".mgg", false},
- {"qmc0_static", ".qmc0", false},
- }
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- raw, target, err := loadTestDataQmcDecoder(tt.name)
- if err != nil {
- t.Fatal(err)
- }
- d := NewDecoder(&common.DecoderParams{
- Reader: bytes.NewReader(raw),
- Extension: tt.fileExt,
- })
- if err := d.Validate(); err != nil {
- t.Errorf("validate file error = %v", err)
- }
- buf := make([]byte, len(target))
- if _, err := io.ReadFull(d, buf); err != nil {
- t.Errorf("read bytes from decoder error = %v", err)
- return
- }
- if !reflect.DeepEqual(buf, target) {
- t.Errorf("Decrypt() got = %v, want %v", buf[:32], target[:32])
- }
- })
- }
- }
- func TestMflac0Decoder_Validate(t *testing.T) {
- tests := []struct {
- name string
- fileExt string
- wantErr bool
- }{
- {"mflac0_rc4", ".flac", false},
- {"mflac_map", ".flac", false},
- {"mgg_map", ".ogg", false},
- {"qmc0_static", ".mp3", false},
- }
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- raw, _, err := loadTestDataQmcDecoder(tt.name)
- if err != nil {
- t.Fatal(err)
- }
- d := NewDecoder(&common.DecoderParams{
- Reader: bytes.NewReader(raw),
- Extension: tt.fileExt,
- })
- if err := d.Validate(); err != nil {
- t.Errorf("read bytes from decoder error = %v", err)
- return
- }
- })
- }
- }
|