blob: 62e5196dc52581b3aa4ce87819a95974187d71ec [file] [log] [blame]
package report
import (
"testing"
)
func TestPackageName(t *testing.T) {
type testCase struct {
name string
expect string
}
for _, c := range []testCase{
// Unrecognized packages:
{``, ``},
{`name`, ``},
{`[libjvm.so]`, ``},
{`prefix/name/suffix`, ``},
{`prefix(a.b.c,x.y.z)`, ``},
{`<undefined>.a.b`, ``},
{`(a.b)`, ``},
// C++ symbols:
{`Math.number`, `Math`},
{`std::vector`, `std`},
{`std::internal::vector`, `std`},
// Java symbols:
{`pkg.Class.name`, `pkg`},
{`pkg.pkg.Class.name`, `pkg`},
{`pkg.Class.name(a.b.c, x.y.z)`, `pkg`},
{`pkg.pkg.Class.<init>`, `pkg`},
{`pkg.pkg.Class.<init>(a.b.c, x.y.z)`, `pkg`},
// Go symbols:
{`pkg.name`, `pkg`},
{`pkg.(*type).name`, `pkg`},
{`path/pkg.name`, `path/pkg`},
{`path/pkg.(*type).name`, `path/pkg`},
{`path/path/pkg.name`, `path/path/pkg`},
{`path/path/pkg.(*type).name`, `path/path/pkg`},
{`some.url.com/path/pkg.fnID`, `some.url.com/path/pkg`},
{`parent-dir/dir/google.golang.org/grpc/transport.NewFramer`, `parent-dir/dir/google.golang.org/grpc/transport`},
{`parent-dir/dir/google.golang.org/grpc.(*Server).handleRawConn`, `parent-dir/dir/google.golang.org/grpc`},
} {
t.Run(c.name, func(t *testing.T) {
if got := packageName(c.name); got != c.expect {
t.Errorf("packageName(%q) = %#v, expecting %#v", c.name, got, c.expect)
}
})
}
}