Skip to content

Commit 72b85bf

Browse files
add setter to the version scheme type (#25)
Fix #24
1 parent 0446ddb commit 72b85bf

File tree

2 files changed

+68
-0
lines changed

2 files changed

+68
-0
lines changed

versionscheme.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ package swid
55

66
import (
77
"encoding/xml"
8+
"fmt"
89
)
910

1011
// VersionScheme models the version-scheme type.
@@ -98,3 +99,12 @@ func (vs VersionScheme) MarshalXMLAttr(name xml.Name) (xml.Attr, error) {
9899
func (vs *VersionScheme) UnmarshalXMLAttr(attr xml.Attr) error {
99100
return xmlAttrToCode(attr, stringToVersionScheme, &vs.val)
100101
}
102+
103+
func (vs *VersionScheme) SetCode(v uint64) error {
104+
if _, ok := versionSchemeToString[v]; ok {
105+
vs.val = v
106+
return nil
107+
}
108+
109+
return fmt.Errorf("unknown version scheme %d", v)
110+
}

versionscheme_test.go

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
// Copyright 2020 Contributors to the Veraison project.
2+
// SPDX-License-Identifier: Apache-2.0
3+
4+
package swid
5+
6+
import (
7+
"errors"
8+
"testing"
9+
10+
"github.com/stretchr/testify/assert"
11+
)
12+
13+
func TestVersionScheme_Set(t *testing.T) {
14+
tests := []struct {
15+
name string
16+
tv uint64
17+
expected error
18+
}{
19+
{
20+
name: "known codepoints (1)",
21+
tv: VersionSchemeMultipartNumeric,
22+
expected: nil,
23+
},
24+
{
25+
name: "known codepoints (2)",
26+
tv: VersionSchemeMultipartNumericSuffix,
27+
expected: nil,
28+
},
29+
{
30+
name: "known codepoints (3)",
31+
tv: VersionSchemeAlphaNumeric,
32+
expected: nil,
33+
},
34+
{
35+
name: "known codepoints (4)",
36+
tv: VersionSchemeDecimal,
37+
expected: nil,
38+
},
39+
{
40+
name: "known codepoints (5)",
41+
tv: VersionSchemeSemVer,
42+
expected: nil,
43+
},
44+
{
45+
name: "unknown codepoint",
46+
tv: 19283937,
47+
expected: errors.New("unknown version scheme 19283937"),
48+
},
49+
}
50+
51+
for _, test := range tests {
52+
t.Run(test.name, func(t *testing.T) {
53+
var u VersionScheme
54+
actual := u.SetCode(test.tv)
55+
assert.Equal(t, test.expected, actual)
56+
})
57+
}
58+
}

0 commit comments

Comments
 (0)