mirror of
https://github.com/MontFerret/ferret.git
synced 2025-03-19 21:28:32 +02:00
224 lines
6.1 KiB
Go
224 lines
6.1 KiB
Go
|
package testing_test
|
||
|
|
||
|
import (
|
||
|
"context"
|
||
|
"github.com/MontFerret/ferret/pkg/stdlib/testing/base"
|
||
|
t "testing"
|
||
|
|
||
|
. "github.com/smartystreets/goconvey/convey"
|
||
|
|
||
|
"github.com/MontFerret/ferret/pkg/runtime/core"
|
||
|
"github.com/MontFerret/ferret/pkg/runtime/values"
|
||
|
"github.com/MontFerret/ferret/pkg/stdlib/testing"
|
||
|
)
|
||
|
|
||
|
func TestLen(t *t.T) {
|
||
|
Len := base.NewPositiveAssertion(testing.Len)
|
||
|
|
||
|
Convey("When arg is not passed", t, func() {
|
||
|
Convey("It should return an error", func() {
|
||
|
_, err := Len(context.Background())
|
||
|
|
||
|
So(err, ShouldBeError)
|
||
|
|
||
|
_, err = Len(context.Background(), values.NewInt(1))
|
||
|
|
||
|
So(err, ShouldBeError)
|
||
|
})
|
||
|
})
|
||
|
|
||
|
Convey("When arg are not measurable", t, func() {
|
||
|
Convey("It should return an error", func() {
|
||
|
_, err := Len(context.Background(), values.NewInt(1), values.NewInt(1))
|
||
|
|
||
|
So(err, ShouldBeError)
|
||
|
})
|
||
|
})
|
||
|
|
||
|
Convey("When arg is a string", t, func() {
|
||
|
Convey("When 'Foo' should have length 1", func() {
|
||
|
Convey("It should return an error", func() {
|
||
|
_, err := Len(context.Background(), values.NewString("Foo"), values.NewInt(1))
|
||
|
|
||
|
So(err, ShouldBeError)
|
||
|
So(err.Error(), ShouldEqual, core.Error(base.ErrAssertion, "expected [string] 'Foo' to has size 1").Error())
|
||
|
})
|
||
|
})
|
||
|
|
||
|
Convey("When 'Foo' should have length 3", func() {
|
||
|
Convey("It should not return an error", func() {
|
||
|
_, err := Len(context.Background(), values.NewString("Foo"), values.NewInt(3))
|
||
|
|
||
|
So(err, ShouldBeNil)
|
||
|
})
|
||
|
})
|
||
|
})
|
||
|
|
||
|
Convey("When arg is an array", t, func() {
|
||
|
Convey("When [1,2,3] should have length 1", func() {
|
||
|
Convey("It should return an error", func() {
|
||
|
_, err := Len(
|
||
|
context.Background(),
|
||
|
values.NewArrayWith(values.NewInt(1), values.NewInt(2), values.NewInt(3)),
|
||
|
values.NewInt(1),
|
||
|
)
|
||
|
|
||
|
So(err, ShouldBeError)
|
||
|
So(err.Error(), ShouldEqual, core.Error(base.ErrAssertion, "expected [array] '[1,2,3]' to has size 1").Error())
|
||
|
})
|
||
|
})
|
||
|
|
||
|
Convey("When [1,2,3] should have length 3", func() {
|
||
|
Convey("It should not return an error", func() {
|
||
|
_, err := Len(
|
||
|
context.Background(),
|
||
|
values.NewArrayWith(values.NewInt(1), values.NewInt(2), values.NewInt(3)),
|
||
|
values.NewInt(3),
|
||
|
)
|
||
|
|
||
|
So(err, ShouldBeNil)
|
||
|
})
|
||
|
})
|
||
|
})
|
||
|
|
||
|
Convey("When arg is an object", t, func() {
|
||
|
Convey("When { a: 1, b: 2, c: 3 } should have length 1", func() {
|
||
|
Convey("It should return an error", func() {
|
||
|
_, err := Len(
|
||
|
context.Background(),
|
||
|
values.NewObjectWith(
|
||
|
values.NewObjectProperty("a", values.NewInt(1)),
|
||
|
values.NewObjectProperty("b", values.NewInt(2)),
|
||
|
values.NewObjectProperty("c", values.NewInt(3)),
|
||
|
),
|
||
|
values.NewInt(1),
|
||
|
)
|
||
|
|
||
|
So(err, ShouldBeError)
|
||
|
So(err.Error(), ShouldEqual, core.Error(base.ErrAssertion, "expected [object] '{\"a\":1,\"b\":2,\"c\":3}' to has size 1").Error())
|
||
|
})
|
||
|
})
|
||
|
|
||
|
Convey("When [1,2,3] should have length 3", func() {
|
||
|
Convey("It should not return an error", func() {
|
||
|
_, err := Len(
|
||
|
context.Background(),
|
||
|
values.NewObjectWith(
|
||
|
values.NewObjectProperty("a", values.NewInt(1)),
|
||
|
values.NewObjectProperty("b", values.NewInt(2)),
|
||
|
values.NewObjectProperty("c", values.NewInt(3)),
|
||
|
),
|
||
|
values.NewInt(3),
|
||
|
)
|
||
|
|
||
|
So(err, ShouldBeNil)
|
||
|
})
|
||
|
})
|
||
|
})
|
||
|
}
|
||
|
|
||
|
func TestNotLen(t *t.T) {
|
||
|
NotLen := base.NewNegativeAssertion(testing.Len)
|
||
|
|
||
|
Convey("When arg is not passed", t, func() {
|
||
|
Convey("It should return an error", func() {
|
||
|
_, err := NotLen(context.Background())
|
||
|
|
||
|
So(err, ShouldBeError)
|
||
|
|
||
|
_, err = NotLen(context.Background(), values.NewInt(1))
|
||
|
|
||
|
So(err, ShouldBeError)
|
||
|
})
|
||
|
})
|
||
|
|
||
|
Convey("When arg are not measurable", t, func() {
|
||
|
Convey("It should return an error", func() {
|
||
|
_, err := NotLen(context.Background(), values.NewInt(1), values.NewInt(1))
|
||
|
|
||
|
So(err, ShouldBeError)
|
||
|
})
|
||
|
})
|
||
|
|
||
|
Convey("When arg is a string", t, func() {
|
||
|
Convey("When 'Foo' should not have length 1", func() {
|
||
|
Convey("It should not return an error", func() {
|
||
|
_, err := NotLen(context.Background(), values.NewString("Foo"), values.NewInt(1))
|
||
|
|
||
|
So(err, ShouldBeNil)
|
||
|
})
|
||
|
})
|
||
|
|
||
|
Convey("When 'Foo' should not have length 3", func() {
|
||
|
Convey("It should return an error", func() {
|
||
|
_, err := NotLen(context.Background(), values.NewString("Foo"), values.NewInt(3))
|
||
|
|
||
|
So(err, ShouldBeError)
|
||
|
So(err.Error(), ShouldEqual, core.Error(base.ErrAssertion, "expected [string] 'Foo' not to has size 3").Error())
|
||
|
})
|
||
|
})
|
||
|
})
|
||
|
|
||
|
Convey("When arg is an array", t, func() {
|
||
|
Convey("When [1,2,3] should not have length 1", func() {
|
||
|
Convey("It should not return an error", func() {
|
||
|
_, err := NotLen(
|
||
|
context.Background(),
|
||
|
values.NewArrayWith(values.NewInt(1), values.NewInt(2), values.NewInt(3)),
|
||
|
values.NewInt(1),
|
||
|
)
|
||
|
|
||
|
So(err, ShouldBeNil)
|
||
|
})
|
||
|
})
|
||
|
|
||
|
Convey("When [1,2,3] should have length 3", func() {
|
||
|
Convey("It should return an error", func() {
|
||
|
_, err := NotLen(
|
||
|
context.Background(),
|
||
|
values.NewArrayWith(values.NewInt(1), values.NewInt(2), values.NewInt(3)),
|
||
|
values.NewInt(3),
|
||
|
)
|
||
|
|
||
|
So(err, ShouldBeError)
|
||
|
So(err.Error(), ShouldEqual, core.Error(base.ErrAssertion, "expected [array] '[1,2,3]' not to has size 3").Error())
|
||
|
})
|
||
|
})
|
||
|
})
|
||
|
|
||
|
Convey("When arg is an object", t, func() {
|
||
|
Convey("When { a: 1, b: 2, c: 3 } should have length 1", func() {
|
||
|
Convey("It should not return an error", func() {
|
||
|
_, err := NotLen(
|
||
|
context.Background(),
|
||
|
values.NewObjectWith(
|
||
|
values.NewObjectProperty("a", values.NewInt(1)),
|
||
|
values.NewObjectProperty("b", values.NewInt(2)),
|
||
|
values.NewObjectProperty("c", values.NewInt(3)),
|
||
|
),
|
||
|
values.NewInt(1),
|
||
|
)
|
||
|
|
||
|
So(err, ShouldBeNil)
|
||
|
})
|
||
|
})
|
||
|
|
||
|
Convey("When [1,2,3] should have length 3", func() {
|
||
|
Convey("It should not return an error", func() {
|
||
|
_, err := NotLen(
|
||
|
context.Background(),
|
||
|
values.NewObjectWith(
|
||
|
values.NewObjectProperty("a", values.NewInt(1)),
|
||
|
values.NewObjectProperty("b", values.NewInt(2)),
|
||
|
values.NewObjectProperty("c", values.NewInt(3)),
|
||
|
),
|
||
|
values.NewInt(3),
|
||
|
)
|
||
|
|
||
|
So(err, ShouldBeError)
|
||
|
So(err.Error(), ShouldEqual, core.Error(base.ErrAssertion, "expected [object] '{\"a\":1,\"b\":2,\"c\":3}' not to has size 3").Error())
|
||
|
})
|
||
|
})
|
||
|
})
|
||
|
}
|