1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/gqlengine-gqlengine

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
scalar_test.go 2.2 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Kevin Chen Отправлено 24.02.2020 17:00 1546cd7
package gqlengine
import (
"testing"
)
type CustomIntScalar int
func (c *CustomIntScalar) GraphQLScalarSerialize() interface{} {
return int(*c)
}
func (c *CustomIntScalar) GraphQLScalarParseValue(value interface{}) {
*c = CustomIntScalar(value.(int))
}
func (c *CustomIntScalar) GraphQLScalarDescription() string {
return "custom int scalar"
}
type CustomStringScalar string
func (c *CustomStringScalar) GraphQLScalarSerialize() interface{} {
return string(*c)
}
func (c *CustomStringScalar) GraphQLScalarParseValue(value interface{}) {
*c = CustomStringScalar(value.(string))
}
func (c *CustomStringScalar) GraphQLScalarDescription() string {
return "custom string scalar"
}
type CustomStructScalar struct {
intField int
}
func (c *CustomStructScalar) GraphQLScalarSerialize() interface{} {
return c.intField
}
func (c *CustomStructScalar) GraphQLScalarParseValue(value interface{}) {
c.intField = value.(int)
}
func (c *CustomStructScalar) GraphQLScalarDescription() string {
return "custom string scalar"
}
func TestScalar(t *testing.T) {
engine := NewEngine(Options{})
scalar, err := engine.RegisterScalar(CustomIntScalar(0))
if err != nil {
t.Fatal(err)
}
if scalar.Serialize(CustomIntScalar(1)) != 1 {
t.Fatal("serialize scalar failed")
}
intValue := scalar.ParseValue(1).(*CustomIntScalar)
if *intValue != CustomIntScalar(1) {
t.Fatal("parseValue failed")
}
scalar, err = engine.RegisterScalar(CustomStringScalar(""))
if err != nil {
t.Fatal(err)
}
if scalar.Serialize(CustomStringScalar("any word")) != "any word" {
t.Fatal("serialize scalar string")
}
stringValue := scalar.ParseValue("text").(*CustomStringScalar)
if *stringValue != CustomStringScalar("text") {
t.Fatal("parseValue failed")
}
scalar, err = engine.RegisterScalar(CustomStructScalar{0})
if err != nil {
if err.Error() != "struct-based scalar contains unexported field, may not be serialized" {
t.Fatal(err)
}
} else {
if result := scalar.Serialize(CustomStructScalar{1}); result != 1 {
t.Errorf("serialize expect 1 but %d", result)
}
structValue := scalar.ParseValue(-1).(*CustomStructScalar)
if structValue.intField != -1 {
t.Fatal("parseValue failed")
}
}
}

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/gqlengine-gqlengine.git
git@api.gitlife.ru:oschina-mirror/gqlengine-gqlengine.git
oschina-mirror
gqlengine-gqlengine
gqlengine-gqlengine
master