Source code for Tests.GUI.DMachineSetup.test_SMachineType

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

import sys
from random import uniform

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

from pyleecan.Classes.LamHole import LamHole
from pyleecan.Classes.LamSlotMag import LamSlotMag
from pyleecan.Classes.LamSlotWind import LamSlotWind
from pyleecan.Classes.MachineSyRM import MachineSyRM
from pyleecan.Classes.MachineIPMSM import MachineIPMSM
from pyleecan.Classes.MachineDFIM import MachineDFIM
from pyleecan.Classes.MachineSCIM import MachineSCIM
from pyleecan.Classes.MachineSIPMSM import MachineSIPMSM
from pyleecan.Classes.MachineWRSM import MachineWRSM
from pyleecan.GUI.Dialog.DMachineSetup.SMachineType.SMachineType import SMachineType
from pyleecan.Classes.HoleM50 import HoleM50


import pytest


[docs]@pytest.mark.GUI class TestSMachineType(object): """Test that the widget SMachineType 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() test_obj = MachineSCIM(name="test_machine", type_machine=1) test_obj.stator = LamSlotWind( is_stator=True, is_internal=False, Rint=0.21, Rext=0.22 ) test_obj.stator.winding.p = 6 test_obj.rotor = LamSlotWind( is_stator=False, is_internal=True, Rint=0.11, Rext=0.12 ) widget = SMachineType(machine=test_obj, matlib=[], is_stator=False) yield {"widget": widget, "test_obj": test_obj} self.app.quit()
[docs] def test_init(self, setup): """Check that the Widget spinbox initialise to the lamination value""" assert setup["widget"].le_name.text() == "test_machine" assert setup["widget"].si_p.value() == 6 assert setup["widget"].c_type.currentIndex() == 0 assert setup["widget"].c_type.currentText() == "SCIM" assert setup["widget"].is_inner_rotor.checkState() == Qt.Checked # DFIM setup["test_obj"] = MachineDFIM(name="test_machine_dfim", type_machine=4) setup["test_obj"].stator = LamSlotWind( is_stator=True, is_internal=True, Rint=0.21, Rext=0.22 ) setup["test_obj"].stator.winding.p = 7 setup["test_obj"].rotor = LamSlotWind( is_stator=False, is_internal=False, Rint=0.11, Rext=0.12 ) setup["widget"] = SMachineType( machine=setup["test_obj"], matlib=[], is_stator=False ) assert setup["widget"].le_name.text() == "test_machine_dfim" assert setup["widget"].si_p.value() == 7 assert setup["widget"].c_type.currentIndex() == 1 assert setup["widget"].c_type.currentText() == "DFIM" assert setup["widget"].is_inner_rotor.checkState() == Qt.Unchecked # SyRM setup["test_obj"] = MachineSyRM(name="test_machine_syrm", type_machine=5) setup["test_obj"].stator = LamSlotWind( is_stator=True, is_internal=True, Rint=0.21, Rext=0.22 ) setup["test_obj"].stator.winding.p = 21 setup["test_obj"].rotor = LamHole( is_stator=False, is_internal=False, Rint=0.11, Rext=0.12 ) setup["widget"] = SMachineType( machine=setup["test_obj"], matlib=[], is_stator=False ) assert setup["widget"].le_name.text() == "test_machine_syrm" assert setup["widget"].si_p.value() == 21 assert setup["widget"].c_type.currentIndex() == 2 assert setup["widget"].c_type.currentText() == "SyRM" assert setup["widget"].is_inner_rotor.checkState() == Qt.Unchecked # SPMSM setup["test_obj"] = MachineSIPMSM(name="test_machine_spmsm", type_machine=6) setup["test_obj"].stator = LamSlotWind( is_stator=True, is_internal=True, Rint=0.21, Rext=0.22 ) setup["test_obj"].stator.winding.p = 8 setup["test_obj"].rotor = LamSlotMag( is_stator=False, is_internal=False, Rint=0.11, Rext=0.12 ) setup["widget"] = SMachineType( machine=setup["test_obj"], matlib=[], is_stator=False ) assert setup["widget"].le_name.text() == "test_machine_spmsm" assert setup["widget"].si_p.value() == 8 assert setup["widget"].c_type.currentIndex() == 3 assert setup["widget"].c_type.currentText() == "SPMSM" assert setup["widget"].is_inner_rotor.checkState() == Qt.Unchecked # SIPMSM setup["test_obj"] = MachineSIPMSM(name="test_machine_sipmsm", type_machine=7) setup["test_obj"].stator = LamSlotWind( is_stator=True, is_internal=False, Rint=0.21, Rext=0.22 ) setup["test_obj"].stator.winding.p = 9 setup["test_obj"].rotor = LamSlotMag( is_stator=False, is_internal=True, Rint=0.11, Rext=0.12 ) setup["widget"] = SMachineType( machine=setup["test_obj"], matlib=[], is_stator=False ) assert setup["widget"].le_name.text() == "test_machine_sipmsm" assert setup["widget"].si_p.value() == 9 assert setup["widget"].c_type.currentIndex() == 4 assert setup["widget"].c_type.currentText() == "SIPMSM" assert setup["widget"].is_inner_rotor.checkState() == Qt.Checked # IPMSM setup["test_obj"] = MachineIPMSM(name="test_machine_ipmsm", type_machine=8) setup["test_obj"].stator = LamSlotWind( is_stator=True, is_internal=True, Rint=0.21, Rext=0.22 ) setup["test_obj"].stator.winding.p = 10 setup["test_obj"].rotor = LamHole( is_stator=False, is_internal=False, Rint=0.11, Rext=0.12 ) setup["widget"] = SMachineType( machine=setup["test_obj"], matlib=[], is_stator=False ) assert setup["widget"].le_name.text() == "test_machine_ipmsm" assert setup["widget"].si_p.value() == 10 assert setup["widget"].c_type.currentIndex() == 5 assert setup["widget"].c_type.currentText() == "IPMSM" assert setup["widget"].is_inner_rotor.checkState() == Qt.Unchecked # WRSM setup["test_obj"] = MachineWRSM(name="test_machine_wrsm", type_machine=9) setup["test_obj"].stator = LamSlotWind( is_stator=True, is_internal=True, Rint=0.21, Rext=0.22 ) setup["test_obj"].stator.winding.p = 5 setup["test_obj"].rotor = LamSlotWind( is_stator=False, is_internal=False, Rint=0.11, Rext=0.12 ) setup["widget"] = SMachineType( machine=setup["test_obj"], matlib=[], is_stator=False ) assert setup["widget"].le_name.text() == "test_machine_wrsm" assert setup["widget"].si_p.value() == 5 assert setup["widget"].c_type.currentIndex() == 6 assert setup["widget"].c_type.currentText() == "WRSM" assert setup["widget"].is_inner_rotor.checkState() == Qt.Unchecked
[docs] def test_set_name(self, setup): """Check that the Widget allow to update name""" # Clear the field before writing the new value setup["widget"].le_name.clear() value = round(uniform(0, 1), 4) QTest.keyClicks(setup["widget"].le_name, "test_" + str(value)) setup["widget"].le_name.editingFinished.emit() # To trigger the slot assert setup["test_obj"].name == "test_" + str(value)
[docs] def test_set_is_inner_rotor(self, setup): """Check that the Widget allow to update is_inner_rotor""" setup["widget"].is_inner_rotor.setCheckState(Qt.Checked) assert setup["test_obj"].rotor.is_internal setup["widget"].is_inner_rotor.setCheckState(Qt.Unchecked) assert not setup["test_obj"].rotor.is_internal
[docs] def test_set_p_scim(self, setup): """Check that the Widget allow to update p""" # Clear the field before writing the new value setup["widget"].si_p.clear() value = int(uniform(3, 100)) QTest.keyClicks(setup["widget"].si_p, str(value)) setup["widget"].si_p.editingFinished.emit() # To trigger the slot assert setup["test_obj"].stator.winding.p == value assert setup["test_obj"].rotor.winding.p == value
[docs] def test_set_p_dfim(self, setup): """Check that the Widget allow to update p""" setup["test_obj"] = MachineDFIM(name="test_machine_dfim", type_machine=4) setup["test_obj"].stator = LamSlotWind( is_stator=True, is_internal=True, Rint=0.21, Rext=0.22 ) setup["test_obj"].rotor = LamSlotWind( is_stator=False, is_internal=False, Rint=0.11, Rext=0.12 ) setup["widget"] = SMachineType( machine=setup["test_obj"], matlib=[], is_stator=False ) # Clear the field before writing the new value setup["widget"].si_p.clear() value = int(uniform(3, 100)) QTest.keyClicks(setup["widget"].si_p, str(value)) setup["widget"].si_p.editingFinished.emit() # To trigger the slot assert setup["test_obj"].stator.winding.p == value assert setup["test_obj"].rotor.winding.p == value
[docs] def test_set_p_spmsm(self, setup): """Check that the Widget allow to update p""" setup["test_obj"] = MachineSIPMSM(name="test_machine_spmsm", type_machine=6) setup["test_obj"].stator = LamSlotWind( is_stator=True, is_internal=True, Rint=0.21, Rext=0.22 ) setup["test_obj"].rotor = LamSlotMag( is_stator=False, is_internal=False, Rint=0.11, Rext=0.12 ) setup["widget"] = SMachineType( machine=setup["test_obj"], matlib=[], is_stator=False ) # Clear the field before writing the new value setup["widget"].si_p.clear() value = int(uniform(3, 100)) QTest.keyClicks(setup["widget"].si_p, str(value)) setup["widget"].si_p.editingFinished.emit() # To trigger the slot assert setup["test_obj"].stator.winding.p == value assert setup["test_obj"].rotor.slot.Zs == 2 * value
[docs] def test_set_p_sipmsm(self, setup): """Check that the Widget allow to update p""" setup["test_obj"] = MachineSIPMSM(name="test_machine_ipmsm", type_machine=7) setup["test_obj"].stator = LamSlotWind( is_stator=True, is_internal=True, Rint=0.21, Rext=0.22 ) setup["test_obj"].rotor = LamSlotMag( is_stator=False, is_internal=False, Rint=0.11, Rext=0.12 ) setup["widget"] = SMachineType( machine=setup["test_obj"], matlib=[], is_stator=False ) # Clear the field before writing the new value setup["widget"].si_p.clear() value = int(uniform(3, 100)) QTest.keyClicks(setup["widget"].si_p, str(value)) setup["widget"].si_p.editingFinished.emit() # To trigger the slot assert setup["test_obj"].stator.winding.p == value assert setup["test_obj"].rotor.slot.Zs == 2 * value
[docs] def test_set_p_ipmsm(self, setup): """Check that the Widget allow to update p""" setup["test_obj"] = MachineIPMSM(name="test_machine_ipmsm", type_machine=8) setup["test_obj"].stator = LamSlotWind( is_stator=True, is_internal=True, Rint=0.21, Rext=0.22 ) setup["test_obj"].rotor = LamHole( is_stator=False, is_internal=False, Rint=0.11, Rext=0.12 ) setup["test_obj"].rotor.hole = list() setup["test_obj"].rotor.hole.append(HoleM50(Zh=0)) setup["widget"] = SMachineType( machine=setup["test_obj"], matlib=[], is_stator=False ) # Clear the field before writing the new value setup["widget"].si_p.clear() value = int(uniform(3, 100)) QTest.keyClicks(setup["widget"].si_p, str(value)) setup["widget"].si_p.editingFinished.emit() # To trigger the slot assert setup["test_obj"].stator.winding.p == value assert setup["test_obj"].rotor.hole[0].Zh == 2 * value
[docs] def test_set_p_syrm(self, setup): """Check that the Widget allow to update p""" setup["test_obj"] = MachineSyRM(name="test_machine_ipmsm", type_machine=5) setup["test_obj"].stator = LamSlotWind( is_stator=True, is_internal=True, Rint=0.21, Rext=0.22 ) setup["test_obj"].rotor = LamHole( is_stator=False, is_internal=False, Rint=0.11, Rext=0.12 ) setup["test_obj"].rotor.hole = list() setup["test_obj"].rotor.hole.append(HoleM50(Zh=0)) setup["widget"] = SMachineType( machine=setup["test_obj"], matlib=[], is_stator=False ) # Clear the field before writing the new value setup["widget"].si_p.clear() value = int(uniform(3, 100)) QTest.keyClicks(setup["widget"].si_p, str(value)) setup["widget"].si_p.editingFinished.emit() # To trigger the slot assert setup["test_obj"].stator.winding.p == value assert setup["test_obj"].rotor.hole[0].Zh == 2 * value
[docs] def test_set_p(self, setup): """Check that the Widget allow to update p when Winding is None""" setup["test_obj"] = MachineSyRM(name="test_machine_ipmsm", type_machine=5) setup["test_obj"].stator = LamSlotWind( is_stator=True, is_internal=True, Rint=0.21, Rext=0.22, Ksfill=0.545 ) setup["test_obj"].stator.winding = None setup["test_obj"].rotor = LamHole( is_stator=False, is_internal=False, Rint=0.11, Rext=0.12 ) setup["test_obj"].rotor.hole = list() setup["test_obj"].rotor.hole.append(HoleM50(Zh=0)) setup["widget"] = SMachineType( machine=setup["test_obj"], matlib=[], is_stator=False ) # Clear the field before writing the new value setup["widget"].si_p.clear() value = int(uniform(3, 100)) QTest.keyClicks(setup["widget"].si_p, str(value)) setup["widget"].si_p.editingFinished.emit() # To trigger the slot assert setup["widget"].machine.stator.winding.p == value assert setup["widget"].machine.stator.winding.is_reverse_wind == None assert setup["widget"].machine.stator.winding.Nslot_shift_wind == None assert setup["widget"].machine.stator.winding.qs == None assert setup["widget"].machine.stator.winding.Ntcoil == None assert setup["widget"].machine.stator.winding.Npcpp == None assert setup["widget"].machine.stator.winding.type_connection == None assert setup["widget"].machine.stator.winding.Lewout == None
[docs] @pytest.mark.skip(reason="Need to have DMachineSetup as parent") def test_set_type_ipmsm(self, setup): """Check that you can define an IPMSM machine""" setup["widget"].c_type.setCurrentText("IPMSM") # Clear the field before writing the new value setup["widget"].si_p.clear() value = int(uniform(3, 100)) QTest.keyClicks(setup["widget"].si_p, str(value)) setup["widget"].si_p.editingFinished.emit() # To trigger the slot assert setup["widget"].machine.stator.winding.p == value assert type(setup["widget"].machine) is MachineIPMSM assert setup["widget"].machine.rotor.hole == list()
# def test_set_c_type(self, setup): # """Check that the Widget allow to update c_type when changing value in the combobox""" # # SIPMSM # setup["test_obj"] = MachineSIPMSM(name="test_machine_sipmsm", type_machine=7) # setup["test_obj"].stator = LamSlotWind( # is_stator=True, is_internal=False, Rint=0.21, Rext=0.22 # ) # setup["test_obj"].stator.winding.p = 9 # setup["test_obj"].rotor = LamSlotMag( # is_stator=False, is_internal=True, Rint=0.11, Rext=0.12 # ) # setup["widget"] = SMachineType(machine=setup["test_obj"], matlib=[], is_stator=False) # assert setup["widget"].le_name.text() == "test_machine_sipmsm" # assert setup["widget"].si_p.value() == 9 # assert setup["widget"].c_type.currentIndex() == 4 # assert setup["widget"].c_type.currentText() == "SIPMSM" # assert setup["widget"].is_inner_rotor.checkState() == Qt.Checked # QTest.keyClicks(setup["widget"].c_type, "WRSM") # assert setup["widget"].c_type.currentIndex() == 3 # assert setup["widget"].c_type.currentText() == "WRSM" TODO
[docs] def test_check(self, setup): setup["test_obj"] = MachineSyRM(name="test_machine_ipmsm", type_machine=5) setup["test_obj"].stator = LamSlotWind( is_stator=True, is_internal=True, Rint=0.21, Rext=0.22 ) setup["test_obj"].stator.winding = None assert setup["widget"].check(setup["test_obj"]) == "Missing stator winding"