88from AnyQt .QtWidgets import QFileDialog
99
1010from Orange .data import Table
11- from Orange .data .io import TabReader , PickleReader , ExcelReader
11+ from Orange .data .io import TabReader , PickleReader , ExcelReader , FileFormat
1212from Orange .tests import named_file
1313from Orange .widgets .data .owsave import OWSave , OWSaveBase
1414from Orange .widgets .utils .save .tests .test_owsavebase import \
@@ -23,6 +23,15 @@ def _w(s): # pylint: disable=invalid-name
2323 return s .replace ("/" , os .sep )
2424
2525
26+ class MockFormat (FileFormat ):
27+ EXTENSIONS = ('.mock' ,)
28+ DESCRIPTION = "Mock file format"
29+
30+ @staticmethod
31+ def write_file (filename , data ):
32+ pass
33+
34+
2635class OWSaveTestBase (WidgetTest , SaveWidgetsTestBaseMixin ):
2736 def setUp (self ):
2837 with open_widget_classes ():
@@ -285,7 +294,12 @@ def test_valid_default_filter(self):
285294 widget .data .X = sp .csr_matrix (widget .data .X )
286295 self .assertTrue (
287296 widget .get_filters ()[widget .default_valid_filter ()]
288- .SUPPORT_SPARSE_DATA )
297+ .SUPPORT_SPARSE_DATA )
298+
299+ def test_add_on_writers (self ):
300+ # test adding file formats after registering the widget
301+ self .assertIn (MockFormat , self .widget .valid_filters ().values ())
302+ # this test doesn't call it - test_save_uncompressed does
289303
290304 def test_send_report (self ):
291305 widget = self .widget
@@ -387,12 +401,14 @@ def test_save_uncompressed(self):
387401
388402 self .send_signal (widget .Inputs .data , self .iris )
389403 widget .save_file_as ()
390- self .assertEqual (len (Table (filename )), 150 )
404+ if hasattr (writer , "read" ):
405+ self .assertEqual (len (Table (filename )), 150 )
391406
392407 if writer .SUPPORT_SPARSE_DATA :
393408 self .send_signal (widget .Inputs .data , spiris )
394409 widget .save_file ()
395- self .assertEqual (len (Table (filename )), 150 )
410+ if hasattr (writer , "read" ):
411+ self .assertEqual (len (Table (filename )), 150 )
396412
397413
398414@unittest .skipUnless (sys .platform == "linux" , "Tests for dialog on Linux" )
0 commit comments