reflect_test.go 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. package formatter
  2. import (
  3. "reflect"
  4. "testing"
  5. )
  6. type dummy struct {
  7. }
  8. func (d *dummy) Func1() string {
  9. return "Func1"
  10. }
  11. func (d *dummy) func2() string {
  12. return "func2(should not be marshalled)"
  13. }
  14. func (d *dummy) Func3() (string, int) {
  15. return "Func3(should not be marshalled)", -42
  16. }
  17. func (d *dummy) Func4() int {
  18. return 4
  19. }
  20. type dummyType string
  21. func (d *dummy) Func5() dummyType {
  22. return dummyType("Func5")
  23. }
  24. func (d *dummy) FullHeader() string {
  25. return "FullHeader(should not be marshalled)"
  26. }
  27. var dummyExpected = map[string]interface{}{
  28. "Func1": "Func1",
  29. "Func4": 4,
  30. "Func5": dummyType("Func5"),
  31. }
  32. func TestMarshalMap(t *testing.T) {
  33. d := dummy{}
  34. m, err := marshalMap(&d)
  35. if err != nil {
  36. t.Fatal(err)
  37. }
  38. if !reflect.DeepEqual(dummyExpected, m) {
  39. t.Fatalf("expected %+v, got %+v",
  40. dummyExpected, m)
  41. }
  42. }
  43. func TestMarshalMapBad(t *testing.T) {
  44. if _, err := marshalMap(nil); err == nil {
  45. t.Fatal("expected an error (argument is nil)")
  46. }
  47. if _, err := marshalMap(dummy{}); err == nil {
  48. t.Fatal("expected an error (argument is non-pointer)")
  49. }
  50. x := 42
  51. if _, err := marshalMap(&x); err == nil {
  52. t.Fatal("expected an error (argument is a pointer to non-struct)")
  53. }
  54. }