Source code for pyleecan.Tests.GUI.DMatLib.test_DMatSetup

# -*- coding: utf-8 -*-

import sys
from os import mkdir
from os.path import join, isdir
from shutil import rmtree, copyfile
from random import uniform
from unittest import TestCase

from PyQt5 import QtWidgets
from PyQt5.QtCore import Qt
from PyQt5.QtTest import QTest

from ....Classes.MatMagnetics import MatMagnetics
from ....Classes.Material import Material
from ....GUI.Dialog.DMatLib.DMatSetup.DMatSetup import DMatSetup
from ....Tests import save_load_path as save_path, DATA_DIR


[docs]class test_DMatSetup(TestCase): """Test that the widget DMatSetup behave like it should"""
[docs] def setUp(self): """Run at the begining of every test to setup the gui""" self.work_path = join(save_path, "Material") # Delete old test if needed if isdir(self.work_path): rmtree(self.work_path) mkdir(self.work_path) copyfile( join(DATA_DIR, "Material", "Magnet1.json"), join(self.work_path, "Magnet1.json"), ) self.test_obj = Material() self.test_obj.name = "Magnet1" self.test_obj.path = join(self.work_path, "Magnet1.json") self.test_obj.is_isotropic = True self.test_obj.elec.rho = 0.11 self.test_obj.mag = MatMagnetics(mur_lin=0.12, Wlam=0.13) self.test_obj.struct.rho = 0.14 self.test_obj.struct.Ex = 0.15 self.test_obj.struct.Ey = 0.152 self.test_obj.struct.Ez = 0.153 self.test_obj.struct.nu_xy = 0.16 self.test_obj.struct.nu_yz = 0.162 self.test_obj.struct.nu_xz = 0.163 self.test_obj.struct.Gxy = 0.17 self.test_obj.struct.Gyz = 0.172 self.test_obj.struct.Gxz = 0.173 self.test_obj.HT.lambda_x = 0.18 self.test_obj.HT.lambda_y = 0.182 self.test_obj.HT.lambda_z = 0.183 self.test_obj.HT.Cp = 0.19 self.test_obj.HT.alpha = 0.20 self.test_obj.eco.cost_unit = 0.21 self.widget = DMatSetup(material=self.test_obj)
[docs] def teardown(self): """Delete the workspace at the end of the tests """ rmtree(self.work_path)
[docs] @classmethod def setUpClass(cls): """Start the app for the test""" print("\nStart Test DMatSetup") cls.app = QtWidgets.QApplication(sys.argv)
[docs] @classmethod def tearDownClass(cls): """Exit the app after the test""" cls.app.quit()
[docs] def test_init(self): """Check that the Widget spinbox initialise to the lamination value""" self.assertEqual(self.widget.nav_ther.currentIndex(), 1) self.assertEqual(self.widget.nav_meca.currentIndex(), 1) self.assertEqual(self.widget.le_name.text(), "Magnet1") self.assertEqual(self.widget.is_isotropic.checkState(), Qt.Checked) self.assertEqual(self.widget.lf_rho_elec.value(), 0.11) self.assertEqual(self.widget.lf_mur_lin.value(), 0.12) self.assertEqual(self.widget.lf_Wlam.value(), 0.13) self.assertEqual(self.widget.lf_rho_meca.value(), 0.14) self.assertEqual(self.widget.lf_E.value(), 0.15) self.assertEqual(self.widget.lf_nu.value(), 0.16) self.assertEqual(self.widget.lf_G.value(), 0.17) self.assertEqual(self.widget.lf_L.value(), 0.18) self.assertEqual(self.widget.lf_Cp.value(), 0.19) self.assertEqual(self.widget.lf_alpha.value(), 0.2) self.assertEqual(self.widget.lf_cost_unit.value(), 0.21) # Test Raw Material self.test_obj.mag = None self.widget = DMatSetup(material=self.test_obj) self.assertEqual(self.widget.nav_ther.currentIndex(), 1) self.assertEqual(self.widget.nav_meca.currentIndex(), 1) self.assertEqual(self.widget.le_name.text(), "Magnet1") self.assertEqual(self.widget.is_isotropic.checkState(), Qt.Checked) self.assertEqual(self.widget.lf_rho_elec.value(), 0.11) self.assertEqual(self.widget.lf_rho_meca.value(), 0.14) self.assertEqual(self.widget.lf_E.value(), 0.15) self.assertEqual(self.widget.lf_nu.value(), 0.16) self.assertEqual(self.widget.lf_G.value(), 0.17) self.assertEqual(self.widget.lf_L.value(), 0.18) self.assertEqual(self.widget.lf_Cp.value(), 0.19) self.assertEqual(self.widget.lf_alpha.value(), 0.2) self.assertEqual(self.widget.lf_cost_unit.value(), 0.21) # Test Magnet material Non isotropic self.test_obj.is_isotropic = False self.test_obj.mag = MatMagnetics(mur_lin=0.22, Brm20=0.23, alpha_Br=0.24) self.widget = DMatSetup(material=self.test_obj) self.assertEqual(self.widget.nav_ther.currentIndex(), 0) self.assertEqual(self.widget.nav_meca.currentIndex(), 0) self.assertEqual(self.widget.le_name.text(), "Magnet1") self.assertEqual(self.widget.is_isotropic.checkState(), Qt.Unchecked) self.assertEqual(self.widget.lf_rho_elec.value(), 0.11) self.assertEqual(self.widget.lf_mur_lin.value(), 0.22) self.assertEqual(self.widget.lf_Brm20.value(), 0.23) self.assertEqual(self.widget.lf_alpha_Br.value(), 0.24) self.assertEqual(self.widget.lf_rho_meca.value(), 0.14) self.assertEqual(self.widget.lf_Ex.value(), 0.15) self.assertEqual(self.widget.lf_Ey.value(), 0.152) self.assertEqual(self.widget.lf_Ez.value(), 0.153) self.assertEqual(self.widget.lf_nu_xy.value(), 0.16) self.assertEqual(self.widget.lf_nu_yz.value(), 0.162) self.assertEqual(self.widget.lf_nu_xz.value(), 0.163) self.assertEqual(self.widget.lf_Gxy.value(), 0.17) self.assertEqual(self.widget.lf_Gyz.value(), 0.172) self.assertEqual(self.widget.lf_Gxz.value(), 0.173) self.assertEqual(self.widget.lf_Lx.value(), 0.18) self.assertEqual(self.widget.lf_Ly.value(), 0.182) self.assertEqual(self.widget.lf_Lz.value(), 0.183) self.assertEqual(self.widget.lf_Cp.value(), 0.19) self.assertEqual(self.widget.lf_alpha.value(), 0.2) self.assertEqual(self.widget.lf_cost_unit.value(), 0.21)
[docs] def test_set_name(self): """Check that you can change the name and the path """ self.widget.le_name.setText("Magnet2") self.widget.le_name.editingFinished.emit() self.assertEqual(self.widget.mat.name, "Magnet2") self.assertEqual(self.widget.mat.path, join(self.work_path, "Magnet2.json"))
[docs] def test_set_rho_elec(self): """Check that the Widget allow to update rho_elec""" self.widget.lf_rho_elec.clear() # Clear the field before writing value = round(uniform(0, 1), 4) QTest.keyClicks(self.widget.lf_rho_elec, str(value)) self.widget.lf_rho_elec.editingFinished.emit() # To trigger the slot self.assertEqual(self.widget.mat.elec.rho, value)
[docs] def test_set_mur_lin(self): """Check that the Widget allow to update mur_lin""" self.widget.lf_mur_lin.clear() # Clear the field before writing value = round(uniform(0, 1), 4) QTest.keyClicks(self.widget.lf_mur_lin, str(value)) self.widget.lf_mur_lin.editingFinished.emit() # To trigger the slot self.assertEqual(self.widget.mat.mag.mur_lin, value) # Test also for Magnet Materials self.test_obj.mag = MatMagnetics() self.widget = DMatSetup(material=self.test_obj) self.widget.lf_mur_lin.clear() # Clear the field before writing value = round(uniform(0, 1), 4) QTest.keyClicks(self.widget.lf_mur_lin, str(value)) self.widget.lf_mur_lin.editingFinished.emit() # To trigger the slot self.assertEqual(self.widget.mat.mag.mur_lin, value)
[docs] def test_set_Wlam(self): """Check that the Widget allow to update Wlam""" self.widget.lf_Wlam.clear() # Clear the field before writing value = round(uniform(0, 1), 4) QTest.keyClicks(self.widget.lf_Wlam, str(value)) self.widget.lf_Wlam.editingFinished.emit() # To trigger the slot self.assertEqual(self.widget.mat.mag.Wlam, value)
[docs] def test_set_Brm20(self): """Check that the Widget allow to update Brm20""" # Set Material for Magnet self.test_obj.mag = MatMagnetics() self.widget = DMatSetup(material=self.test_obj) self.widget.lf_Brm20.clear() # Clear the field before writing value = round(uniform(0, 1), 4) QTest.keyClicks(self.widget.lf_Brm20, str(value)) self.widget.lf_Brm20.editingFinished.emit() # To trigger the slot self.assertEqual(self.widget.mat.mag.Brm20, value)
[docs] def test_set_alpha_Br(self): """Check that the Widget allow to update alpha_Br""" # Set Material for Magnet self.test_obj.mag = MatMagnetics() self.widget = DMatSetup(material=self.test_obj) self.widget.lf_alpha_Br.clear() # Clear the field before writing value = round(uniform(0, 1), 4) QTest.keyClicks(self.widget.lf_alpha_Br, str(value)) self.widget.lf_alpha_Br.editingFinished.emit() # To trigger the slot self.assertEqual(self.widget.mat.mag.alpha_Br, value)
[docs] def test_set_rho_meca(self): """Check that the Widget allow to update rho_meca""" self.widget.lf_rho_meca.clear() # Clear the field before writing value = round(uniform(0, 1), 4) QTest.keyClicks(self.widget.lf_rho_meca, str(value)) self.widget.lf_rho_meca.editingFinished.emit() # To trigger the slot self.assertEqual(self.widget.mat.struct.rho, value)
[docs] def test_set_E(self): """Check that the Widget allow to update E""" self.widget.lf_E.clear() # Clear the field before writing value = round(uniform(0, 1), 4) QTest.keyClicks(self.widget.lf_E, str(value)) self.widget.lf_E.editingFinished.emit() # To trigger the slot self.assertEqual(self.widget.mat.struct.Ex, value) self.assertEqual(self.widget.mat.struct.Ey, value) self.assertEqual(self.widget.mat.struct.Ez, value)
[docs] def test_set_Ex(self): """Check that the Widget allow to update Ex""" self.widget.lf_Ex.clear() # Clear the field before writing value = round(uniform(0, 1), 4) QTest.keyClicks(self.widget.lf_Ex, str(value)) self.widget.lf_Ex.editingFinished.emit() # To trigger the slot self.assertEqual(self.widget.mat.struct.Ex, value)
[docs] def test_set_Ey(self): """Check that the Widget allow to update Ey""" self.widget.lf_Ey.clear() # Clear the field before writing value = round(uniform(0, 1), 4) QTest.keyClicks(self.widget.lf_Ey, str(value)) self.widget.lf_Ey.editingFinished.emit() # To trigger the slot self.assertEqual(self.widget.mat.struct.Ey, value)
[docs] def test_set_Ez(self): """Check that the Widget allow to update Ez""" self.widget.lf_Ez.clear() # Clear the field before writing value = round(uniform(0, 1), 4) QTest.keyClicks(self.widget.lf_Ez, str(value)) self.widget.lf_Ez.editingFinished.emit() # To trigger the slot self.assertEqual(self.widget.mat.struct.Ez, value)
[docs] def test_set_nu(self): """Check that the Widget allow to update nu""" self.widget.lf_nu.clear() # Clear the field before writing value = round(uniform(0, 1), 4) QTest.keyClicks(self.widget.lf_nu, str(value)) self.widget.lf_nu.editingFinished.emit() # To trigger the slot self.assertEqual(self.widget.mat.struct.nu_xy, value) self.assertEqual(self.widget.mat.struct.nu_yz, value) self.assertEqual(self.widget.mat.struct.nu_xz, value)
[docs] def test_set_nu_xy(self): """Check that the Widget allow to update nu_xy""" self.widget.lf_nu_xy.clear() # Clear the field before writing value = round(uniform(0, 1), 4) QTest.keyClicks(self.widget.lf_nu_xy, str(value)) self.widget.lf_nu_xy.editingFinished.emit() # To trigger the slot self.assertEqual(self.widget.mat.struct.nu_xy, value)
[docs] def test_set_nu_xz(self): """Check that the Widget allow to update nu_xz""" self.widget.lf_nu_xz.clear() # Clear the field before writing value = round(uniform(0, 1), 4) QTest.keyClicks(self.widget.lf_nu_xz, str(value)) self.widget.lf_nu_xz.editingFinished.emit() # To trigger the slot self.assertEqual(self.widget.mat.struct.nu_xz, value)
[docs] def test_set_nu_yz(self): """Check that the Widget allow to update nu_yz""" self.widget.lf_nu_yz.clear() # Clear the field before writing value = round(uniform(0, 1), 4) QTest.keyClicks(self.widget.lf_nu_yz, str(value)) self.widget.lf_nu_yz.editingFinished.emit() # To trigger the slot self.assertEqual(self.widget.mat.struct.nu_yz, value)
[docs] def test_set_G(self): """Check that the Widget allow to update G""" self.widget.lf_G.clear() # Clear the field before writing value = round(uniform(0, 1), 4) QTest.keyClicks(self.widget.lf_G, str(value)) self.widget.lf_G.editingFinished.emit() # To trigger the slot self.assertEqual(self.widget.mat.struct.Gxy, value) self.assertEqual(self.widget.mat.struct.Gyz, value) self.assertEqual(self.widget.mat.struct.Gxz, value)
[docs] def test_set_Gxy(self): """Check that the Widget allow to update Gxy""" self.widget.lf_Gxy.clear() # Clear the field before writing value = round(uniform(0, 1), 4) QTest.keyClicks(self.widget.lf_Gxy, str(value)) self.widget.lf_Gxy.editingFinished.emit() # To trigger the slot self.assertEqual(self.widget.mat.struct.Gxy, value)
[docs] def test_set_Gyz(self): """Check that the Widget allow to update Gyz""" self.widget.lf_Gyz.clear() # Clear the field before writing value = round(uniform(0, 1), 4) QTest.keyClicks(self.widget.lf_Gyz, str(value)) self.widget.lf_Gyz.editingFinished.emit() # To trigger the slot self.assertEqual(self.widget.mat.struct.Gyz, value)
[docs] def test_set_Gxz(self): """Check that the Widget allow to update Gxz""" self.widget.lf_Gxz.clear() # Clear the field before writing value = round(uniform(0, 1), 4) QTest.keyClicks(self.widget.lf_Gxz, str(value)) self.widget.lf_Gxz.editingFinished.emit() # To trigger the slot self.assertEqual(self.widget.mat.struct.Gxz, value)