kopia lustrzana https://github.com/Hamlib/Hamlib
132 wiersze
4.9 KiB
Python
Executable File
132 wiersze
4.9 KiB
Python
Executable File
#! /bin/env pytest
|
|
"""Tests of the Python bindings for Hamlib
|
|
|
|
Running this script directly will use the installed bindings.
|
|
For an in-tree run use "make check", or set PYTHONPATH to point to
|
|
the directories containing Hamlib.py and _Hamlib.so.
|
|
"""
|
|
from pytest import approx
|
|
|
|
import Hamlib
|
|
|
|
class TestClass:
|
|
"""Container class for tests"""
|
|
|
|
def test_startup(self):
|
|
"""Simple script to test the Hamlib.py module with Python3."""
|
|
|
|
assert isinstance(Hamlib.cvar.hamlib_version, str)
|
|
|
|
Hamlib.rig_set_debug(Hamlib.RIG_DEBUG_NONE)
|
|
|
|
model = Hamlib.RIG_MODEL_DUMMY
|
|
my_rig = Hamlib.Rig(model)
|
|
assert my_rig is not None
|
|
assert my_rig.set_conf("rig_pathname", "/dev/Rig") is None
|
|
assert my_rig.set_conf("retry", "5") is None
|
|
|
|
assert my_rig.open() is None
|
|
|
|
assert my_rig.get_conf("rig_pathname") == "/dev/Rig"
|
|
assert my_rig.get_conf("retry") == '5'
|
|
|
|
assert my_rig.error_status == Hamlib.RIG_OK
|
|
assert Hamlib.rigerror(my_rig.error_status) == "Command completed successfully\n"
|
|
|
|
assert my_rig.set_freq(Hamlib.RIG_VFO_B, 5700000000) is None
|
|
assert my_rig.set_vfo(Hamlib.RIG_VFO_B) is None
|
|
assert my_rig.get_freq() == 5700000000
|
|
|
|
assert my_rig.set_freq(Hamlib.RIG_VFO_A, 145550000) is None
|
|
|
|
(mode, width) = my_rig.get_mode(Hamlib.RIG_VFO_A)
|
|
assert Hamlib.rig_strrmode(mode) == 'FM'
|
|
assert width == 15000
|
|
|
|
assert my_rig.set_mode(Hamlib.RIG_MODE_CW) is None
|
|
(mode, width) = my_rig.get_mode()
|
|
assert Hamlib.rig_strrmode(mode) == 'CW'
|
|
assert width == 0
|
|
|
|
assert isinstance(my_rig.caps.copyright, str)
|
|
assert isinstance(my_rig.caps.model_name, str)
|
|
assert isinstance(my_rig.caps.mfg_name, str)
|
|
assert isinstance(my_rig.caps.version, str)
|
|
assert isinstance(Hamlib.rig_strstatus(my_rig.caps.status), str)
|
|
assert isinstance(my_rig.get_info(), str)
|
|
|
|
assert my_rig.set_level("VOXDELAY", 1) is None
|
|
assert my_rig.get_level_i("VOXDELAY") == 1
|
|
|
|
assert my_rig.set_level(Hamlib.RIG_LEVEL_VOXDELAY, 5) is None
|
|
assert my_rig.get_level_i(Hamlib.RIG_LEVEL_VOXDELAY) == 5
|
|
|
|
af = 12.34
|
|
assert my_rig.set_level("AF", af) is None
|
|
assert my_rig.error_status == Hamlib.RIG_OK
|
|
assert my_rig.get_level_f(Hamlib.RIG_LEVEL_AF) == approx(12.34)
|
|
assert my_rig.error_status == Hamlib.RIG_OK
|
|
|
|
assert my_rig.get_level_f(Hamlib.RIG_LEVEL_RFPOWER_METER)
|
|
assert my_rig.get_level_f(Hamlib.RIG_LEVEL_RFPOWER_METER_WATTS)
|
|
assert my_rig.get_level_i(Hamlib.RIG_LEVEL_STRENGTH)
|
|
|
|
chan = Hamlib.channel(Hamlib.RIG_VFO_B)
|
|
assert chan.vfo == Hamlib.RIG_VFO_B
|
|
assert my_rig.get_channel(chan, 1) is None
|
|
assert my_rig.error_status == Hamlib.RIG_OK
|
|
|
|
assert Hamlib.rig_strvfo(chan.vfo) == 'MainB'
|
|
assert chan.freq == 5700000000
|
|
assert my_rig.caps.attenuator == [10, 20, 30, 0, 0, 0, 0, 0]
|
|
# Can't seem to get get_vfo_info to work
|
|
#(freq, width, mode, split) = my_rig.get_vfo_info(Hamlib.RIG_VFO_A,freq,width,mode,split)
|
|
#print("Rig vfo_info:\t\tfreq=%s, mode=%s, width=%s, split=%s" % (freq, mode, width, split))
|
|
|
|
assert my_rig.send_morse(Hamlib.RIG_VFO_A, "73") is None
|
|
assert my_rig.close() is None
|
|
|
|
# Some static functions
|
|
|
|
err, lon1, lat1 = Hamlib.locator2longlat("IN98XC")
|
|
assert err == Hamlib.RIG_OK
|
|
assert lon1 == approx(-0.0417, abs=1.0e-04) # FIXME why need to override tolerance?
|
|
assert lat1 == approx(48.1042)
|
|
assert Hamlib.longlat2locator(lon1, lat1, 3) == [Hamlib.RIG_OK, 'IN98XC']
|
|
|
|
err, lon2, lat2 = Hamlib.locator2longlat("DM33DX")
|
|
assert err == Hamlib.RIG_OK
|
|
assert lon2 == approx(-113.7083)
|
|
assert lat2 == approx(33.9792)
|
|
assert Hamlib.longlat2locator(lon2, lat2, 3) == [Hamlib.RIG_OK, 'DM33DX']
|
|
|
|
err, dist, az = Hamlib.qrb(lon1, lat1, lon2, lat2)
|
|
assert err == Hamlib.RIG_OK
|
|
assert dist == approx(8765.814)
|
|
assert az == approx(309.0)
|
|
longpath = Hamlib.distance_long_path(dist)
|
|
assert longpath == approx(31266.186)
|
|
|
|
# dec2dms expects values from 180 to -180
|
|
# sw is 1 when deg is negative (west or south) as 0 cannot be signed
|
|
err, deg1, mins1, sec1, sw1 = Hamlib.dec2dms(lon1)
|
|
assert err == Hamlib.RIG_OK
|
|
assert deg1 == 0
|
|
assert mins1 == 2
|
|
assert sec1 == 29
|
|
assert sw1 == 1
|
|
|
|
err, deg2, mins2, sec2, sw2 = Hamlib.dec2dms(lat1)
|
|
assert err == Hamlib.RIG_OK
|
|
assert deg2 == 48
|
|
assert mins2 == 6
|
|
assert sec2 == 15
|
|
assert sw2 == 0
|
|
|
|
lon3 = Hamlib.dms2dec(deg1, mins1, sec1, sw1)
|
|
lat3 = Hamlib.dms2dec(deg2, mins2, sec2, sw2)
|
|
assert lon3 == approx(-0.0414, abs=1.0e-04) # FIXME why need to override tolerance?
|
|
assert lat3 == approx(48.1042)
|
|
|
|
assert my_rig.set_vfo_opt(0) is None
|