pygpibtoolkit/test/test_prologix_emulator.py

Sat, 19 May 2018 00:07:15 +0200

author
David Douard <david.douard@logilab.fr>
date
Sat, 19 May 2018 00:07:15 +0200
changeset 101
975576e55563
child 102
91713944ebb0
permissions
-rw-r--r--

[prologix] beginning of a proper prologix dongle emulator

#
import serial
import time
import pygpibtoolkit.prologix_emulator as PE

import pytest


@pytest.fixture(scope='session')
def emulator():
    emul = PE.BasePrologixEmulator()
    cnx = serial.Serial(emul.serialurl, timeout=0)
    yield (emul, cnx)
    emul.close()
    cnx.close()


def test_base(emulator):
    emul, cnx = emulator
    emul.reset()
    assert emul.mode == 1
    assert emul.addr == 5


def test_cmd_mode_get(emulator):
    emul, cnx = emulator
    emul.reset()
    cnx.write(b'++mode\r\n')
    time.sleep(0.1)
    result = cnx.readlines()
    assert len(result) == 1
    result = result[0].strip()
    assert result == b'1'


def test_cmd_mode_set(emulator):
    emul, cnx = emulator
    emul.reset()
    cnx.write(b'++mode 0\r\n')
    time.sleep(0.1)
    result = cnx.readlines()
    assert len(result) == 0
    assert emul.mode == 0


def test_cmd_mode_err(emulator):
    emul, cnx = emulator
    emul.reset()
    for value in (b'2', b'0 0', b'a'):
        cnx.write(b'++mode %s\r\n' % value)
        time.sleep(0.1)
        result = cnx.readlines()
        assert len(result) == 1
        result = result[0].strip()
        assert result == b'Error'
        assert emul.mode == 1


def test_cmd_addr_get(emulator):
    emul, cnx = emulator
    emul.reset()
    cnx.write(b'++addr\r\n')
    time.sleep(0.1)
    result = cnx.readlines()
    assert len(result) == 1
    result = result[0].strip()
    assert result == b'5'


def test_cmd_addr_set(emulator):
    emul, cnx = emulator
    emul.reset()
    for value in (0, 1, 10, 31):
        cnx.write(b'++addr %s\r\n' % str(value).encode())
        time.sleep(0.1)
        result = cnx.readlines()
        assert len(result) == 0
        assert emul.addr == value


def test_cmd_addr_err(emulator):
    emul, cnx = emulator
    emul.reset()
    for value in (b'-2', b'0 0', b'a'):
        cnx.write(b'++addr %s\r\n' % value)
        time.sleep(0.1)
        result = cnx.readlines()
        assert len(result) == 1
        result = result[0].strip()
        assert result == b'Error'
        assert emul.addr == 5

mercurial