Source code for Tests.GUI.DMatLib.test_DMatLib

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

import sys

from PySide2 import QtWidgets

from pyleecan.Classes.MatMagnetics import MatMagnetics
from pyleecan.Classes.Material import Material
from pyleecan.GUI.Dialog.DMatLib.DMatLib import DMatLib
from pyleecan.GUI.Dialog.DMatLib.MatLib import MatLib
from Tests import save_gui_path

from os import makedirs
from os.path import isdir, join
from shutil import rmtree

import pytest

# To save the tmp Matlib
tmp_folder = join(save_gui_path, "DMatLib", "tmp_matlib")


[docs]class TestDMatLib(object): """Test that the widget DMatLib behave like it should"""
[docs] @pytest.fixture def setup(self): """Run at the begining of every test to setup the gui""" if not QtWidgets.QApplication.instance(): self.app = QtWidgets.QApplication(sys.argv) else: self.app = QtWidgets.QApplication.instance() mat_lib = list() mat_lib.append(Material()) mat_lib[0].name = "test_material_1" mat_lib[0].is_isotropic = True mat_lib[0].elec.rho = 0.11 mat_lib[0].mag = MatMagnetics(mur_lin=0.12, Wlam=0.13) mat_lib[0].struct.rho = 0.14 mat_lib[0].struct.Ex = 0.15 mat_lib[0].struct.Ey = 0.152 mat_lib[0].struct.Ez = 0.153 mat_lib[0].struct.nu_xy = 0.16 mat_lib[0].struct.nu_yz = 0.162 mat_lib[0].struct.nu_xz = 0.163 mat_lib[0].struct.Gxy = 0.17 mat_lib[0].struct.Gyz = 0.172 mat_lib[0].struct.Gxz = 0.173 mat_lib[0].HT.lambda_x = 0.18 mat_lib[0].HT.lambda_y = 0.182 mat_lib[0].HT.lambda_z = 0.183 mat_lib[0].HT.Cp = 0.19 mat_lib[0].HT.alpha = 0.20 mat_lib[0].eco.cost_unit = 0.21 mat_lib.append(Material(name="test_material_2")) mat_lib.append(Material(name="test_material_3")) mat_lib.append(Material(name="test_material_4")) mat_lib.append(Material(name="test_material_5")) mat_lib.append(Material(name="test_material_6")) mat_lib.append(Material(name="test_material_7")) matlib = MatLib() matlib.dict_mat["RefMatLib"] = mat_lib matlib.index_first_mat_mach = 7 # Save material in a tmp folder if isdir(tmp_folder): rmtree(tmp_folder) makedirs(tmp_folder) for mat in mat_lib: mat.save(tmp_folder + "/" + mat.name + ".json") widget = DMatLib(matlib) yield {"widget": widget} self.app.quit() rmtree(tmp_folder)
[docs] def test_init(self, setup): """Check that the Widget spinbox initialise to the lamination value""" assert setup["widget"].out_name.text() == "name: test_material_1" assert setup["widget"].out_iso.text() == "type: isotropic" assert setup["widget"].out_rho_elec.text() == "rho = 0.11 ohm.m" assert setup["widget"].out_cost_unit.text() == u"cost_unit = 0.21 €/kg" assert setup["widget"].out_Cp.text() == "Cp = 0.19 W/kg/K" assert setup["widget"].out_alpha.text() == "alpha = 0.2" assert setup["widget"].out_L.text() == "Lambda = 0.18 W/K" assert setup["widget"].out_rho_meca.text() == "rho = 0.14 kg/m^3" assert setup["widget"].out_E.text() == "E = 0.15 Pa" assert setup["widget"].out_G.text() == "G = 0.17 Pa" assert setup["widget"].out_nu.text() == "nu = 0.16" assert setup["widget"].out_mur_lin.text() == "mur_lin = 0.12" assert setup["widget"].out_wlam.text() == "wlam = 0.13 m" # Check list assert setup["widget"].nav_mat.count() == 7 for ii in range(0, setup["widget"].nav_mat.count()): assert setup["widget"].nav_mat.item(ii).text() == "00" + str( ii + 1 ) + " - test_material_" + str(ii + 1)