tracktime

Small utility for tracking working hours in a plain text file

git clone https://git.8pit.net/tracktime.git

 1package parser
 2
 3import (
 4	"testing"
 5	"time"
 6)
 7
 8const inputLayout = "02.01.2006"
 9const outputLayout = time.RFC822
10
11func getTime(t *testing.T, input string) time.Time {
12	ti, err := time.Parse(outputLayout, input)
13	if err != nil {
14		t.Fatal(err)
15	}
16
17	return ti
18}
19
20func getDur(t *testing.T, input string) time.Duration {
21	d, err := time.ParseDuration(input)
22	if err != nil {
23		t.Fatal(err)
24	}
25
26	return d
27}
28
29func TestParseEntryPositive(t *testing.T) {
30	type TestCase struct {
31		Input  string
32		Result *Entry
33	}
34
35	tests := []TestCase{
36		{
37			"24.12.2010	1000	1500	Foobar",
38			&Entry{getTime(t, "24 Dec 10 10:00 UTC"), getDur(t, "5h"), "Foobar"},
39		},
40		{
41			"01.05.1992	1012	1013	foo.",
42			&Entry{getTime(t, "01 May 92 10:12 UTC"), getDur(t, "1m"), "foo."},
43		},
44		{
45			"13.12.2023	2112	2342	bla",
46			&Entry{getTime(t, "13 Dec 23 21:12 UTC"), getDur(t, "2h30m"), "bla"},
47		},
48		{
49			"02.06.2042	1259	2359	foo bar baz",
50			&Entry{getTime(t, "02 Jun 42 12:59 UTC"), getDur(t, "11h"), "foo bar baz"},
51		},
52	}
53
54	parser := NewParser(inputLayout)
55	for _, test := range tests {
56		entry, err := parser.parseEntry(test.Input)
57		if err != nil {
58			t.Fatal(err)
59		}
60
61		if *entry != *test.Result {
62			t.Fatalf("Expected %v - got %v", test.Result, entry)
63		}
64	}
65}