aboutsummaryrefslogtreecommitdiff
path: root/internal/cpe/avstring_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/cpe/avstring_test.go')
-rw-r--r--internal/cpe/avstring_test.go95
1 files changed, 95 insertions, 0 deletions
diff --git a/internal/cpe/avstring_test.go b/internal/cpe/avstring_test.go
new file mode 100644
index 0000000..8cbb14b
--- /dev/null
+++ b/internal/cpe/avstring_test.go
@@ -0,0 +1,95 @@
+package cpe
+
+import (
+ "testing"
+)
+
+func TestNewAvString(t *testing.T) {
+ passTests := []struct {
+ name string
+ val token
+ exp AvString
+ } {
+ { "any", token { Type: anyToken }, AvString { Type: AnyString } },
+ { "na", token { Type: naToken }, AvString { Type: NaString } },
+ { "empty", token { Type: valToken }, AvString { ValString, "" } },
+ { "foo", token { valToken, "foo" }, AvString { ValString, "foo" } },
+ }
+
+ for _, test := range(passTests) {
+ t.Run(test.name, func(t *testing.T) {
+ got, err := newAvString(test.val)
+ if err != nil {
+ t.Error(err)
+ } else if got.Type != test.exp.Type {
+ t.Errorf("token: got %s, exp %s", got.Type, test.exp.Type)
+ } else if got.Type == ValString && got.Val != test.exp.Val {
+ t.Errorf("value: got \"%s\", exp \"%s\"", got.Val, test.exp.Val)
+ }
+ })
+ }
+
+ failTests := []struct {
+ name string
+ val token
+ exp string
+ } {{
+ name: "invalid token",
+ val: token { Type: tokenType(127), Val: "foo" },
+ exp: "invalid token type: 0x7f",
+ }}
+
+ for _, test := range(failTests) {
+ t.Run(test.name, func(t *testing.T) {
+ got, err := newAvString(test.val)
+ if err == nil {
+ t.Errorf("got %v, exp error", got)
+ } else if err.Error() != test.exp {
+ t.Errorf("got \"%s\", exp \"%s\"", err.Error(), test.exp)
+ }
+ })
+ }
+}
+
+func TestAvStringString(t *testing.T) {
+ tests := []struct {
+ name string
+ val AvString
+ exp string
+ } {
+ { "any", AvString { AnyString, "" }, "*" },
+ { "na", AvString { NaString, "" }, "-" },
+ { "foo", AvString { ValString, "foo" }, "foo" },
+ { "junk", AvString { AvStringType(255), "foo" }, "" },
+ }
+
+ for _, test := range(tests) {
+ t.Run(test.name, func(t *testing.T) {
+ got := test.val.String()
+ if got != test.exp {
+ t.Errorf("value: got \"%s\", exp \"%s\"", got, test.exp)
+ }
+ })
+ }
+}
+
+func TestAvStringTypeString(t *testing.T) {
+ tests := []struct {
+ val AvStringType
+ exp string
+ } {
+ { AnyString, "any" },
+ { NaString, "na" },
+ { ValString, "val" },
+ { AvStringType(255), "AvStringType(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)
+ }
+ })
+ }
+}