2018-11-01 02:26:36 +03:00
|
|
|
package datetime_test
|
|
|
|
|
|
|
|
import (
|
|
|
|
"testing"
|
2022-01-02 23:40:42 -05:00
|
|
|
"time"
|
2018-11-01 02:26:36 +03:00
|
|
|
|
|
|
|
"github.com/MontFerret/ferret/pkg/runtime/core"
|
|
|
|
"github.com/MontFerret/ferret/pkg/runtime/values"
|
|
|
|
|
|
|
|
"github.com/MontFerret/ferret/pkg/stdlib/datetime"
|
|
|
|
)
|
|
|
|
|
|
|
|
func TestDate(t *testing.T) {
|
2022-01-02 23:40:42 -05:00
|
|
|
now := time.Now()
|
|
|
|
|
2018-11-01 02:26:36 +03:00
|
|
|
tcs := []*testCase{
|
2022-01-02 23:40:42 -05:00
|
|
|
{
|
|
|
|
Name: "When more than 2 arguments",
|
2018-11-01 02:26:36 +03:00
|
|
|
Expected: values.None,
|
|
|
|
Args: []core.Value{
|
2022-01-02 23:40:42 -05:00
|
|
|
values.NewString(time.Now().Format(time.RFC3339)),
|
|
|
|
values.NewString(time.RFC3339),
|
|
|
|
values.NewString("foo"),
|
2018-11-01 02:26:36 +03:00
|
|
|
},
|
|
|
|
ShouldErr: true,
|
|
|
|
},
|
2022-01-02 23:40:42 -05:00
|
|
|
{
|
2018-11-01 02:26:36 +03:00
|
|
|
Name: "When 0 arguments",
|
|
|
|
Expected: values.None,
|
|
|
|
Args: []core.Value{},
|
|
|
|
ShouldErr: true,
|
|
|
|
},
|
2022-01-02 23:40:42 -05:00
|
|
|
{
|
|
|
|
Name: "When first argument isn't string",
|
2018-11-05 22:48:00 +03:00
|
|
|
Expected: values.None,
|
|
|
|
Args: []core.Value{values.NewInt(0)},
|
|
|
|
ShouldErr: true,
|
|
|
|
},
|
2022-01-02 23:40:42 -05:00
|
|
|
{
|
2018-11-01 02:26:36 +03:00
|
|
|
Name: "When incorrect timeStrings",
|
|
|
|
Expected: values.None,
|
|
|
|
Args: []core.Value{
|
|
|
|
values.NewString("bla-bla"),
|
|
|
|
},
|
|
|
|
ShouldErr: true,
|
|
|
|
},
|
2022-01-02 23:40:42 -05:00
|
|
|
{
|
|
|
|
Name: "When string is in default format",
|
2018-11-01 02:26:36 +03:00
|
|
|
Expected: mustDefaultLayoutDt("1999-02-07T15:04:05Z"),
|
|
|
|
Args: []core.Value{
|
|
|
|
values.NewString("1999-02-07T15:04:05Z"),
|
|
|
|
},
|
|
|
|
},
|
2022-01-02 23:40:42 -05:00
|
|
|
{
|
|
|
|
Name: "When second argument isn't string",
|
|
|
|
Expected: values.None,
|
|
|
|
Args: []core.Value{
|
|
|
|
values.NewString("1999-02-07T15:04:05Z"),
|
|
|
|
values.NewInt(1),
|
|
|
|
},
|
|
|
|
ShouldErr: true,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
Name: "When string is in custom format",
|
|
|
|
Expected: mustLayoutDt(time.RFC822, now.Format(time.RFC822)),
|
|
|
|
Args: []core.Value{
|
|
|
|
values.NewString(now.Format(time.RFC822)),
|
|
|
|
values.NewString(time.RFC822),
|
|
|
|
},
|
|
|
|
ShouldErr: false,
|
|
|
|
},
|
2018-11-01 02:26:36 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
for _, tc := range tcs {
|
|
|
|
tc.Do(t, datetime.Date)
|
|
|
|
}
|
|
|
|
}
|