mirror of
https://github.com/onyx-and-iris/xair-api-python.git
synced 2026-04-18 13:33:31 +00:00
move xair tests into tests.xair package
This commit is contained in:
1
tests/xair/MR18.svg
Normal file
1
tests/xair/MR18.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="60" height="20" role="img" aria-label="tests: 75"><title>tests: 75</title><linearGradient id="s" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><clipPath id="r"><rect width="60" height="20" rx="3" fill="#fff"/></clipPath><g clip-path="url(#r)"><rect width="37" height="20" fill="#555"/><rect x="37" width="23" height="20" fill="#4c1"/><rect width="60" height="20" fill="url(#s)"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><text aria-hidden="true" x="195" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="270">tests</text><text x="195" y="140" transform="scale(.1)" fill="#fff" textLength="270">tests</text><text aria-hidden="true" x="475" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="130">75</text><text x="475" y="140" transform="scale(.1)" fill="#fff" textLength="130">75</text></g></svg>
|
||||
|
After Width: | Height: | Size: 1.1 KiB |
39
tests/xair/__init__.py
Normal file
39
tests/xair/__init__.py
Normal file
@@ -0,0 +1,39 @@
|
||||
import sys
|
||||
import threading
|
||||
from dataclasses import dataclass
|
||||
|
||||
import xair_api
|
||||
from xair_api import kinds
|
||||
|
||||
kind_id = "MR18"
|
||||
ip = "mixer.local"
|
||||
|
||||
tests = xair_api.connect(kind_id, ip=ip)
|
||||
|
||||
kind = kinds.get(kind_id)
|
||||
|
||||
|
||||
@dataclass
|
||||
class Data:
|
||||
"""bounds data to map tests to a kind"""
|
||||
|
||||
name: str = kind.id_
|
||||
dca: int = kind.num_dca - 1
|
||||
strip: int = kind.num_strip - 1
|
||||
bus: int = kind.num_bus - 1
|
||||
fx: int = kind.num_fx - 1
|
||||
|
||||
|
||||
data = Data()
|
||||
|
||||
|
||||
def setup_module():
|
||||
print(f"\nRunning tests for kind [{data.name}]\n", file=sys.stdout)
|
||||
tests.worker = threading.Thread(target=tests.run_server)
|
||||
tests.worker.daemon = True
|
||||
tests.worker.start()
|
||||
tests.validate_connection()
|
||||
|
||||
|
||||
def teardown_module():
|
||||
tests.server.shutdown()
|
||||
32
tests/xair/pre-commit.ps1
Normal file
32
tests/xair/pre-commit.ps1
Normal file
@@ -0,0 +1,32 @@
|
||||
Function RunTests {
|
||||
"Running tests in directory $PSScriptRoot" | Write-Host
|
||||
$coverage = Join-Path $PSScriptRoot "pytest_coverage.log"
|
||||
$run_tests = "pytest -v $PSScriptRoot --capture=tee-sys --junitxml=$(Join-Path $PSScriptRoot ".coverage.xml")"
|
||||
$match_pattern = "^=|^\s*$|^Running|^Using|^plugins|^collecting|^tests"
|
||||
|
||||
if ( Test-Path $coverage ) { Clear-Content $coverage }
|
||||
|
||||
ForEach ($line in $(Invoke-Expression $run_tests)) {
|
||||
If ( $line -Match $match_pattern ) {
|
||||
if ( $line -Match "^Running tests for kind \[(\w+)\]" ) { $kind = $Matches[1] }
|
||||
$line | Tee-Object -FilePath $coverage -Append
|
||||
}
|
||||
}
|
||||
Write-Output "$(Get-TimeStamp)" | Out-File $coverage -Append
|
||||
|
||||
Invoke-Expression "genbadge tests -t 90 -i $(Join-Path $PSScriptRoot ".coverage.xml") -o $(Join-Path $PSScriptRoot "$kind.svg")"
|
||||
}
|
||||
|
||||
Function Get-TimeStamp {
|
||||
|
||||
return "[{0:MM/dd/yy} {0:HH:mm:ss}]" -f (Get-Date)
|
||||
|
||||
}
|
||||
|
||||
if ($MyInvocation.InvocationName -ne ".") {
|
||||
Invoke-Expression ".\.venv\Scripts\Activate.ps1"
|
||||
|
||||
RunTests
|
||||
|
||||
Invoke-Expression "deactivate"
|
||||
}
|
||||
373
tests/xair/test_shared.py
Normal file
373
tests/xair/test_shared.py
Normal file
@@ -0,0 +1,373 @@
|
||||
import pytest
|
||||
|
||||
from tests.xair import data, tests
|
||||
|
||||
"""
|
||||
Not every subclass is tested for every superclass to avoid redundancy.
|
||||
LR: mix, config, insert, geq
|
||||
Strip: mix, preamp, config, gate, automix
|
||||
Bus: config, dyn, eq
|
||||
FXSend: group
|
||||
"""
|
||||
|
||||
""" Main LR TESTS """
|
||||
|
||||
|
||||
class TestSetAndGetLRMixHigher:
|
||||
"""Mix"""
|
||||
|
||||
__test__ = True
|
||||
|
||||
def setup_class(self):
|
||||
self.target = getattr(tests, "lr")
|
||||
self.target = getattr(self.target, "mix")
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"param,value",
|
||||
[("on", True), ("on", False)],
|
||||
)
|
||||
def test_it_sets_and_gets_lr_bool_params(self, param, value):
|
||||
setattr(self.target, param, value)
|
||||
assert getattr(self.target, param) == value
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"param,value",
|
||||
[("fader", -80.6), ("fader", -67.0)],
|
||||
)
|
||||
def test_it_sets_and_gets_lr_float_params(self, param, value):
|
||||
setattr(self.target, param, value)
|
||||
assert getattr(self.target, param) == value
|
||||
|
||||
|
||||
class TestSetAndGetLRConfigHigher:
|
||||
"""Config"""
|
||||
|
||||
__test__ = True
|
||||
|
||||
def setup_class(self):
|
||||
self.target = getattr(tests, "lr")
|
||||
self.target = getattr(self.target, "config")
|
||||
|
||||
@pytest.mark.parametrize("param,value", [("name", "test0"), ("name", "test1")])
|
||||
def test_it_sets_and_gets_lr_string_params(self, param, value):
|
||||
setattr(self.target, param, value)
|
||||
assert getattr(self.target, param) == value
|
||||
|
||||
|
||||
class TestSetAndGetLRInsertHigher:
|
||||
"""Insert"""
|
||||
|
||||
__test__ = True
|
||||
|
||||
def setup_class(self):
|
||||
self.target = getattr(tests, "lr")
|
||||
self.target = getattr(self.target, "insert")
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"param,value",
|
||||
[("on", True), ("on", False)],
|
||||
)
|
||||
def test_it_sets_and_gets_lr_bool_params(self, param, value):
|
||||
setattr(self.target, param, value)
|
||||
assert getattr(self.target, param) == value
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"param,value",
|
||||
[("sel", 0), ("sel", 4)],
|
||||
)
|
||||
def test_it_sets_and_gets_lr_int_params(self, param, value):
|
||||
setattr(self.target, param, value)
|
||||
assert getattr(self.target, param) == value
|
||||
|
||||
|
||||
class TestSetAndGetLRGEQHigher:
|
||||
"""GEQ"""
|
||||
|
||||
__test__ = True
|
||||
|
||||
def setup_class(self):
|
||||
self.target = getattr(tests, "lr")
|
||||
self.target = getattr(self.target, "geq")
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"param,value",
|
||||
[
|
||||
("slider_20", -13.5),
|
||||
("slider_20", 5.5),
|
||||
("slider_6k3", -8.5),
|
||||
("slider_6k3", 8.5),
|
||||
],
|
||||
)
|
||||
def test_it_sets_and_gets_lr_int_params(self, param, value):
|
||||
setattr(self.target, param, value)
|
||||
assert getattr(self.target, param) == value
|
||||
|
||||
|
||||
""" STRIP TESTS """
|
||||
|
||||
|
||||
class TestSetAndGetStripMixHigher:
|
||||
"""Mix"""
|
||||
|
||||
__test__ = True
|
||||
|
||||
def setup_class(self):
|
||||
self.target = getattr(tests, "strip")
|
||||
self.target = getattr(self.target[data.strip], "mix")
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"param,value",
|
||||
[("on", True), ("on", False), ("lr", True), ("lr", False)],
|
||||
)
|
||||
def test_it_sets_and_gets_strip_bool_params(self, param, value):
|
||||
setattr(self.target, param, value)
|
||||
assert getattr(self.target, param) == value
|
||||
|
||||
|
||||
class TestSetAndGetStripPreampHigher:
|
||||
"""Preamp"""
|
||||
|
||||
__test__ = True
|
||||
|
||||
def setup_class(self):
|
||||
self.target = getattr(tests, "strip")
|
||||
self.target = getattr(self.target[data.strip], "preamp")
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"param,value",
|
||||
[
|
||||
("highpasson", True),
|
||||
("highpasson", False),
|
||||
("usbinput", True),
|
||||
("usbinput", False),
|
||||
],
|
||||
)
|
||||
def test_it_sets_and_gets_strip_bool_params(self, param, value):
|
||||
setattr(self.target, param, value)
|
||||
assert getattr(self.target, param) == value
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"param,value",
|
||||
[("highpassfilter", 20), ("highpassfilter", 399)],
|
||||
)
|
||||
def test_it_sets_and_gets_strip_int_params(self, param, value):
|
||||
setattr(self.target, param, value)
|
||||
assert getattr(self.target, param) == value
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"param,value",
|
||||
[("usbtrim", -16.5), ("usbtrim", 5.5)],
|
||||
)
|
||||
def test_it_sets_and_gets_strip_float_params(self, param, value):
|
||||
setattr(self.target, param, value)
|
||||
assert getattr(self.target, param) == value
|
||||
|
||||
|
||||
class TestSetAndGetStripConfigHigher:
|
||||
"""Config"""
|
||||
|
||||
__test__ = True
|
||||
|
||||
def setup_class(self):
|
||||
self.target = getattr(tests, "strip")
|
||||
self.target = getattr(self.target[data.strip], "config")
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"param,value",
|
||||
[("inputsource", 0), ("inputsource", 18), ("usbreturn", 3), ("usbreturn", 12)],
|
||||
)
|
||||
def test_it_sets_and_gets_strip_int_params(self, param, value):
|
||||
setattr(self.target, param, value)
|
||||
assert getattr(self.target, param) == value
|
||||
|
||||
|
||||
class TestSetAndGetStripGateHigher:
|
||||
"""Gate"""
|
||||
|
||||
__test__ = True
|
||||
|
||||
def setup_class(self):
|
||||
self.target = getattr(tests, "strip")
|
||||
self.target = getattr(self.target[data.strip], "gate")
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"param,value",
|
||||
[
|
||||
("on", True),
|
||||
("on", False),
|
||||
("invert", True),
|
||||
("invert", False),
|
||||
("filteron", True),
|
||||
("filteron", False),
|
||||
],
|
||||
)
|
||||
def test_it_sets_and_gets_strip_bool_params(self, param, value):
|
||||
setattr(self.target, param, value)
|
||||
assert getattr(self.target, param) == value
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"param,value",
|
||||
[
|
||||
("range", 11),
|
||||
("range", 48),
|
||||
("attack", 5),
|
||||
("attack", 110),
|
||||
("release", 360),
|
||||
("release", 2505),
|
||||
("filtertype", 0),
|
||||
("filtertype", 8),
|
||||
],
|
||||
)
|
||||
def test_it_sets_and_gets_strip_int_params(self, param, value):
|
||||
setattr(self.target, param, value)
|
||||
assert getattr(self.target, param) == value
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"param,value",
|
||||
[("mode", "exp2"), ("mode", "duck")],
|
||||
)
|
||||
def test_it_sets_and_gets_strip_string_params(self, param, value):
|
||||
setattr(self.target, param, value)
|
||||
assert getattr(self.target, param) == value
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"param,value",
|
||||
[
|
||||
("threshold", -80.0),
|
||||
("threshold", 0.0),
|
||||
("hold", 355),
|
||||
("hold", 63.2),
|
||||
("filterfreq", 37.2),
|
||||
("filterfreq", 12765),
|
||||
],
|
||||
)
|
||||
def test_it_sets_and_gets_strip_float_params(self, param, value):
|
||||
setattr(self.target, param, value)
|
||||
assert getattr(self.target, param) == value
|
||||
|
||||
|
||||
class TestSetAndGetStripAutomixHigher:
|
||||
"""Automix"""
|
||||
|
||||
__test__ = True
|
||||
|
||||
def setup_class(self):
|
||||
self.target = getattr(tests, "strip")
|
||||
self.target = getattr(self.target[data.strip], "automix")
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"param,value",
|
||||
[("group", 0), ("group", 2)],
|
||||
)
|
||||
def test_it_sets_and_gets_strip_int_params(self, param, value):
|
||||
setattr(self.target, param, value)
|
||||
assert getattr(self.target, param) == value
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"param,value",
|
||||
[("weight", -10.5), ("weight", 3.5)],
|
||||
)
|
||||
def test_it_sets_and_gets_strip_float_params(self, param, value):
|
||||
setattr(self.target, param, value)
|
||||
assert getattr(self.target, param) == value
|
||||
|
||||
|
||||
""" BUS TESTS """
|
||||
|
||||
|
||||
class TestSetAndGetBusConfigHigher:
|
||||
"""Config"""
|
||||
|
||||
__test__ = True
|
||||
|
||||
def setup_class(self):
|
||||
self.target = getattr(tests, "bus")
|
||||
self.target = getattr(self.target[data.bus], "config")
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"param,value",
|
||||
[("color", 0), ("color", 15)],
|
||||
)
|
||||
def test_it_sets_and_gets_bus_bool_params(self, param, value):
|
||||
setattr(self.target, param, value)
|
||||
assert getattr(self.target, param) == value
|
||||
|
||||
|
||||
class TestSetAndGetBusDynHigher:
|
||||
"""Dyn"""
|
||||
|
||||
__test__ = True
|
||||
|
||||
def setup_class(self):
|
||||
self.target = getattr(tests, "bus")
|
||||
self.target = getattr(self.target[data.bus], "dyn")
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"param,value",
|
||||
[("on", True), ("on", False)],
|
||||
)
|
||||
def test_it_sets_and_gets_bus_bool_params(self, param, value):
|
||||
setattr(self.target, param, value)
|
||||
assert getattr(self.target, param) == value
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"param,value",
|
||||
[
|
||||
("mode", "comp"),
|
||||
("mode", "exp"),
|
||||
("env", "lin"),
|
||||
("env", "log"),
|
||||
("det", "peak"),
|
||||
("det", "rms"),
|
||||
],
|
||||
)
|
||||
def test_it_sets_and_gets_bus_string_params(self, param, value):
|
||||
setattr(self.target, param, value)
|
||||
assert getattr(self.target, param) == value
|
||||
|
||||
|
||||
class TestSetAndGetBusEQHigher:
|
||||
"""EQ"""
|
||||
|
||||
__test__ = True
|
||||
|
||||
def setup_class(self):
|
||||
self.target = getattr(tests, "bus")
|
||||
self.target = getattr(self.target[data.bus], "eq")
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"param,value",
|
||||
[("on", True), ("on", False)],
|
||||
)
|
||||
def test_it_sets_and_gets_bus_bool_params(self, param, value):
|
||||
setattr(self.target, param, value)
|
||||
assert getattr(self.target, param) == value
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"param,value",
|
||||
[("mode", "peq"), ("mode", "geq"), ("mode", "teq")],
|
||||
)
|
||||
def test_it_sets_and_gets_bus_string_params(self, param, value):
|
||||
setattr(self.target, param, value)
|
||||
assert getattr(self.target, param) == value
|
||||
|
||||
|
||||
""" FXSEND TESTS """
|
||||
|
||||
|
||||
class TestSetAndGetFXSendGroupHigher:
|
||||
"""Group"""
|
||||
|
||||
__test__ = True
|
||||
|
||||
def setup_class(self):
|
||||
self.target = getattr(tests, "fxsend")
|
||||
self.target = getattr(self.target[data.fx], "group")
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"param,value",
|
||||
[("dca", 0), ("dca", 12), ("mute", 3), ("mute", 8)],
|
||||
)
|
||||
def test_it_sets_and_gets_fxsend_int_params(self, param, value):
|
||||
setattr(self.target, param, value)
|
||||
assert getattr(self.target, param) == value
|
||||
Reference in New Issue
Block a user