Home | History | Annotate | Download | only in fmt
      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 
      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