Skip to content

Commit

Permalink
Add tests for file dialog filtering.
Browse files Browse the repository at this point in the history
  • Loading branch information
okratitan committed May 26, 2020
1 parent f42b46b commit 014cb9a
Show file tree
Hide file tree
Showing 5 changed files with 59 additions and 0 deletions.
1 change: 1 addition & 0 deletions dialog/file.go
Original file line number Diff line number Diff line change
Expand Up @@ -308,6 +308,7 @@ func showFileDialog(save bool, callback interface{}, parent fyne.Window, filter
func (fd *FileDialog) SetFilter(filter FileFilter) {
fd.filter = filter
if fd.dialog != nil {
fd.dialog.filter = filter
fd.dialog.refreshDir(fd.dialog.dir)
}
}
Expand Down
55 changes: 55 additions & 0 deletions dialog/file_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,13 @@ import (
"log"
"os"
"path/filepath"
"strings"
"testing"

"github.com/stretchr/testify/assert"

"fyne.io/fyne"
"fyne.io/fyne/storage"
"fyne.io/fyne/test"
"fyne.io/fyne/widget"
)
Expand Down Expand Up @@ -133,3 +135,56 @@ func TestShowFileSave(t *testing.T) {
err = os.Remove(expectedPath)
assert.Nil(t, err)
}

func TestFileFilters(t *testing.T) {
win := test.NewWindow(widget.NewLabel("Content"))
fd := NewFileOpenDialog(func(file fyne.FileReadCloser, err error) {
}, win)

fd.SetFilter(NewExtensionFileFilter([]string{".png"}))
fd.Show()

workingDir, err := os.Getwd()
if err != nil {
fyne.LogError("Could not get current working directory", err)
t.FailNow()
}
testDataDir := filepath.Join(workingDir, "testdata")

fd.dialog.setDirectory(testDataDir)

count := 0
for _, icon := range fd.dialog.files.Objects {
if icon.(*fileDialogItem).dir == false {
uri := storage.NewURI(icon.(*fileDialogItem).path)
assert.Equal(t, uri.Extension(), ".png")
count++
}
}
assert.Equal(t, count, 1)

fd.SetFilter(NewMimeTypeFileFilter([]string{"image/jpeg"}))

count = 0
for _, icon := range fd.dialog.files.Objects {
if icon.(*fileDialogItem).dir == false {
uri := storage.NewURI(icon.(*fileDialogItem).path)
assert.Equal(t, uri.MimeType(), "image/jpeg")
count++
}
}
assert.Equal(t, count, 1)

fd.SetFilter(NewMimeTypeFileFilter([]string{"image/*"}))

count = 0
for _, icon := range fd.dialog.files.Objects {
if icon.(*fileDialogItem).dir == false {
uri := storage.NewURI(icon.(*fileDialogItem).path)
mimeType := strings.Split(uri.MimeType(), "/")[0]
assert.Equal(t, mimeType, "image")
count++
}
}
assert.Equal(t, count, 2)
}
1 change: 1 addition & 0 deletions dialog/testdata/test.jpg
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions dialog/testdata/test.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions dialog/testdata/test.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
test

1 comment on commit 014cb9a

@andydotxyz
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The images files should really be images not text files IMHO

Please sign in to comment.