diff --git a/tests/test_create_id.py b/tests/test_create_id.py index 68a8a8d77d9acba6dd1444e1c3a5585e7e62f803..d7c4b2e6f6d1f9a21a5fcb7593a4d1b8ead8f648 100644 --- a/tests/test_create_id.py +++ b/tests/test_create_id.py @@ -1,25 +1,32 @@ #!/usr/bin/env python3 # -*- coding: utf-8 -*- -''' +""" Unittests for CreateID -''' +""" + import unittest from create_id import create_id class TestCreateID(unittest.TestCase): + """ + Class for all unittests of the create_id module. + """ def test_existence(self): + """Test if create_id returns a string.""" self.assertIsInstance(create_id(1), str) self.assertIsInstance(create_id(2), str) def test_errors(self): + """ Test if Errors are raised when id_method is wrong. """ with self.assertRaises(ValueError): create_id(3) with self.assertRaises(ValueError): create_id('h') def test_length(self): + """ Test if figure_id has the correct length. """ self.assertEqual(len(create_id(1)), 10) self.assertEqual(len(create_id(2)), 8) diff --git a/tests/test_publish.py b/tests/test_publish.py index a01e727cad948944ee6e55f196d7c1b9d1b3b280..40a6096b1213c8227fc433e0db3ed94929040ac7 100644 --- a/tests/test_publish.py +++ b/tests/test_publish.py @@ -1,20 +1,18 @@ # -*- coding: utf-8 -*- -''' -Unittests for Publish -''' +""" +Unittests for publish +""" import unittest import os import sys import shutil -import base64 -import matplotlib.pyplot as plt from unittest.mock import patch +import matplotlib.pyplot as plt from publish import publish SRC_DIR = 'test_src_folder' -IMG_DATA = b'iVBORw0KGgoAAAANSUhEUgAAAUAAAAFAAgMAAACw/k05AAAACXBIWXMAAA7DAAAOwwHHb6hkAAAAGXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAAAxQTFRFAAAAHBwcVFRU////6irJIAAAAIVJREFUeNrt3TERACAQBLHTgQlMU6GQDkz8MF9kBcTCJmrY2IWtJPMWdoBAIBAIBAKBQCAQCAQCgUAgEAgEAoFAIBAIBAKBQCAQCAQCgUAgEAgEAoFAIBAIBAKBQCAQCAQCgUAgEAgEAoFAIBAIBAKBQCAQCAQCgUAgEAgEAv+A5RMHtesBZRvjTSF8ofkAAAAASUVORK5CYII=' # noqa: E501 PIC_NAME = 'test_picture' DST_DIR = 'test_dst_folder' DST_PARENT_DIR = 'test_parent' @@ -24,27 +22,32 @@ fig = plt.figure() class TestPublish(unittest.TestCase): + """ + Class for all unittests of the publish module. + """ def setUp(self): + """ Generate source and destination directory and test image. """ os.makedirs(SRC_DIR, exist_ok=True) os.makedirs(DST_PARENT_DIR, exist_ok=True) - with open(PIC_NAME, "wb") as test_pic: - test_pic.write(base64.decodebytes(IMG_DATA)) # Skip test if tests are run from command line. @unittest.skipIf(not os.path.isfile(sys.argv[0]), 'Publish is not called ' 'from a Python script. Therefore, the script cannot be ' 'copied.') def test_publish(self): + """ Test publish and check if an exported picture file exists. """ publish(SRC_DIR, DST_PATH, fig, PIC_NAME, 'individual') assert os.path.isfile(os.path.join(DST_PATH, PIC_NAME + '.png')) def test_src_directory(self): + """ Test if Error is raised when source directory does not exist.""" with self.assertRaises(FileNotFoundError): publish('not_existing_folder', DST_PATH, fig, PIC_NAME, 'individual') def test_dst_directory(self): + """ Test if Error is raised when destination dir does not exist.""" with self.assertRaises(FileNotFoundError): publish(SRC_DIR, 'not_existing_folder', fig, PIC_NAME, 'individual') @@ -54,6 +57,10 @@ class TestPublish(unittest.TestCase): 'from a Python script. Therefore, the script cannot be ' 'copied.') def test_dst_already_exists_yes(self): + """ + Test if publish succeeds if the user wants to overwrite an existing + destination directory. + """ os.mkdir(DST_PATH) # Mock user input as 'yes' with patch('builtins.input', return_value='yes'): @@ -64,6 +71,10 @@ class TestPublish(unittest.TestCase): 'from a Python script. Therefore, the script cannot be ' 'copied.') def test_dst_already_exists_no(self): + """ + Test if publish exits with error if the user does not want to overwrite + an existing destination directory by user input 'no'. + """ os.mkdir(DST_PATH) # Mock user input as 'no' with patch('builtins.input', return_value='no'): @@ -75,6 +86,10 @@ class TestPublish(unittest.TestCase): 'from a Python script. Therefore, the script cannot be ' 'copied.') def test_dst_already_exists_empty(self): + """ + Test if publish exits with error if the user does not want to overwrite + an existing destination directory by missing user input. + """ os.mkdir(DST_PATH) # Mock user input as empty (no should be default). with patch('builtins.input', return_value=''): @@ -86,21 +101,29 @@ class TestPublish(unittest.TestCase): 'from a Python script. Therefore, the script cannot be ' 'copied.') def test_dst__invisible_already_exists(self): + """ + Test if publish succeeds when there is already an invisible + directory from a previous run (delete the folder and proceed). + """ os.mkdir(INVISIBLE_PATH) publish(SRC_DIR, DST_PATH, fig, PIC_NAME, 'individual') def test_picture(self): + """ Test if Error is raised if fig is not a valid figure object. """ with self.assertRaises(TypeError): publish(SRC_DIR, DST_PATH, 'fig', PIC_NAME, 'individual') def test_data_storage(self): + """ + Test if Error is raised when unsupported storage method was chosen. + """ with self.assertRaises(ValueError): publish(SRC_DIR, DST_PATH, fig, PIC_NAME, 'none_existing_method') def tearDown(self): + """ Delete all files created in setUp. """ shutil.rmtree(SRC_DIR) shutil.rmtree(DST_PARENT_DIR) - os.remove(PIC_NAME) if __name__ == '__main__': diff --git a/tests/test_save_plot.py b/tests/test_save_plot.py index 767875110242c2613087b6ba4f087ac74dd9fbf7..a015223d1a6bfb8b6293675341093263387f31ce 100644 --- a/tests/test_save_plot.py +++ b/tests/test_save_plot.py @@ -1,25 +1,30 @@ # -*- coding: utf-8 -*- -''' +""" Unittests for save_plot -''' +""" import os import unittest import matplotlib.pyplot as plt from save_plot import save_plot -figure = plt.figure() -plot_name = 'PLOT_NAME' +FIGURE = plt.figure() +PLOT_NAME = 'PLOT_NAME' -class TestSave_Plot(unittest.TestCase): +class TestSavePlot(unittest.TestCase): + """ + Class for all unittests of the save_plot module. + """ def test_save_plot(self): - save_plot(figure, plot_name, extension='jpg') - os.remove(plot_name + '.jpg') + """ Test if save_plot succeeds with valid arguments. """ + save_plot(FIGURE, PLOT_NAME, extension='jpg') + os.remove(PLOT_NAME + '.jpg') def test_wrong_fig_type(self): + """ Test if Error is raised when not a figure object is given. """ with self.assertRaises(TypeError): save_plot('figure', 'PLOT_NAME', extension='jpg') diff --git a/tests/test_tagplot.py b/tests/test_tagplot.py index 25c1ee2aa59bef2305bba0227938e8f8bb743ecd..d0e5af2e21d2dd954fbb7650e9fe4ac017f5d3a9 100644 --- a/tests/test_tagplot.py +++ b/tests/test_tagplot.py @@ -1,72 +1,72 @@ #!/usr/bin/env python3 # -*- coding: utf-8 -*- -''' +""" Unittests for tagplot -''' +""" + import unittest -import numpy as np import matplotlib.pyplot as plt from tagplot import tagplot - -# %% Create data -x = np.linspace(0, 10, 100) -y = np.random.rand(100) + 2 -y_2 = np.sin(x) + 2 - -# %% Create figure -color1 = 'black' -color2 = 'yellow' - -# 1.Figure -fig1 = plt.figure() -plt.plot(x, y, color=color1) -plt.plot(x, y_2, color=color2) - -# 2.Figure -fig2 = plt.figure() -plt.plot(x, y, color=color2) -plt.plot(x, y_2, color=color1) - -fig = [fig1, fig2] - # Constants for tests -ProjectID = "MR01" -plot_engine = "matplotlib" -method = 1 +FIG1 = plt.figure() +FIG2 = plt.figure() +FIGS_AS_LIST = [FIG1, FIG2] + +PROJECT_ID = "MR01" +PLOT_ENGINE = "matplotlib" +METHOD = 1 -class Test_tagplot(unittest.TestCase): +class TestTagplot(unittest.TestCase): + """ + Class for all unittests of the tagplot module. + """ def test_figures(self): + """ + Test if Errors are raised when the provided figure is not given + as list. + """ with self.assertRaises(TypeError): - tagplot('fig', ProjectID, plot_engine, method) + tagplot('fig', PLOT_ENGINE, PROJECT_ID, METHOD) with self.assertRaises(TypeError): - tagplot(fig1, plot_engine, prefix=ProjectID) + tagplot(FIG1, PLOT_ENGINE, prefix=PROJECT_ID) def test_prefix(self): + """ Test if Error is raised if prefix is not a string. """ with self.assertRaises(TypeError): - tagplot(fig, plot_engine, 3, method) + tagplot(FIGS_AS_LIST, PLOT_ENGINE, 3, METHOD) def test_plotengine(self): + """ + Test if Errors are raised if the provided plot engine is not supported. + """ with self.assertRaises(ValueError): - tagplot(fig, 1, ProjectID, method) + tagplot(FIGS_AS_LIST, 1, PROJECT_ID, METHOD) with self.assertRaises(ValueError): - tagplot(fig, 'xyz', ProjectID, method) + tagplot(FIGS_AS_LIST, 'xyz', PROJECT_ID, METHOD) def test_idmethod(self): + """ + Test if Errors are raised if the id_method is not an integer. + """ with self.assertRaises(TypeError): - tagplot(fig, plot_engine, ProjectID, method='(0,1)') + tagplot(FIGS_AS_LIST, PLOT_ENGINE, PROJECT_ID, id_method='(0,1)') with self.assertRaises(TypeError): - tagplot(fig, plot_engine, ProjectID, method='h') + tagplot(FIGS_AS_LIST, PLOT_ENGINE, PROJECT_ID, id_method='h') with self.assertRaises(TypeError): - tagplot(fig, plot_engine, ProjectID, method='[0,1]') + tagplot(FIGS_AS_LIST, PLOT_ENGINE, PROJECT_ID, id_method='[0,1]') def test_location(self): + """ + Test if Errors are raised if the provided location is not supported. + """ with self.assertRaises(TypeError): - tagplot(fig, plot_engine, ProjectID, method, location=1) + tagplot(FIGS_AS_LIST, PLOT_ENGINE, PROJECT_ID, METHOD, location=1) with self.assertWarns(Warning): - tagplot(fig, plot_engine, ProjectID, method, location='up') + tagplot(FIGS_AS_LIST, PLOT_ENGINE, PROJECT_ID, METHOD, + location='up') if __name__ == '__main__': diff --git a/tests/test_tagplot_matplotlib.py b/tests/test_tagplot_matplotlib.py index a73c95591591eeae6f4cf2ea3edfb15d5f725645..c1902319f027a4e4756197d181bf35d27c8d3405 100644 --- a/tests/test_tagplot_matplotlib.py +++ b/tests/test_tagplot_matplotlib.py @@ -6,53 +6,45 @@ Unittests for TagPlot_matplotlib import unittest from tagplot_matplotlib import tagplot_matplotlib -import numpy as np import matplotlib.pyplot as plt from matplotlib.figure import Figure -from tagplot import PlotOptions +from plotoptions import PlotOptions -# %% Create data -x = np.linspace(0, 10, 100) -y = np.random.rand(100) + 2 -y_2 = np.sin(x) + 2 -# %% Create figure -color1 = 'black' -color2 = 'yellow' - -# 1.Figure -fig1 = plt.figure() -plt.plot(x, y, color=color1) -plt.plot(x, y_2, color=color2) - -# 2.Figure -fig2 = plt.figure() -plt.plot(x, y, color=color2) -plt.plot(x, y_2, color=color1) - -fig = [fig1, fig2] +FIG1 = plt.figure() +FIG2 = plt.figure() +FIGS_AS_LIST = [FIG1, FIG2] # Constants for tests -ProjectID = "MR01" -method = 1 -rotation = 90 -position = (0.975, 0.35) +PROJECT_ID = "MR01" +METHOD = 1 +ROTATION = 90 +POSITION = (0.975, 0.35) -class Test_tagplot_matplotlib(unittest.TestCase): +class TestTagplotMatplotlib(unittest.TestCase): + """ + Class for all unittests of the tagplot_matplotlib module. + """ def test_mplfigures(self): - options = PlotOptions(fig, ProjectID, method, rotation, position) - [figs, ID] = tagplot_matplotlib(options) + """ Test of returned objects. Check if they are matplotlib figures. """ + options = PlotOptions(FIGS_AS_LIST, PROJECT_ID, METHOD, ROTATION, + POSITION) + [figs, _] = tagplot_matplotlib(options) self.assertIsInstance(figs[0], Figure) self.assertIsInstance(figs[1], Figure) def test_mplerror(self): - options = PlotOptions(3, ProjectID, method, rotation, position) + """ Test if Error is raised if wrong type of figures is given. """ + options = PlotOptions(3, PROJECT_ID, METHOD, ROTATION, POSITION) with self.assertRaises(TypeError): tagplot_matplotlib(options) def test_mpl_plotoptions(self): + """ + Test if Error is raised if not an instance of PlotOptions is passed. + """ with self.assertRaises(TypeError): tagplot_matplotlib('wrong_object')