# Copyright 2021 The Go Authors. All rights reserved.
# Use of this source code is governed by a BSD-style
# license that can be found in the LICENSE file.
#
# This file contains test scripts for symbol search.

Same symbol appears multiple times in one package.
Foo
Foo gopkg.in/foo.v1
FOO github.com/julieqiu/api-demo
FoO github.com/julieqiu/api-demo
Foo github.com/julieqiu/api-demo

Prefer symbols by popularity, then alphabetically, Add
Add
Float.Add math/big
Int.Add math/big
Rat.Add math/big
Registry.Add github.com/go-openapi/strfmt
Add math/bits

Prefer symbols by package path, then symbol name
# TODO: derank fields and methods; log.Logger.Writer should not
# appear in this list.
Writer
Writer archive/tar
Writer archive/zip
Writer bufio
Writer compress/flate
Writer compress/gzip
Writer compress/zlib
Writer encoding/csv
Writer io
Logger.Writer log
Writer log

Search for package path element and symbol.
math Add
Float.Add math/big
Int.Add math/big
Rat.Add math/big
Add math/bits

Search for package path element with slash and symbol.
math/big Add
Float.Add math/big
Int.Add math/big
Rat.Add math/big

Search for <package path>.<symbol>.
math/big.Float
Float math/big

Search for <package name>.<symbol>.
big.Float
Float math/big

Multi-word search without subpaths
julieqiu foo
FOO github.com/julieqiu/api-demo
FoO github.com/julieqiu/api-demo
Foo github.com/julieqiu/api-demo

Multi-word search with subpaths
github.com/julieqiu foo
FOO github.com/julieqiu/api-demo
FoO github.com/julieqiu/api-demo
Foo github.com/julieqiu/api-demo

Multi-word search with hostname
github.com foo
FOO github.com/julieqiu/api-demo
FoO github.com/julieqiu/api-demo
Foo github.com/julieqiu/api-demo
