mirror of
https://github.com/MontFerret/ferret.git
synced 2025-07-15 01:25:00 +02:00
Feature/#8 datetime (#153)
This commit is contained in:
65
pkg/stdlib/datetime/helpers_test.go
Normal file
65
pkg/stdlib/datetime/helpers_test.go
Normal file
@ -0,0 +1,65 @@
|
||||
package datetime_test
|
||||
|
||||
import (
|
||||
"context"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"github.com/MontFerret/ferret/pkg/runtime/core"
|
||||
"github.com/MontFerret/ferret/pkg/runtime/values"
|
||||
|
||||
. "github.com/smartystreets/goconvey/convey"
|
||||
)
|
||||
|
||||
type testCase struct {
|
||||
Name string
|
||||
Expected core.Value
|
||||
TimeArg time.Time
|
||||
Args []core.Value
|
||||
ShouldErr bool
|
||||
}
|
||||
|
||||
func (tc *testCase) Do(t *testing.T, fn core.Function) {
|
||||
Convey(tc.Name, t, func() {
|
||||
expected := tc.Expected
|
||||
|
||||
actual, err := fn(context.Background(), tc.Args...)
|
||||
|
||||
if tc.ShouldErr {
|
||||
So(err, ShouldBeError)
|
||||
expected = values.None
|
||||
} else {
|
||||
So(err, ShouldBeNil)
|
||||
}
|
||||
|
||||
So(actual.Compare(expected), ShouldEqual, 0)
|
||||
})
|
||||
}
|
||||
|
||||
func mustDefaultLayoutDt(timeString string) values.DateTime {
|
||||
dt, err := defaultLayoutDt(timeString)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
return dt
|
||||
}
|
||||
|
||||
func mustLayoutDt(layout, value string) values.DateTime {
|
||||
dt, err := layoutDt(layout, value)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
return dt
|
||||
}
|
||||
|
||||
func defaultLayoutDt(timeString string) (values.DateTime, error) {
|
||||
return layoutDt(values.DefaultTimeLayout, timeString)
|
||||
}
|
||||
|
||||
func layoutDt(layout, value string) (values.DateTime, error) {
|
||||
t, err := time.Parse(layout, value)
|
||||
if err != nil {
|
||||
return values.DateTime{}, err
|
||||
}
|
||||
return values.NewDateTime(t), nil
|
||||
}
|
Reference in New Issue
Block a user