Source file
src/fmt/stringer_test.go
1
2
3
4
5 package fmt_test
6
7 import (
8 . "fmt"
9 "testing"
10 )
11
12 type TI int
13 type TI8 int8
14 type TI16 int16
15 type TI32 int32
16 type TI64 int64
17 type TU uint
18 type TU8 uint8
19 type TU16 uint16
20 type TU32 uint32
21 type TU64 uint64
22 type TUI uintptr
23 type TF float64
24 type TF32 float32
25 type TF64 float64
26 type TB bool
27 type TS string
28
29 func (v TI) String() string { return Sprintf("I: %d", int(v)) }
30 func (v TI8) String() string { return Sprintf("I8: %d", int8(v)) }
31 func (v TI16) String() string { return Sprintf("I16: %d", int16(v)) }
32 func (v TI32) String() string { return Sprintf("I32: %d", int32(v)) }
33 func (v TI64) String() string { return Sprintf("I64: %d", int64(v)) }
34 func (v TU) String() string { return Sprintf("U: %d", uint(v)) }
35 func (v TU8) String() string { return Sprintf("U8: %d", uint8(v)) }
36 func (v TU16) String() string { return Sprintf("U16: %d", uint16(v)) }
37 func (v TU32) String() string { return Sprintf("U32: %d", uint32(v)) }
38 func (v TU64) String() string { return Sprintf("U64: %d", uint64(v)) }
39 func (v TUI) String() string { return Sprintf("UI: %d", uintptr(v)) }
40 func (v TF) String() string { return Sprintf("F: %f", float64(v)) }
41 func (v TF32) String() string { return Sprintf("F32: %f", float32(v)) }
42 func (v TF64) String() string { return Sprintf("F64: %f", float64(v)) }
43 func (v TB) String() string { return Sprintf("B: %t", bool(v)) }
44 func (v TS) String() string { return Sprintf("S: %q", string(v)) }
45
46 func check(t *testing.T, got, want string) {
47 if got != want {
48 t.Error(got, "!=", want)
49 }
50 }
51
52 func TestStringer(t *testing.T) {
53 s := Sprintf("%v %v %v %v %v", TI(0), TI8(1), TI16(2), TI32(3), TI64(4))
54 check(t, s, "I: 0 I8: 1 I16: 2 I32: 3 I64: 4")
55 s = Sprintf("%v %v %v %v %v %v", TU(5), TU8(6), TU16(7), TU32(8), TU64(9), TUI(10))
56 check(t, s, "U: 5 U8: 6 U16: 7 U32: 8 U64: 9 UI: 10")
57 s = Sprintf("%v %v %v", TF(1.0), TF32(2.0), TF64(3.0))
58 check(t, s, "F: 1.000000 F32: 2.000000 F64: 3.000000")
59 s = Sprintf("%v %v", TB(true), TS("x"))
60 check(t, s, "B: true S: \"x\"")
61 }
62
View as plain text