--- /dev/null
+// Copyright (C) 2021 Simon Ruderich
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+package main
+
+import (
+ "reflect"
+ "testing"
+
+ "github.com/google/go-cmp/cmp"
+
+ "ruderich.org/simon/safcm"
+)
+
+func TestHostInfoRespToGroups(t *testing.T) {
+ tests := []struct {
+ name string
+ resp safcm.MsgInfoResp
+ exp []string
+ }{
+
+ {
+ "no output",
+ safcm.MsgInfoResp{
+ Goos: "linux",
+ Goarch: "amd64",
+ Output: nil,
+ },
+ []string{
+ "detected_linux",
+ "detected_amd64",
+ },
+ },
+
+ {
+ "output",
+ safcm.MsgInfoResp{
+ Goos: "linux",
+ Goarch: "amd64",
+ Output: []string{
+ "simple",
+ "with spaces",
+ "with UPPERcase",
+ "with UTF-8: Hello, 世界",
+ },
+ },
+ []string{
+ "detected_linux",
+ "detected_amd64",
+ "detected_simple",
+ "detected_with_spaces",
+ "detected_with_uppercase",
+ "detected_with_utf-8_hello_",
+ },
+ },
+ }
+
+ for _, tc := range tests {
+ res := hostInfoRespToGroups(tc.resp)
+ if !reflect.DeepEqual(tc.exp, res) {
+ t.Errorf("%s: res: %s", tc.name,
+ cmp.Diff(tc.exp, res))
+ }
+ }
+}