stringer_test.go 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. // Copyright 2010 The Go Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style
  3. // license that can be found in the LICENSE file.
  4. package fmt_test
  5. import (
  6. . "fmt"
  7. "testing"
  8. )
  9. type TI int
  10. type TI8 int8
  11. type TI16 int16
  12. type TI32 int32
  13. type TI64 int64
  14. type TU uint
  15. type TU8 uint8
  16. type TU16 uint16
  17. type TU32 uint32
  18. type TU64 uint64
  19. type TUI uintptr
  20. type TF float64
  21. type TF32 float32
  22. type TF64 float64
  23. type TB bool
  24. type TS string
  25. func (v TI) String() string { return Sprintf("I: %d", int(v)) }
  26. func (v TI8) String() string { return Sprintf("I8: %d", int8(v)) }
  27. func (v TI16) String() string { return Sprintf("I16: %d", int16(v)) }
  28. func (v TI32) String() string { return Sprintf("I32: %d", int32(v)) }
  29. func (v TI64) String() string { return Sprintf("I64: %d", int64(v)) }
  30. func (v TU) String() string { return Sprintf("U: %d", uint(v)) }
  31. func (v TU8) String() string { return Sprintf("U8: %d", uint8(v)) }
  32. func (v TU16) String() string { return Sprintf("U16: %d", uint16(v)) }
  33. func (v TU32) String() string { return Sprintf("U32: %d", uint32(v)) }
  34. func (v TU64) String() string { return Sprintf("U64: %d", uint64(v)) }
  35. func (v TUI) String() string { return Sprintf("UI: %d", uintptr(v)) }
  36. func (v TF) String() string { return Sprintf("F: %f", float64(v)) }
  37. func (v TF32) String() string { return Sprintf("F32: %f", float32(v)) }
  38. func (v TF64) String() string { return Sprintf("F64: %f", float64(v)) }
  39. func (v TB) String() string { return Sprintf("B: %t", bool(v)) }
  40. func (v TS) String() string { return Sprintf("S: %q", string(v)) }
  41. func check(t *testing.T, got, want string) {
  42. if got != want {
  43. t.Error(got, "!=", want)
  44. }
  45. }
  46. func TestStringer(t *testing.T) {
  47. s := Sprintf("%v %v %v %v %v", TI(0), TI8(1), TI16(2), TI32(3), TI64(4))
  48. check(t, s, "I: 0 I8: 1 I16: 2 I32: 3 I64: 4")
  49. s = Sprintf("%v %v %v %v %v %v", TU(5), TU8(6), TU16(7), TU32(8), TU64(9), TUI(10))
  50. check(t, s, "U: 5 U8: 6 U16: 7 U32: 8 U64: 9 UI: 10")
  51. s = Sprintf("%v %v %v", TF(1.0), TF32(2.0), TF64(3.0))
  52. check(t, s, "F: 1.000000 F32: 2.000000 F64: 3.000000")
  53. s = Sprintf("%v %v", TB(true), TS("x"))
  54. check(t, s, "B: true S: \"x\"")
  55. }