mirror of
https://github.com/MontFerret/ferret.git
synced 2024-12-16 11:37:36 +02:00
108 lines
2.5 KiB
Go
108 lines
2.5 KiB
Go
|
package datetime_test
|
||
|
|
||
|
import (
|
||
|
"testing"
|
||
|
|
||
|
"github.com/MontFerret/ferret/pkg/runtime/core"
|
||
|
"github.com/MontFerret/ferret/pkg/runtime/values"
|
||
|
"github.com/MontFerret/ferret/pkg/stdlib/datetime"
|
||
|
)
|
||
|
|
||
|
func TestDateCompare(t *testing.T) {
|
||
|
expectedTrue := values.NewBoolean(true)
|
||
|
expectedFalse := values.NewBoolean(false)
|
||
|
|
||
|
tcs := []*testCase{
|
||
|
&testCase{
|
||
|
Name: "When less than 3 arguments",
|
||
|
Expected: values.None,
|
||
|
Args: []core.Value{values.NewInt(0), values.NewInt(0)},
|
||
|
ShouldErr: true,
|
||
|
},
|
||
|
&testCase{
|
||
|
Name: "When more than 4 arguments",
|
||
|
Expected: values.None,
|
||
|
Args: []core.Value{
|
||
|
values.NewInt(0), values.NewInt(0), values.NewInt(0),
|
||
|
values.NewInt(0), values.NewInt(0),
|
||
|
},
|
||
|
ShouldErr: true,
|
||
|
},
|
||
|
&testCase{
|
||
|
Name: "when wrong type of arguments",
|
||
|
Expected: values.None,
|
||
|
Args: []core.Value{
|
||
|
values.NewCurrentDateTime(),
|
||
|
values.NewCurrentDateTime(),
|
||
|
values.NewInt(0),
|
||
|
},
|
||
|
ShouldErr: true,
|
||
|
},
|
||
|
&testCase{
|
||
|
Name: "when wrong type of optional argument",
|
||
|
Expected: values.None,
|
||
|
Args: []core.Value{
|
||
|
values.NewCurrentDateTime(),
|
||
|
values.NewCurrentDateTime(),
|
||
|
values.NewString("year"),
|
||
|
values.NewInt(0),
|
||
|
},
|
||
|
ShouldErr: true,
|
||
|
},
|
||
|
&testCase{
|
||
|
Name: "when start unit less that end unit",
|
||
|
Expected: values.None,
|
||
|
Args: []core.Value{
|
||
|
values.NewCurrentDateTime(),
|
||
|
values.NewCurrentDateTime(),
|
||
|
values.NewString("day"),
|
||
|
values.NewString("year"),
|
||
|
},
|
||
|
ShouldErr: true,
|
||
|
},
|
||
|
&testCase{
|
||
|
Name: "when years are equal",
|
||
|
Expected: expectedTrue,
|
||
|
Args: []core.Value{
|
||
|
values.NewCurrentDateTime(),
|
||
|
values.NewCurrentDateTime(),
|
||
|
values.NewString("year"),
|
||
|
},
|
||
|
},
|
||
|
&testCase{
|
||
|
Name: "when years are not equal",
|
||
|
Expected: expectedFalse,
|
||
|
Args: []core.Value{
|
||
|
mustLayoutDt("2006-01-02", "1999-02-07"),
|
||
|
mustLayoutDt("2006-01-02", "2000-02-07"),
|
||
|
values.NewString("year"),
|
||
|
values.NewString("year"),
|
||
|
},
|
||
|
},
|
||
|
&testCase{
|
||
|
Name: "when months are equal",
|
||
|
Expected: expectedTrue,
|
||
|
Args: []core.Value{
|
||
|
mustLayoutDt("2006-01-02", "1999-02-07"),
|
||
|
mustLayoutDt("2006-01-02", "2000-02-09"),
|
||
|
values.NewString("year"),
|
||
|
values.NewString("days"),
|
||
|
},
|
||
|
},
|
||
|
&testCase{
|
||
|
Name: "when days are equal",
|
||
|
Expected: expectedTrue,
|
||
|
Args: []core.Value{
|
||
|
values.NewCurrentDateTime(),
|
||
|
values.NewCurrentDateTime(),
|
||
|
values.NewString("days"),
|
||
|
values.NewString("days"),
|
||
|
},
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, tc := range tcs {
|
||
|
tc.Do(t, datetime.DateCompare)
|
||
|
}
|
||
|
}
|