From 509c5063d66e8bbef4ec1def1c99c318be51aceb Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Thu, 25 Aug 2016 03:13:39 +0200 Subject: Initial import --- go/gigasecond/gigasecond_test.go | 63 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 go/gigasecond/gigasecond_test.go (limited to 'go/gigasecond/gigasecond_test.go') diff --git a/go/gigasecond/gigasecond_test.go b/go/gigasecond/gigasecond_test.go new file mode 100644 index 0000000..96642cf --- /dev/null +++ b/go/gigasecond/gigasecond_test.go @@ -0,0 +1,63 @@ +package gigasecond + +// Write a function AddGigasecond that works with time.Time. +// Also define a variable Birthday set to your (or someone else's) birthday. +// Run go test -v to see your gigasecond anniversary. + +import ( + "os" + "testing" + "time" +) + +const targetTestVersion = 4 + +// date formats used in test data +const ( + fmtD = "2006-01-02" + fmtDT = "2006-01-02T15:04:05" +) + +func TestAddGigasecond(t *testing.T) { + if testVersion != targetTestVersion { + t.Fatalf("Found testVersion = %v, want %v.", testVersion, targetTestVersion) + } + for _, tc := range addCases { + in := parse(tc.in, t) + want := parse(tc.want, t) + got := AddGigasecond(in) + if !got.Equal(want) { + t.Fatalf(`AddGigasecond(%s) + = %s +want %s`, in, got, want) + } + } + t.Log("Tested", len(addCases), "cases.") +} + +func parse(s string, t *testing.T) time.Time { + tt, err := time.Parse(fmtDT, s) // try full date time format first + if err != nil { + tt, err = time.Parse(fmtD, s) // also allow just date + } + if err != nil { + // can't run tests if input won't parse. if this seems to be a + // development or ci environment, raise an error. if this condition + // makes it to the solver though, ask for a bug report. + _, statErr := os.Stat("example_gen.go") + if statErr == nil || os.Getenv("TRAVIS_GO_VERSION") > "" { + t.Fatal(err) + } else { + t.Log(err) + t.Skip("(Not your problem. " + + "please file issue at https://github.com/exercism/xgo.)") + } + } + return tt +} + +func BenchmarkAddGigasecond(b *testing.B) { + for i := 0; i < b.N; i++ { + AddGigasecond(time.Time{}) + } +} -- cgit v1.2.3