# 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.
[symbol] 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
[symbol] Add
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.
[symbol] Writer
Writer archive/tar
Writer archive/zip
Writer bufio
Writer compress/flate
Writer compress/gzip
Writer compress/zlib
Writer encoding/csv
Writer io
Writer log

Search for package path element and symbol.
[symbol] math Add
Add math/bits

Search for package path element with slash and symbol.
[symbol] math/big Float
Float math/big

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

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

Multi-word search without subpaths
[symbol] 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
[symbol] 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
[symbol] github.com foo
FOO github.com/julieqiu/api-demo
FoO github.com/julieqiu/api-demo
Foo github.com/julieqiu/api-demo

Multi-word three word search
[symbol] bee cmd command
Command github.com/beego/bee/cmd/commands
