Files
urh/tests/test_csv_import_dialog.py
Johannes Pohl fd933edfc7 integrate changes from simulator branch but disable simulator for now
The simulator is not yet ready for usage but the changes on the
architecture are valueable for the master branch.
Therefore, I merged the branch with the following addition:
 * Close the Simulator Tab whenever the program starts
2018-01-30 11:58:30 +01:00

90 lines
4.1 KiB
Python

import os
import random
import tempfile
from tests.QtTestCase import QtTestCase
from urh.controller.dialogs.CSVImportDialog import CSVImportDialog
class TestCSVImportDialog(QtTestCase):
def setUp(self):
super().setUp()
self.dialog = CSVImportDialog()
if self.SHOW:
self.dialog.show()
self.i_column = self.dialog.COLUMNS["I"]
self.q_column = self.dialog.COLUMNS["Q"]
self.t_column = self.dialog.COLUMNS["T"]
def test_invalid_file(self):
if self.SHOW:
self.assertTrue(self.dialog.ui.labelFileNotFound.isVisible())
self.dialog.ui.lineEditFilename.setText("/this/file/does/not/exist")
self.dialog.ui.lineEditFilename.editingFinished.emit()
self.assertEqual(self.dialog.ui.plainTextEditFilePreview.toPlainText(), "")
self.assertEqual(self.dialog.ui.tableWidgetPreview.rowCount(), 0)
def test_comma_separated_file(self):
filename = os.path.join(tempfile.gettempdir(), "comma.csv")
with open(filename, "w") as f:
f.write("this is a comment\n")
f.write("format is\n")
f.write("Timestamp I Q Trash\n")
for i in range(150):
f.write("{},{},{},{}\n".format(i / 1e6, i, random.uniform(0, 1), 42 * i))
self.dialog.ui.lineEditFilename.setText(filename)
self.dialog.ui.lineEditFilename.editingFinished.emit()
self.dialog.ui.spinBoxIDataColumn.setValue(2)
self.dialog.ui.spinBoxTimestampColumn.setValue(1)
self.dialog.ui.spinBoxQDataColumn.setValue(3)
for i in range(3):
for j in range(3):
self.assertEqual(self.dialog.ui.tableWidgetPreview.item(i, j).text(), "Invalid")
file_preview = self.dialog.ui.plainTextEditFilePreview.toPlainText()
self.assertEqual(len(file_preview.split("\n")), 100)
self.assertEqual(self.dialog.ui.tableWidgetPreview.rowCount(), 100)
self.assertEqual(self.dialog.ui.tableWidgetPreview.item(3, self.i_column).text(), "0.0")
self.assertEqual(self.dialog.ui.tableWidgetPreview.item(99, self.i_column).text(), "96.0")
last_preview_line = file_preview.split("\n")[-1]
t, i, q, _ = map(float, last_preview_line.split(","))
self.assertEqual(self.dialog.ui.tableWidgetPreview.item(99, self.i_column).text(), str(i))
self.assertEqual(self.dialog.ui.tableWidgetPreview.item(99, self.q_column).text(), str(q))
self.assertEqual(self.dialog.ui.tableWidgetPreview.item(99, self.t_column).text(), str(t))
def test_semicolon_separated_file(self):
filename = os.path.join(tempfile.gettempdir(), "semicolon.csv")
with open(filename, "w") as f:
f.write("I;Trash\n")
for i in range(20):
f.write("{};{}\n".format(i, 24 * i))
self.dialog.ui.lineEditFilename.setText(filename)
self.dialog.ui.lineEditFilename.editingFinished.emit()
self.dialog.ui.comboBoxCSVSeparator.setCurrentText(";")
self.assertTrue(self.dialog.ui.tableWidgetPreview.isColumnHidden(self.t_column))
self.assertEqual(self.dialog.ui.tableWidgetPreview.rowCount(), 21)
self.assertEqual(self.dialog.ui.tableWidgetPreview.item(0, self.i_column).text(), "Invalid")
self.assertEqual(self.dialog.ui.tableWidgetPreview.item(0, self.q_column).text(), "Invalid")
self.assertEqual(self.dialog.ui.tableWidgetPreview.item(1, self.i_column).text(), "0.0")
self.assertEqual(self.dialog.ui.tableWidgetPreview.item(1, self.q_column).text(), "0.0")
self.assertEqual(self.dialog.ui.tableWidgetPreview.item(2, self.i_column).text(), "1.0")
self.assertEqual(self.dialog.ui.tableWidgetPreview.item(2, self.q_column).text(), "0.0")
file_preview = self.dialog.ui.plainTextEditFilePreview.toPlainText()
last_preview_line = file_preview.split("\n")[-1]
i, _ = map(float, last_preview_line.split(";"))
self.assertEqual(self.dialog.ui.tableWidgetPreview.item(20, self.i_column).text(), str(i))
self.assertEqual(self.dialog.ui.tableWidgetPreview.item(20, self.q_column).text(), "0.0")