Skip to content

Default DISP to TRUE for all In records #74

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
Dec 14, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 11 additions & 2 deletions .vscode/launch.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,22 @@
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Python: Current File",
"type": "python",
"request": "launch",
"program": "${file}",
"console": "integratedTerminal"
},
{
"name": "Debug Unit Test",
"type": "python",
"request": "launch",
"justMyCode": false,
"program": "${file}",
"purpose": ["debug-test"],
"purpose": [
"debug-test"
],
"console": "integratedTerminal",
"env": {
// The default config in setup.cfg's "[tool:pytest]" adds coverage.
Expand All @@ -20,4 +29,4 @@
},
}
]
}
}
1 change: 1 addition & 0 deletions CHANGELOG.rst
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ Unreleased_
Changed:

- `Remove python2 support <../../pull/64>`
- `Default DISP to TRUE for all In records <../../pull/74>`

3.2.1_ - 2021-11-25
-------------------
Expand Down
5 changes: 3 additions & 2 deletions softioc/builder.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,12 +18,13 @@


def _in_record(record, name, **fields):
'''For input records we provide some automatic extra features: scanning
and initialisation as appropriate.'''
'''For input records we provide some automatic extra features: scanning,
initialisation as appropriate, and blocking puts from outside the IOC.'''

fields.setdefault('SCAN', 'I/O Intr')
if 'initial_value' in fields:
fields.setdefault('PINI', 'YES')
fields.setdefault('DISP', 1)
return getattr(PythonDevice, record)(name, **fields)


Expand Down
9 changes: 9 additions & 0 deletions tests/expected_records.db
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
record(ai, "TS-DI-TEST-01:AI")
{
field(DISP, "1")
field(DTYP, "Python")
field(INP, "@TS-DI-TEST-01:AI")
field(PINI, "YES")
Expand All @@ -14,6 +15,7 @@ record(ao, "TS-DI-TEST-01:AO")

record(bi, "TS-DI-TEST-01:BOOLIN")
{
field(DISP, "1")
field(DTYP, "Python")
field(INP, "@TS-DI-TEST-01:BOOLIN")
field(ONAM, "False")
Expand All @@ -33,6 +35,7 @@ record(bo, "TS-DI-TEST-01:BOOLOUT")

record(longin, "TS-DI-TEST-01:LONGIN")
{
field(DISP, "1")
field(DTYP, "Python")
field(INP, "@TS-DI-TEST-01:LONGIN")
field(MDEL, "-1")
Expand All @@ -49,6 +52,7 @@ record(longout, "TS-DI-TEST-01:LONGOUT")

record(waveform, "TS-DI-TEST-01:LONGSTRING")
{
field(DISP, "1")
field(DTYP, "Python")
field(FTVL, "UCHAR")
field(INP, "@TS-DI-TEST-01:LONGSTRING")
Expand All @@ -58,6 +62,7 @@ record(waveform, "TS-DI-TEST-01:LONGSTRING")

record(mbbi, "TS-DI-TEST-01:MBBI")
{
field(DISP, "1")
field(DTYP, "Python")
field(INP, "@TS-DI-TEST-01:MBBI")
field(ONST, "Two")
Expand Down Expand Up @@ -87,6 +92,7 @@ record(mbbo, "TS-DI-TEST-01:MBBO")

record(waveform, "TS-DI-TEST-01:SIN")
{
field(DISP, "1")
field(DTYP, "Python")
field(FTVL, "DOUBLE")
field(INP, "@TS-DI-TEST-01:SIN")
Expand All @@ -111,6 +117,7 @@ record(ao, "TS-DI-TEST-01:SINP")

record(stringin, "TS-DI-TEST-01:STRINGIN")
{
field(DISP, "1")
field(DTYP, "Python")
field(INP, "@TS-DI-TEST-01:STRINGIN")
field(PINI, "YES")
Expand All @@ -125,6 +132,7 @@ record(stringout, "TS-DI-TEST-01:STRINGOUT")

record(waveform, "TS-DI-TEST-01:WAVEFORM")
{
field(DISP, "1")
field(DTYP, "Python")
field(FTVL, "DOUBLE")
field(INP, "@TS-DI-TEST-01:WAVEFORM")
Expand All @@ -135,6 +143,7 @@ record(waveform, "TS-DI-TEST-01:WAVEFORM")

record(waveform, "TS-DI-TEST-01:WAVEFORM2")
{
field(DISP, "1")
field(DTYP, "Python")
field(FTVL, "FLOAT")
field(INP, "@TS-DI-TEST-01:WAVEFORM2")
Expand Down
33 changes: 33 additions & 0 deletions tests/test_records.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,3 +18,36 @@ def test_enum_length_restriction():
"ManyLabels", "one", "two", "three", "four", "five", "six",
"seven", "eight", "nine", "ten", "eleven", "twelve", "thirteen",
"fourteen", "fifteen", "sixteen", "seventeen")

def test_DISP_defaults_on():
"""Test that all IN record types have DISP=1 set by default"""
in_records = [
builder.aIn,
builder.boolIn,
builder.longIn,
builder.mbbIn,
builder.stringIn,
builder.WaveformIn,
]

record_counter = 0

for creation_func in in_records:
kwargs = {}
record_counter += 1
record_name = "DISP" + str(record_counter)

if creation_func == builder.WaveformIn:
kwargs = {"length": 1}

record = creation_func(record_name, **kwargs)

# Note: DISP attribute won't exist if field not specified
assert record.DISP.Value() == 1

def test_DISP_can_be_overridden():
"""Test that DISP can be forced off for In records"""

record = builder.longIn("DISP-OFF", DISP=0)
# Note: DISP attribute won't exist if field not specified
assert record.DISP.Value() == 0