-
Notifications
You must be signed in to change notification settings - Fork 0
/
parse_meta_only_test.go
84 lines (80 loc) · 1.98 KB
/
parse_meta_only_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
package goslippi
import (
"github.com/pmcca/go-slippi/internal/testutil"
"github.com/pmcca/go-slippi/slippi"
"github.com/pmcca/go-slippi/slippi/melee"
"github.com/stretchr/testify/require"
"testing"
)
func TestParseMeta(t *testing.T) {
t.Parallel()
testCases := map[string]struct {
filePath string
expected slippi.Metadata
errAssertion require.ErrorAssertionFunc
}{
"EmptyFilePathReturnsError": {
filePath: "",
expected: slippi.Metadata{},
errAssertion: testutil.IsError(ErrEmptyFilePath),
},
"ErrorReadingFileReturnsError": {
filePath: "some-non-existent-file.slp",
expected: slippi.Metadata{},
errAssertion: testutil.IsError(ErrReadingFile),
},
"ErrorParsingMetaReturnsError": {
filePath: "test/replays/invalid-ubjson.ubj",
expected: slippi.Metadata{},
errAssertion: testutil.IsError(ErrParsingMeta),
},
"ParsesAndReturnsMeta": {
filePath: "test/replays/metadata.slp",
expected: slippi.Metadata{
StartAt: "2022-12-02T18:09:00Z",
LastFrame: 2011,
Players: slippi.PlayersMeta{
Port1: slippi.PlayerMeta{
Names: slippi.Names{
Name: "Smasher",
SlippiCode: "SMSH#123",
},
Characters: slippi.Characters{
{
CharacterID: melee.Int_Zelda,
FramesPlayed: 532,
},
{
CharacterID: melee.Int_Sheik,
FramesPlayed: 1603,
},
},
},
Port2: slippi.PlayerMeta{
Names: slippi.Names{
Name: "I Love Slippi!",
SlippiCode: "SLIP#987",
},
Characters: slippi.Characters{
{
CharacterID: melee.Int_Mario,
FramesPlayed: 2135,
},
},
},
},
PlayedOn: "dolphin",
},
errAssertion: require.NoError,
},
}
for name, testCase := range testCases {
tc := testCase
t.Run(name, func(t *testing.T) {
t.Parallel()
actual, err := ParseMeta(tc.filePath)
tc.errAssertion(t, err)
require.Equal(t, tc.expected, actual)
})
}
}