File: common_test.go

package info (click to toggle)
golang-v2ray-core 4.34.0%2Bds-5
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 5,100 kB
  • sloc: sh: 404; makefile: 50; asm: 38
file content (44 lines) | stat: -rw-r--r-- 787 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
package common_test

import (
	"errors"
	"testing"

	. "v2ray.com/core/common"
)

func TestMust(t *testing.T) {
	hasPanic := func(f func()) (ret bool) {
		defer func() {
			if r := recover(); r != nil {
				ret = true
			}
		}()
		f()
		return false
	}

	testCases := []struct {
		Input func()
		Panic bool
	}{
		{
			Panic: true,
			Input: func() { Must(func() error { return errors.New("test error") }()) },
		},
		{
			Panic: true,
			Input: func() { Must2(func() (int, error) { return 0, errors.New("test error") }()) },
		},
		{
			Panic: false,
			Input: func() { Must(func() error { return nil }()) },
		},
	}

	for idx, test := range testCases {
		if hasPanic(test.Input) != test.Panic {
			t.Error("test case #", idx, " expect panic ", test.Panic, " but actually not")
		}
	}
}