summaryrefslogtreecommitdiff
path: root/internal/recordline/recordline_test.go
blob: 4fcc15275e97c59c25b713b309d79b3cc2ea67b0 (plain)
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
package recordline

import (
	"testing"
)

func TestParse(t *testing.T) {
	tests := []struct {
		in   string
		want Fields
		ok   bool
	}{
		{
			"12345:1700000000:Linux 6.5.0-generic",
			Fields{
				Uptime:      12345,
				BootTime:    1700000000,
				OS:          "Linux 6.5.0-generic",
				KernelName:  "Linux",
				KernelMajor: "Linux 6...",
			},
			true,
		},
		{
			"  99:100:FreeBSD 14.0-RELEASE  ",
			Fields{
				Uptime:      99,
				BootTime:    100,
				OS:          "FreeBSD 14.0-RELEASE",
				KernelName:  "FreeBSD",
				KernelMajor: "FreeBSD 14...",
			},
			true,
		},
		{
			"500:200:SingleToken",
			Fields{
				Uptime:      500,
				BootTime:    200,
				OS:          "SingleToken",
				KernelName:  "SingleToken",
				KernelMajor: "SingleToken SingleToken...",
			},
			true,
		},
		{
			"100:200:Linux 6.5.0:extra",
			Fields{
				Uptime:      100,
				BootTime:    200,
				OS:          "Linux 6.5.0:extra",
				KernelName:  "Linux",
				KernelMajor: "Linux 6...",
			},
			true,
		},
		{
			"abc:def:Linux 6.5.0",
			Fields{
				Uptime:      0,
				BootTime:    0,
				OS:          "Linux 6.5.0",
				KernelName:  "Linux",
				KernelMajor: "Linux 6...",
			},
			true,
		},
		{"", Fields{}, false},
		{"   ", Fields{}, false},
		{"only:two", Fields{}, false},
		{"no-colons-at-all", Fields{}, false},
	}
	for _, tt := range tests {
		got, ok := Parse(tt.in)
		if ok != tt.ok {
			t.Errorf("Parse(%q) ok=%v, want %v", tt.in, ok, tt.ok)
			continue
		}
		if tt.ok && got != tt.want {
			t.Errorf("Parse(%q) = %+v, want %+v", tt.in, got, tt.want)
		}
	}
}