aboutsummaryrefslogtreecommitdiffstats
path: root/tests/unit/net/filemanager_thread.rs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/unit/net/filemanager_thread.rs')
-rw-r--r--tests/unit/net/filemanager_thread.rs26
1 files changed, 21 insertions, 5 deletions
diff --git a/tests/unit/net/filemanager_thread.rs b/tests/unit/net/filemanager_thread.rs
index fe03bdc401e..43cda6b8244 100644
--- a/tests/unit/net/filemanager_thread.rs
+++ b/tests/unit/net/filemanager_thread.rs
@@ -3,15 +3,29 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
use ipc_channel::ipc::{self, IpcSender};
-use net::filemanager_thread::FileManagerThreadFactory;
-use net_traits::filemanager_thread::{FileManagerThreadMsg, FileManagerThreadError};
+use net::filemanager_thread::{FileManagerThreadFactory, UIProvider};
+use net_traits::filemanager_thread::{FilterPattern, FileManagerThreadMsg, FileManagerThreadError};
use std::fs::File;
use std::io::Read;
use std::path::PathBuf;
+const TEST_PROVIDER: &'static TestProvider = &TestProvider;
+
+struct TestProvider;
+
+impl UIProvider for TestProvider {
+ fn open_file_dialog(&self, _: &str, _: Option<(&[&str], &str)>) -> Option<String> {
+ Some("test.txt".to_string())
+ }
+
+ fn open_file_dialog_multi(&self, _: &str, _: Option<(&[&str], &str)>) -> Option<Vec<String>> {
+ Some(vec!["test.txt".to_string()])
+ }
+}
+
#[test]
fn test_filemanager() {
- let chan: IpcSender<FileManagerThreadMsg> = FileManagerThreadFactory::new();
+ let chan: IpcSender<FileManagerThreadMsg> = FileManagerThreadFactory::new(TEST_PROVIDER);
// Try to open a dummy file "tests/unit/net/test.txt" in tree
let mut handler = File::open("test.txt").expect("test.txt is stolen");
@@ -20,11 +34,13 @@ fn test_filemanager() {
handler.read_to_end(&mut test_file_content)
.expect("Read tests/unit/net/test.txt error");
+ let patterns = vec![FilterPattern(".txt".to_string())];
+
{
// Try to select a dummy file "tests/unit/net/test.txt"
let (tx, rx) = ipc::channel().unwrap();
- chan.send(FileManagerThreadMsg::SelectFile(tx)).unwrap();
+ chan.send(FileManagerThreadMsg::SelectFile(patterns.clone(), tx)).unwrap();
let selected = rx.recv().expect("File manager channel is broken")
.expect("The file manager failed to find test.txt");
@@ -66,7 +82,7 @@ fn test_filemanager() {
{
let (tx, rx) = ipc::channel().unwrap();
- let _ = chan.send(FileManagerThreadMsg::SelectFile(tx));
+ let _ = chan.send(FileManagerThreadMsg::SelectFile(patterns.clone(), tx));
assert!(rx.try_recv().is_err(), "The thread should not respond normally after exited");
}