aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Duncan <pabs@pablotron.org>2022-02-07 11:03:09 -0500
committerPaul Duncan <pabs@pablotron.org>2022-02-07 11:03:09 -0500
commit19bcc5e8df039f5de0f46fd6aa71e425a5e797bb (patch)
treed931dc7b113cd2f989d0afdde9adfa00e6aca3ba
parent5bc6072dd22038f8f0c3cf6cc8ed758293725a8f (diff)
downloadcvez-19bcc5e8df039f5de0f46fd6aa71e425a5e797bb.tar.bz2
cvez-19bcc5e8df039f5de0f46fd6aa71e425a5e797bb.zip
cvss: add severity and tests
-rw-r--r--cvss/severity.go16
-rw-r--r--cvss/severity_string.go27
-rw-r--r--cvss/severity_test.go26
3 files changed, 69 insertions, 0 deletions
diff --git a/cvss/severity.go b/cvss/severity.go
new file mode 100644
index 0000000..88df96a
--- /dev/null
+++ b/cvss/severity.go
@@ -0,0 +1,16 @@
+package cvss
+
+type Rating byte
+
+//go:generate stringer -linecomment -type=Severity
+
+// CVSS score severity rating.
+type Severity byte
+
+const (
+ None Severity = iota // None
+ Low // Low
+ Medium // Medium
+ High // High
+ Critical // Critical
+)
diff --git a/cvss/severity_string.go b/cvss/severity_string.go
new file mode 100644
index 0000000..8155fa2
--- /dev/null
+++ b/cvss/severity_string.go
@@ -0,0 +1,27 @@
+// Code generated by "stringer -linecomment -type=Severity"; DO NOT EDIT.
+
+package cvss
+
+import "strconv"
+
+func _() {
+ // An "invalid array index" compiler error signifies that the constant values have changed.
+ // Re-run the stringer command to generate them again.
+ var x [1]struct{}
+ _ = x[None-0]
+ _ = x[Low-1]
+ _ = x[Medium-2]
+ _ = x[High-3]
+ _ = x[Critical-4]
+}
+
+const _Severity_name = "NoneLowMediumHighCritical"
+
+var _Severity_index = [...]uint8{0, 4, 7, 13, 17, 25}
+
+func (i Severity) String() string {
+ if i >= Severity(len(_Severity_index)-1) {
+ return "Severity(" + strconv.FormatInt(int64(i), 10) + ")"
+ }
+ return _Severity_name[_Severity_index[i]:_Severity_index[i+1]]
+}
diff --git a/cvss/severity_test.go b/cvss/severity_test.go
new file mode 100644
index 0000000..632736d
--- /dev/null
+++ b/cvss/severity_test.go
@@ -0,0 +1,26 @@
+package cvss
+
+import "testing"
+
+func TestSeverityString(t *testing.T) {
+ tests := []struct {
+ val Severity
+ exp string
+ } {
+ { None, "None" },
+ { Low, "Low" },
+ { Medium, "Medium" },
+ { High, "High" },
+ { Critical, "Critical" },
+ { Severity(255), "Severity(255)" },
+ }
+
+ for _, test := range(tests) {
+ t.Run(test.exp, func(t *testing.T) {
+ got := test.val.String()
+ if got != test.exp {
+ t.Errorf("got \"%s\", exp \"%s\"", got, test.exp)
+ }
+ })
+ }
+}