github.com/ice-blockchain/go/src@v0.0.0-20240403114104-1564d284e521/runtime/panic_test.go (about) 1 // Copyright 2020 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 runtime_test 6 7 import ( 8 "strings" 9 "testing" 10 ) 11 12 // Test that panics print out the underlying value 13 // when the underlying kind is directly printable. 14 // Issue: https://golang.org/issues/37531 15 func TestPanicWithDirectlyPrintableCustomTypes(t *testing.T) { 16 tests := []struct { 17 name string 18 wantPanicPrefix string 19 }{ 20 {"panicCustomBool", `panic: main.MyBool(true)`}, 21 {"panicCustomComplex128", `panic: main.MyComplex128(+3.210000e+001+1.000000e+001i)`}, 22 {"panicCustomComplex64", `panic: main.MyComplex64(+1.100000e-001+3.000000e+000i)`}, 23 {"panicCustomFloat32", `panic: main.MyFloat32(-9.370000e+001)`}, 24 {"panicCustomFloat64", `panic: main.MyFloat64(-9.370000e+001)`}, 25 {"panicCustomInt", `panic: main.MyInt(93)`}, 26 {"panicCustomInt8", `panic: main.MyInt8(93)`}, 27 {"panicCustomInt16", `panic: main.MyInt16(93)`}, 28 {"panicCustomInt32", `panic: main.MyInt32(93)`}, 29 {"panicCustomInt64", `panic: main.MyInt64(93)`}, 30 {"panicCustomString", `panic: main.MyString("Panic")`}, 31 {"panicCustomUint", `panic: main.MyUint(93)`}, 32 {"panicCustomUint8", `panic: main.MyUint8(93)`}, 33 {"panicCustomUint16", `panic: main.MyUint16(93)`}, 34 {"panicCustomUint32", `panic: main.MyUint32(93)`}, 35 {"panicCustomUint64", `panic: main.MyUint64(93)`}, 36 {"panicCustomUintptr", `panic: main.MyUintptr(93)`}, 37 } 38 39 for _, tt := range tests { 40 t := t 41 t.Run(tt.name, func(t *testing.T) { 42 output := runTestProg(t, "testprog", tt.name) 43 if !strings.HasPrefix(output, tt.wantPanicPrefix) { 44 t.Fatalf("%q\nis not present in\n%s", tt.wantPanicPrefix, output) 45 } 46 }) 47 } 48 }