LIBRARY
Logical.Tests.LogicalValidation ​
Validation test for all Logical blocks with deterministic expected outputs.
Uses a Ramp with height=4, duration=4: ramp(t) = offset + t. At t=1 (the common stop time), ramp = offset + 1. A Constant at 1.0 serves as the second input for two-input comparisons. All threshold blocks use threshold = 1.0.
Three test cases via params overriding ramp.offset:
below (offset=-2): ramp(1)=-1.0 < threshold
equal (offset=0): ramp(1)=1.0 = threshold
above (offset=1.5): ramp(1)=2.5 > threshold
Usage ​
BlockComponents.Logical.Tests.LogicalValidation()
Behavior ​
Source ​
dyad
"""
Validation test for all Logical blocks with deterministic expected outputs.
Uses a Ramp with height=4, duration=4: ramp(t) = offset + t.
At t=1 (the common stop time), ramp = offset + 1.
A Constant at 1.0 serves as the second input for two-input comparisons.
All threshold blocks use threshold = 1.0.
Three test cases via `params` overriding `ramp.offset`:
- below (offset=-2): ramp(1)=-1.0 < threshold
- equal (offset=0): ramp(1)=1.0 = threshold
- above (offset=1.5): ramp(1)=2.5 > threshold
"""
test component LogicalValidation
"Ramp: ramp(t) = offset + t for t in [0, 4]"
ramp = BlockComponents.Sources.Ramp(height = 4, duration = 4, offset = -2) {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 20, "y1": 1200, "x2": 120, "y2": 1300, "rot": 0}
},
"tags": []
}
}
"Constant reference at 1.0"
const1 = BlockComponents.Sources.Constant(k = 1.0) {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 20, "y1": 405, "x2": 120, "y2": 505, "rot": 0}
},
"tags": []
}
}
"Constant reference at 10.0 for Switch test"
const10 = BlockComponents.Sources.Constant(k = 10.0) {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 171, "y1": 1301, "x2": 271, "y2": 1401, "rot": 0}
},
"tags": []
}
}
"Always-true boolean source (threshold well below ramp range)"
boolTrue = BlockComponents.Logical.GreaterThreshold(threshold = -100.0) {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 171, "y1": 620, "x2": 271, "y2": 720, "rot": 0}
},
"tags": []
}
}
"Always-false boolean source (threshold well above ramp range)"
boolFalse = BlockComponents.Logical.GreaterThreshold(threshold = 100.0) {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 171, "y1": 740, "x2": 271, "y2": 840, "rot": 0}
},
"tags": []
}
}
"Threshold comparisons (threshold = 1.0)"
gt_thresh = BlockComponents.Logical.GreaterThreshold(threshold = 1.0) {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 171, "y1": 980, "x2": 271, "y2": 1080, "rot": 0}
},
"tags": []
}
}
ge_thresh = BlockComponents.Logical.GreaterEqualThreshold(threshold = 1.0) {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 171, "y1": 1100, "x2": 271, "y2": 1200, "rot": 0}
},
"tags": []
}
}
lt_thresh = BlockComponents.Logical.LessThreshold(threshold = 1.0) {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 171, "y1": 860, "x2": 271, "y2": 960, "rot": 0}
},
"tags": []
}
}
le_thresh = BlockComponents.Logical.LessEqualThreshold(threshold = 1.0) {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 171, "y1": 500, "x2": 271, "y2": 600, "rot": 0}
},
"tags": []
}
}
"Two-input comparisons: ramp (u1) vs const1 (u2)"
gt = BlockComponents.Logical.Greater() {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 171, "y1": 140, "x2": 271, "y2": 240, "rot": 0}
},
"tags": []
}
}
ge = BlockComponents.Logical.GreaterEqual() {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 171, "y1": 380, "x2": 271, "y2": 480, "rot": 0}
},
"tags": []
}
}
lt = BlockComponents.Logical.Less() {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 171, "y1": 260, "x2": 271, "y2": 360, "rot": 0}
},
"tags": []
}
}
le = BlockComponents.Logical.LessEqual() {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 180, "y1": 20, "x2": 280, "y2": 120, "rot": 0}
},
"tags": []
}
}
"Not: inverts GreaterThreshold output"
not1 = BlockComponents.Logical.Not() {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 312, "y1": 980, "x2": 412, "y2": 1080, "rot": 0}
},
"tags": []
}
}
"Switch: selects ramp (u1) when gt_thresh true, else const10 (u3)"
sw = BlockComponents.Logical.Switch() {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 312, "y1": 1232, "x2": 412, "y2": 1332, "rot": 0}
},
"tags": []
}
}
"LogicalSwitch: selects boolTrue (u1) when gt_thresh true, else boolFalse (u3)"
lsw = BlockComponents.Logical.LogicalSwitch() {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 312, "y1": 703, "x2": 412, "y2": 803, "rot": 0}
},
"tags": []
}
}
relations
# Threshold comparisons: all driven by ramp
connect(ramp.y, gt_thresh.u) {
"Dyad": {
"edges": [
{"S": 1, "M": [], "E": -1},
{"S": -1, "M": [], "E": -2},
{"S": -2, "M": [], "E": 2}
],
"junctions": [{"x": 140, "y": 1250}, {"x": 140, "y": 1030}],
"renderStyle": "standard"
}
}
connect(ramp.y, ge_thresh.u) {
"Dyad": {
"edges": [{"S": 1, "M": [{"x": 140, "y": 1250}], "E": -1}, {"S": -1, "M": [], "E": 2}],
"junctions": [{"x": 140, "y": 1150}],
"renderStyle": "standard"
}
}
connect(ramp.y, lt_thresh.u) {
"Dyad": {
"edges": [{"S": 1, "M": [{"x": 140, "y": 1250}], "E": -1}, {"S": -1, "M": [], "E": 2}],
"junctions": [{"x": 140, "y": 910}],
"renderStyle": "standard"
}
}
connect(ramp.y, le_thresh.u) {
"Dyad": {
"edges": [{"S": 1, "M": [{"x": 140, "y": 1250}], "E": -1}, {"S": -1, "M": [], "E": 2}],
"junctions": [{"x": 140, "y": 550}],
"renderStyle": "standard"
}
}
# Two-input comparisons: ramp (u1) vs const1 (u2)
connect(ramp.y, gt.u1) {
"Dyad": {
"edges": [{"S": 1, "M": [{"x": 140, "y": 1250}], "E": -1}, {"S": -1, "M": [], "E": 2}],
"junctions": [{"x": 140, "y": 159}],
"renderStyle": "standard"
}
}
connect(const1.y, gt.u2) {
"Dyad": {
"edges": [
{"S": 1, "M": [], "E": -1},
{"S": -1, "M": [], "E": -2},
{"S": -2, "M": [], "E": 2}
],
"junctions": [{"x": 150, "y": 455}, {"x": 150, "y": 215}],
"renderStyle": "standard"
}
}
connect(ramp.y, ge.u1) {
"Dyad": {
"edges": [{"S": 1, "M": [{"x": 140, "y": 1250}], "E": -1}, {"S": -1, "M": [], "E": 2}],
"junctions": [{"x": 140, "y": 399}],
"renderStyle": "standard"
}
}
connect(const1.y, ge.u2) {"Dyad": {"edges": [{"S": 1, "M": [], "E": 2}], "renderStyle": "standard"}}
connect(ramp.y, lt.u1) {
"Dyad": {
"edges": [{"S": 1, "M": [{"x": 140, "y": 1250}], "E": -1}, {"S": -1, "M": [], "E": 2}],
"junctions": [{"x": 140, "y": 279}],
"renderStyle": "standard"
}
}
connect(const1.y, lt.u2) {
"Dyad": {
"edges": [{"S": 1, "M": [{"x": 150, "y": 455}], "E": -1}, {"S": -1, "M": [], "E": 2}],
"junctions": [{"x": 150, "y": 335}],
"renderStyle": "standard"
}
}
connect(ramp.y, le.u1) {
"Dyad": {
"edges": [{"S": 1, "M": [{"x": 140, "y": 1250}, {"x": 140, "y": 39}], "E": 2}],
"renderStyle": "standard"
}
}
connect(const1.y, le.u2) {
"Dyad": {
"edges": [{"S": 1, "M": [{"x": 150, "y": 455}, {"x": 150, "y": 95}], "E": 2}],
"renderStyle": "standard"
}
}
# Not: inverts GreaterThreshold
connect(gt_thresh.y, not1.u) {"Dyad": {"edges": [{"S": 1, "M": [], "E": 2}], "renderStyle": "standard"}}
# Boolean sources for LogicalSwitch
connect(ramp.y, boolTrue.u) {
"Dyad": {
"edges": [{"S": 1, "M": [{"x": 140, "y": 1250}], "E": -1}, {"S": -1, "M": [], "E": 2}],
"junctions": [{"x": 140, "y": 670}],
"renderStyle": "standard"
}
}
connect(ramp.y, boolFalse.u) {
"Dyad": {
"edges": [{"S": 1, "M": [{"x": 140, "y": 1250}], "E": -1}, {"S": -1, "M": [], "E": 2}],
"junctions": [{"x": 140, "y": 790}],
"renderStyle": "standard"
}
}
# Switch: u2=gt_thresh controls between ramp (u1) and const10 (u3)
connect(ramp.y, sw.u1) {"Dyad": {"edges": [{"S": 1, "M": [], "E": 2}], "renderStyle": "standard"}}
connect(gt_thresh.y, sw.u2) {
"Dyad": {
"edges": [{"S": 1, "M": [], "E": -1}, {"S": -1, "M": [{"x": 291, "y": 1282}], "E": 2}],
"junctions": [{"x": 291, "y": 1030}],
"renderStyle": "standard"
}
}
connect(const10.y, sw.u3) {
"Dyad": {
"edges": [{"S": 1, "M": [{"x": 291, "y": 1351}, {"x": 291, "y": 1314}], "E": 2}],
"renderStyle": "standard"
}
}
# LogicalSwitch: u2=gt_thresh controls between boolTrue (u1) and boolFalse (u3)
connect(boolTrue.y, lsw.u1) {
"Dyad": {
"edges": [{"S": 1, "M": [{"x": 291, "y": 670}, {"x": 291, "y": 716}], "E": 2}],
"renderStyle": "standard"
}
}
connect(gt_thresh.y, lsw.u2) {
"Dyad": {
"edges": [{"S": 1, "M": [{"x": 291, "y": 1030}, {"x": 291, "y": 753}], "E": 2}],
"renderStyle": "standard"
}
}
connect(boolFalse.y, lsw.u3) {"Dyad": {"edges": [{"S": 1, "M": [], "E": 2}], "renderStyle": "standard"}}
metadata {
"Dyad": {
"icons": {"default": "dyad://BlockComponents/Example.svg"},
"tests": {
"below": {
"stop": 1,
"params": {"ramp.offset": -2},
"expect": {
"signals": [
"ramp.y",
"gt_thresh.y",
"ge_thresh.y",
"lt_thresh.y",
"le_thresh.y",
"gt.y",
"ge.y",
"lt.y",
"le.y",
"not1.y",
"sw.y",
"lsw.y"
]
}
},
"equal": {
"stop": 1,
"params": {"ramp.offset": 0},
"expect": {
"signals": [
"ramp.y",
"gt_thresh.y",
"ge_thresh.y",
"lt_thresh.y",
"le_thresh.y",
"gt.y",
"ge.y",
"lt.y",
"le.y",
"not1.y",
"sw.y",
"lsw.y"
]
}
},
"above": {
"stop": 1,
"params": {"ramp.offset": 1.5},
"expect": {
"signals": [
"ramp.y",
"gt_thresh.y",
"ge_thresh.y",
"lt_thresh.y",
"le_thresh.y",
"gt.y",
"ge.y",
"lt.y",
"le.y",
"not1.y",
"sw.y",
"lsw.y"
]
}
}
}
}
}
endFlattened Source
dyad
"""
Validation test for all Logical blocks with deterministic expected outputs.
Uses a Ramp with height=4, duration=4: ramp(t) = offset + t.
At t=1 (the common stop time), ramp = offset + 1.
A Constant at 1.0 serves as the second input for two-input comparisons.
All threshold blocks use threshold = 1.0.
Three test cases via `params` overriding `ramp.offset`:
- below (offset=-2): ramp(1)=-1.0 < threshold
- equal (offset=0): ramp(1)=1.0 = threshold
- above (offset=1.5): ramp(1)=2.5 > threshold
"""
test component LogicalValidation
"Ramp: ramp(t) = offset + t for t in [0, 4]"
ramp = BlockComponents.Sources.Ramp(height = 4, duration = 4, offset = -2) {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 20, "y1": 1200, "x2": 120, "y2": 1300, "rot": 0}
},
"tags": []
}
}
"Constant reference at 1.0"
const1 = BlockComponents.Sources.Constant(k = 1.0) {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 20, "y1": 405, "x2": 120, "y2": 505, "rot": 0}
},
"tags": []
}
}
"Constant reference at 10.0 for Switch test"
const10 = BlockComponents.Sources.Constant(k = 10.0) {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 171, "y1": 1301, "x2": 271, "y2": 1401, "rot": 0}
},
"tags": []
}
}
"Always-true boolean source (threshold well below ramp range)"
boolTrue = BlockComponents.Logical.GreaterThreshold(threshold = -100.0) {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 171, "y1": 620, "x2": 271, "y2": 720, "rot": 0}
},
"tags": []
}
}
"Always-false boolean source (threshold well above ramp range)"
boolFalse = BlockComponents.Logical.GreaterThreshold(threshold = 100.0) {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 171, "y1": 740, "x2": 271, "y2": 840, "rot": 0}
},
"tags": []
}
}
"Threshold comparisons (threshold = 1.0)"
gt_thresh = BlockComponents.Logical.GreaterThreshold(threshold = 1.0) {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 171, "y1": 980, "x2": 271, "y2": 1080, "rot": 0}
},
"tags": []
}
}
ge_thresh = BlockComponents.Logical.GreaterEqualThreshold(threshold = 1.0) {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 171, "y1": 1100, "x2": 271, "y2": 1200, "rot": 0}
},
"tags": []
}
}
lt_thresh = BlockComponents.Logical.LessThreshold(threshold = 1.0) {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 171, "y1": 860, "x2": 271, "y2": 960, "rot": 0}
},
"tags": []
}
}
le_thresh = BlockComponents.Logical.LessEqualThreshold(threshold = 1.0) {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 171, "y1": 500, "x2": 271, "y2": 600, "rot": 0}
},
"tags": []
}
}
"Two-input comparisons: ramp (u1) vs const1 (u2)"
gt = BlockComponents.Logical.Greater() {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 171, "y1": 140, "x2": 271, "y2": 240, "rot": 0}
},
"tags": []
}
}
ge = BlockComponents.Logical.GreaterEqual() {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 171, "y1": 380, "x2": 271, "y2": 480, "rot": 0}
},
"tags": []
}
}
lt = BlockComponents.Logical.Less() {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 171, "y1": 260, "x2": 271, "y2": 360, "rot": 0}
},
"tags": []
}
}
le = BlockComponents.Logical.LessEqual() {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 180, "y1": 20, "x2": 280, "y2": 120, "rot": 0}
},
"tags": []
}
}
"Not: inverts GreaterThreshold output"
not1 = BlockComponents.Logical.Not() {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 312, "y1": 980, "x2": 412, "y2": 1080, "rot": 0}
},
"tags": []
}
}
"Switch: selects ramp (u1) when gt_thresh true, else const10 (u3)"
sw = BlockComponents.Logical.Switch() {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 312, "y1": 1232, "x2": 412, "y2": 1332, "rot": 0}
},
"tags": []
}
}
"LogicalSwitch: selects boolTrue (u1) when gt_thresh true, else boolFalse (u3)"
lsw = BlockComponents.Logical.LogicalSwitch() {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 312, "y1": 703, "x2": 412, "y2": 803, "rot": 0}
},
"tags": []
}
}
relations
# Threshold comparisons: all driven by ramp
connect(ramp.y, gt_thresh.u) {
"Dyad": {
"edges": [
{"S": 1, "M": [], "E": -1},
{"S": -1, "M": [], "E": -2},
{"S": -2, "M": [], "E": 2}
],
"junctions": [{"x": 140, "y": 1250}, {"x": 140, "y": 1030}],
"renderStyle": "standard"
}
}
connect(ramp.y, ge_thresh.u) {
"Dyad": {
"edges": [{"S": 1, "M": [{"x": 140, "y": 1250}], "E": -1}, {"S": -1, "M": [], "E": 2}],
"junctions": [{"x": 140, "y": 1150}],
"renderStyle": "standard"
}
}
connect(ramp.y, lt_thresh.u) {
"Dyad": {
"edges": [{"S": 1, "M": [{"x": 140, "y": 1250}], "E": -1}, {"S": -1, "M": [], "E": 2}],
"junctions": [{"x": 140, "y": 910}],
"renderStyle": "standard"
}
}
connect(ramp.y, le_thresh.u) {
"Dyad": {
"edges": [{"S": 1, "M": [{"x": 140, "y": 1250}], "E": -1}, {"S": -1, "M": [], "E": 2}],
"junctions": [{"x": 140, "y": 550}],
"renderStyle": "standard"
}
}
# Two-input comparisons: ramp (u1) vs const1 (u2)
connect(ramp.y, gt.u1) {
"Dyad": {
"edges": [{"S": 1, "M": [{"x": 140, "y": 1250}], "E": -1}, {"S": -1, "M": [], "E": 2}],
"junctions": [{"x": 140, "y": 159}],
"renderStyle": "standard"
}
}
connect(const1.y, gt.u2) {
"Dyad": {
"edges": [
{"S": 1, "M": [], "E": -1},
{"S": -1, "M": [], "E": -2},
{"S": -2, "M": [], "E": 2}
],
"junctions": [{"x": 150, "y": 455}, {"x": 150, "y": 215}],
"renderStyle": "standard"
}
}
connect(ramp.y, ge.u1) {
"Dyad": {
"edges": [{"S": 1, "M": [{"x": 140, "y": 1250}], "E": -1}, {"S": -1, "M": [], "E": 2}],
"junctions": [{"x": 140, "y": 399}],
"renderStyle": "standard"
}
}
connect(const1.y, ge.u2) {"Dyad": {"edges": [{"S": 1, "M": [], "E": 2}], "renderStyle": "standard"}}
connect(ramp.y, lt.u1) {
"Dyad": {
"edges": [{"S": 1, "M": [{"x": 140, "y": 1250}], "E": -1}, {"S": -1, "M": [], "E": 2}],
"junctions": [{"x": 140, "y": 279}],
"renderStyle": "standard"
}
}
connect(const1.y, lt.u2) {
"Dyad": {
"edges": [{"S": 1, "M": [{"x": 150, "y": 455}], "E": -1}, {"S": -1, "M": [], "E": 2}],
"junctions": [{"x": 150, "y": 335}],
"renderStyle": "standard"
}
}
connect(ramp.y, le.u1) {
"Dyad": {
"edges": [{"S": 1, "M": [{"x": 140, "y": 1250}, {"x": 140, "y": 39}], "E": 2}],
"renderStyle": "standard"
}
}
connect(const1.y, le.u2) {
"Dyad": {
"edges": [{"S": 1, "M": [{"x": 150, "y": 455}, {"x": 150, "y": 95}], "E": 2}],
"renderStyle": "standard"
}
}
# Not: inverts GreaterThreshold
connect(gt_thresh.y, not1.u) {"Dyad": {"edges": [{"S": 1, "M": [], "E": 2}], "renderStyle": "standard"}}
# Boolean sources for LogicalSwitch
connect(ramp.y, boolTrue.u) {
"Dyad": {
"edges": [{"S": 1, "M": [{"x": 140, "y": 1250}], "E": -1}, {"S": -1, "M": [], "E": 2}],
"junctions": [{"x": 140, "y": 670}],
"renderStyle": "standard"
}
}
connect(ramp.y, boolFalse.u) {
"Dyad": {
"edges": [{"S": 1, "M": [{"x": 140, "y": 1250}], "E": -1}, {"S": -1, "M": [], "E": 2}],
"junctions": [{"x": 140, "y": 790}],
"renderStyle": "standard"
}
}
# Switch: u2=gt_thresh controls between ramp (u1) and const10 (u3)
connect(ramp.y, sw.u1) {"Dyad": {"edges": [{"S": 1, "M": [], "E": 2}], "renderStyle": "standard"}}
connect(gt_thresh.y, sw.u2) {
"Dyad": {
"edges": [{"S": 1, "M": [], "E": -1}, {"S": -1, "M": [{"x": 291, "y": 1282}], "E": 2}],
"junctions": [{"x": 291, "y": 1030}],
"renderStyle": "standard"
}
}
connect(const10.y, sw.u3) {
"Dyad": {
"edges": [{"S": 1, "M": [{"x": 291, "y": 1351}, {"x": 291, "y": 1314}], "E": 2}],
"renderStyle": "standard"
}
}
# LogicalSwitch: u2=gt_thresh controls between boolTrue (u1) and boolFalse (u3)
connect(boolTrue.y, lsw.u1) {
"Dyad": {
"edges": [{"S": 1, "M": [{"x": 291, "y": 670}, {"x": 291, "y": 716}], "E": 2}],
"renderStyle": "standard"
}
}
connect(gt_thresh.y, lsw.u2) {
"Dyad": {
"edges": [{"S": 1, "M": [{"x": 291, "y": 1030}, {"x": 291, "y": 753}], "E": 2}],
"renderStyle": "standard"
}
}
connect(boolFalse.y, lsw.u3) {"Dyad": {"edges": [{"S": 1, "M": [], "E": 2}], "renderStyle": "standard"}}
metadata {
"Dyad": {
"icons": {"default": "dyad://BlockComponents/Example.svg"},
"tests": {
"below": {
"stop": 1,
"params": {"ramp.offset": -2},
"expect": {
"signals": [
"ramp.y",
"gt_thresh.y",
"ge_thresh.y",
"lt_thresh.y",
"le_thresh.y",
"gt.y",
"ge.y",
"lt.y",
"le.y",
"not1.y",
"sw.y",
"lsw.y"
]
}
},
"equal": {
"stop": 1,
"params": {"ramp.offset": 0},
"expect": {
"signals": [
"ramp.y",
"gt_thresh.y",
"ge_thresh.y",
"lt_thresh.y",
"le_thresh.y",
"gt.y",
"ge.y",
"lt.y",
"le.y",
"not1.y",
"sw.y",
"lsw.y"
]
}
},
"above": {
"stop": 1,
"params": {"ramp.offset": 1.5},
"expect": {
"signals": [
"ramp.y",
"gt_thresh.y",
"ge_thresh.y",
"lt_thresh.y",
"le_thresh.y",
"gt.y",
"ge.y",
"lt.y",
"le.y",
"not1.y",
"sw.y",
"lsw.y"
]
}
}
}
}
}
endTest Cases ​
Test Case below ​
julia
pltjulia
pltjulia
pltjulia
pltjulia
pltjulia
pltjulia
pltjulia
pltjulia
pltjulia
pltjulia
pltjulia
pltTest Case equal ​
julia
pltjulia
pltjulia
pltjulia
pltjulia
pltjulia
pltjulia
pltjulia
pltjulia
pltjulia
pltjulia
pltjulia
pltTest Case above ​
julia
pltjulia
pltjulia
pltjulia
pltjulia
pltjulia
pltjulia
pltjulia
pltjulia
pltjulia
pltjulia
pltjulia
plt