import os
import sys
import time
import subprocess
import pyautogui
import pyperclip
from .input.keyboard import typeKey, keyRelease
from .constants import NETEDIT_APP, TEXTTEST_SANDBOX, REFERENCE_PNG
from .constants import DELAY_REFERENCE, DELAY_MOUSE_MOVE, DELAY_MOUSE_CLICK
def Popen(extraParameters):
"""
@brief open netedit
"""
neteditCall = [NETEDIT_APP]
if os.path.exists(os.path.join(TEXTTEST_SANDBOX, "netedit_B.netecfg")):
neteditCall += ['-c netedit_B.netecfg']
elif os.path.exists(os.path.join(TEXTTEST_SANDBOX, "netedit_A.netecfg")):
neteditCall += ['-c netedit_A.netecfg']
elif os.path.exists(os.path.join(TEXTTEST_SANDBOX, "sumo_B.netecfg")):
neteditCall += ['-c sumo_B.netecfg']
elif os.path.exists(os.path.join(TEXTTEST_SANDBOX, "sumo_A.netecfg")):
neteditCall += ['-c sumo_A.netecfg']
neteditCall += extraParameters
return subprocess.Popen(neteditCall, env=os.environ, stdout=sys.stdout, stderr=sys.stderr, cwd=TEXTTEST_SANDBOX)
def getReferenceMatch(neProcess, makeScrenshot):
"""
@brief obtain reference referencePosition (pink square)
"""
print("Finding reference")
errorScreenshot = pyautogui.screenshot()
try:
time.sleep(DELAY_REFERENCE)
positionOnScreen = pyautogui.locateOnScreen(REFERENCE_PNG, minSearchTime=3, confidence=0.95)
except Exception as e:
print(e)
positionOnScreen = None
errorScreenshot = pyautogui.screenshot()
if positionOnScreen:
referencePosition = (positionOnScreen[0] + 16, positionOnScreen[1] + 16)
print("TestFunctions: 'reference.png' found. Position: " +
str(referencePosition[0]) + " - " + str(referencePosition[1]))
if referencePosition != (304, 168):
print("TestFunctions: Position of 'reference.png' isn't consistent")
pyautogui.moveTo(referencePosition)
time.sleep(DELAY_MOUSE_MOVE)
typeKey("i")
pyautogui.click(button='left')
time.sleep(DELAY_MOUSE_CLICK)
return referencePosition
if (makeScrenshot):
errorScreenshot.saveExistent("errorScreenshot.png")
neProcess.kill()
sys.exit("TestFunctions: Killed Netedit process. 'reference.png' not found")
def setupAndStart(extraParameters=[], makeScrenshot=True):
"""
@brief setup and start netedit
"""
if os.name == "posix":
pyperclip.set_clipboard("xclip")
neteditProcess = Popen(extraParameters)
print("TestFunctions: Netedit opened successfully")
keyRelease("shift")
keyRelease("control")
keyRelease("alt")
return neteditProcess, getReferenceMatch(neteditProcess, makeScrenshot)