103 lines
2.3 KiB
Go
103 lines
2.3 KiB
Go
package zenity_test
|
|
|
|
import (
|
|
"context"
|
|
"errors"
|
|
"os"
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/ncruces/zenity"
|
|
)
|
|
|
|
const defaultPath = ""
|
|
const defaultName = ""
|
|
|
|
func ExampleSelectFile() {
|
|
zenity.SelectFile(
|
|
zenity.Filename(defaultPath),
|
|
zenity.FileFilters{
|
|
{"Go files", []string{"*.go"}},
|
|
{"Web files", []string{"*.html", "*.js", "*.css"}},
|
|
{"Image files", []string{"*.png", "*.gif", "*.ico", "*.jpg", "*.webp"}},
|
|
})
|
|
// Output:
|
|
}
|
|
|
|
func ExampleSelectFileMutiple() {
|
|
zenity.SelectFileMutiple(
|
|
zenity.Filename(defaultPath),
|
|
zenity.FileFilters{
|
|
{"Go files", []string{"*.go"}},
|
|
{"Web files", []string{"*.html", "*.js", "*.css"}},
|
|
{"Image files", []string{"*.png", "*.gif", "*.ico", "*.jpg", "*.webp"}},
|
|
})
|
|
// Output:
|
|
}
|
|
|
|
func ExampleSelectFileSave() {
|
|
zenity.SelectFileSave(
|
|
zenity.ConfirmOverwrite(),
|
|
zenity.Filename(defaultName),
|
|
zenity.FileFilters{
|
|
{"Go files", []string{"*.go"}},
|
|
{"Web files", []string{"*.html", "*.js", "*.css"}},
|
|
{"Image files", []string{"*.png", "*.gif", "*.ico", "*.jpg", "*.webp"}},
|
|
})
|
|
// Output:
|
|
}
|
|
|
|
func ExampleSelectFile_directory() {
|
|
zenity.SelectFile(
|
|
zenity.Filename(defaultPath),
|
|
zenity.Directory())
|
|
// Output:
|
|
}
|
|
|
|
func ExampleSelectFileMutiple_directory() {
|
|
zenity.SelectFileMutiple(
|
|
zenity.Filename(defaultPath),
|
|
zenity.Directory())
|
|
// Output:
|
|
}
|
|
|
|
var fileFuncs = []func(...zenity.Option) (string, error){
|
|
zenity.SelectFile,
|
|
zenity.SelectFileSave,
|
|
func(o ...zenity.Option) (string, error) {
|
|
return zenity.SelectFile(append(o, zenity.Directory())...)
|
|
},
|
|
func(o ...zenity.Option) (string, error) {
|
|
_, err := zenity.SelectFileMutiple(append(o, zenity.Directory())...)
|
|
return "", err
|
|
},
|
|
func(o ...zenity.Option) (string, error) {
|
|
_, err := zenity.SelectFileMutiple(o...)
|
|
return "", err
|
|
},
|
|
}
|
|
|
|
func TestFileTimeout(t *testing.T) {
|
|
for _, f := range fileFuncs {
|
|
ctx, cancel := context.WithTimeout(context.Background(), time.Second/10)
|
|
|
|
_, err := f(zenity.Context(ctx))
|
|
if !os.IsTimeout(err) {
|
|
t.Error("did not timeout", err)
|
|
}
|
|
|
|
cancel()
|
|
}
|
|
}
|
|
|
|
func TestFileCancel(t *testing.T) {
|
|
ctx, cancel := context.WithCancel(context.Background())
|
|
cancel()
|
|
|
|
for _, f := range fileFuncs {
|
|
_, err := f(zenity.Context(ctx))
|
|
if !errors.Is(err, context.Canceled) {
|
|
t.Error("not canceled", err)
|
|
}
|
|
}
|
|
}
|