123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- package assertions
- import (
- "encoding/json"
- "fmt"
- "github.com/smartystreets/assertions/internal/go-render/render"
- )
- type Serializer interface {
- serialize(expected, actual interface{}, message string) string
- serializeDetailed(expected, actual interface{}, message string) string
- }
- type failureSerializer struct{}
- func (self *failureSerializer) serializeDetailed(expected, actual interface{}, message string) string {
- view := FailureView{
- Message: message,
- Expected: render.Render(expected),
- Actual: render.Render(actual),
- }
- serialized, err := json.Marshal(view)
- if err != nil {
- return message
- }
- return string(serialized)
- }
- func (self *failureSerializer) serialize(expected, actual interface{}, message string) string {
- view := FailureView{
- Message: message,
- Expected: fmt.Sprintf("%+v", expected),
- Actual: fmt.Sprintf("%+v", actual),
- }
- serialized, err := json.Marshal(view)
- if err != nil {
- return message
- }
- return string(serialized)
- }
- func newSerializer() *failureSerializer {
- return &failureSerializer{}
- }
- ///////////////////////////////////////////////////////////////////////////////
- // This struct is also declared in github.com/smartystreets/goconvey/convey/reporting.
- // The json struct tags should be equal in both declarations.
- type FailureView struct {
- Message string `json:"Message"`
- Expected string `json:"Expected"`
- Actual string `json:"Actual"`
- }
- ///////////////////////////////////////////////////////
- // noopSerializer just gives back the original message. This is useful when we are using
- // the assertions from a context other than the web UI, that requires the JSON structure
- // provided by the failureSerializer.
- type noopSerializer struct{}
- func (self *noopSerializer) serialize(expected, actual interface{}, message string) string {
- return message
- }
- func (self *noopSerializer) serializeDetailed(expected, actual interface{}, message string) string {
- return message
- }
|