mirror of https://github.com/XTLS/Xray-core
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
44 lines
798 B
44 lines
798 B
package common_test |
|
|
|
import ( |
|
"errors" |
|
"testing" |
|
|
|
. "github.com/xtls/xray-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") |
|
} |
|
} |
|
}
|
|
|