Skip to content
LIBRARY
Math.Tests.BooleanToReal.md

Math.Tests.BooleanToReal

Converts constant and time-varying Boolean signals to Real.

Chains Constant(1.0) → RealToBoolean(threshold=0.5) → BooleanToReal and verifies that a true Boolean input produces realTrue=1.0. A second chain feeds a sine wave (amplitude 1) through RealToBoolean into BooleanToReal so the Boolean toggles and the Real output alternates between its false and true values.

Usage

BlockComponents.Math.Tests.BooleanToReal()

Behavior

Source

dyad
"""
Converts constant and time-varying Boolean signals to Real.

Chains Constant(1.0) → RealToBoolean(threshold=0.5) → BooleanToReal and
verifies that a true Boolean input produces realTrue=1.0. A second chain feeds
a sine wave (amplitude 1) through RealToBoolean into BooleanToReal so the
Boolean toggles and the Real output alternates between its false and true
values.
"""
test component BooleanToReal
  "Constant source providing a value above the threshold"
  c1 = BlockComponents.Sources.Constant(k = 1.0) {
    "Dyad": {
      "placement": {
        "diagram": {"iconName": "default", "x1": 20, "y1": 20, "x2": 120, "y2": 120, "rot": 0}
      },
      "tags": []
    }
  }
  "RealToBoolean adapter to produce Boolean signal"
  r2b = BlockComponents.Math.RealToBoolean(threshold = 0.5) {
    "Dyad": {
      "placement": {
        "diagram": {"iconName": "default", "x1": 161, "y1": 20, "x2": 261, "y2": 120, "rot": 0}
      },
      "tags": []
    }
  }
  "BooleanToReal block under test"
  b2r = BlockComponents.Math.BooleanToReal() {
    "Dyad": {
      "placement": {
        "diagram": {"iconName": "default", "x1": 301, "y1": 20, "x2": 401, "y2": 120, "rot": 0}
      },
      "tags": []
    }
  }
  "Sine source crossing the threshold"
  sine = BlockComponents.Sources.Sine(amplitude = 1, frequency = 1) {
    "Dyad": {
      "placement": {
        "diagram": {"iconName": "default", "x1": 20, "y1": 140, "x2": 120, "y2": 240, "rot": 0}
      },
      "tags": []
    }
  }
  "RealToBoolean adapter for the second chain"
  r2b_2 = BlockComponents.Math.RealToBoolean(threshold = 0.5) {
    "Dyad": {
      "placement": {
        "diagram": {"iconName": "default", "x1": 161, "y1": 140, "x2": 261, "y2": 240, "rot": 0}
      },
      "tags": []
    }
  }
  "Second BooleanToReal block driven by the sine chain"
  b2r_2 = BlockComponents.Math.BooleanToReal() {
    "Dyad": {
      "placement": {
        "diagram": {"iconName": "default", "x1": 310, "y1": 140, "x2": 410, "y2": 240, "rot": 0}
      },
      "tags": []
    }
  }
relations
  connect(c1.y, r2b.u) {"Dyad": {"edges": [{"S": 1, "M": [], "E": 2}], "renderStyle": "standard"}}
  connect(r2b.y, b2r.u) {"Dyad": {"edges": [{"S": 1, "M": [], "E": 2}], "renderStyle": "standard"}}
  connect(sine.y, r2b_2.u) {"Dyad": {"edges": [{"S": 1, "M": [], "E": 2}], "renderStyle": "standard"}}
  connect(r2b_2.y, b2r_2.u) {"Dyad": {"edges": [{"S": 1, "M": [], "E": 2}], "renderStyle": "standard"}}
metadata {
  "Dyad": {
    "icons": {"default": "dyad://BlockComponents/Example.svg"},
    "tests": {"case1": {"stop": 1, "expect": {"signals": ["b2r.y", "b2r_2.y", "sine.y"]}}}
  }
}
end
Flattened Source
dyad
"""
Converts constant and time-varying Boolean signals to Real.

Chains Constant(1.0) → RealToBoolean(threshold=0.5) → BooleanToReal and
verifies that a true Boolean input produces realTrue=1.0. A second chain feeds
a sine wave (amplitude 1) through RealToBoolean into BooleanToReal so the
Boolean toggles and the Real output alternates between its false and true
values.
"""
test component BooleanToReal
  "Constant source providing a value above the threshold"
  c1 = BlockComponents.Sources.Constant(k = 1.0) {
    "Dyad": {
      "placement": {
        "diagram": {"iconName": "default", "x1": 20, "y1": 20, "x2": 120, "y2": 120, "rot": 0}
      },
      "tags": []
    }
  }
  "RealToBoolean adapter to produce Boolean signal"
  r2b = BlockComponents.Math.RealToBoolean(threshold = 0.5) {
    "Dyad": {
      "placement": {
        "diagram": {"iconName": "default", "x1": 161, "y1": 20, "x2": 261, "y2": 120, "rot": 0}
      },
      "tags": []
    }
  }
  "BooleanToReal block under test"
  b2r = BlockComponents.Math.BooleanToReal() {
    "Dyad": {
      "placement": {
        "diagram": {"iconName": "default", "x1": 301, "y1": 20, "x2": 401, "y2": 120, "rot": 0}
      },
      "tags": []
    }
  }
  "Sine source crossing the threshold"
  sine = BlockComponents.Sources.Sine(amplitude = 1, frequency = 1) {
    "Dyad": {
      "placement": {
        "diagram": {"iconName": "default", "x1": 20, "y1": 140, "x2": 120, "y2": 240, "rot": 0}
      },
      "tags": []
    }
  }
  "RealToBoolean adapter for the second chain"
  r2b_2 = BlockComponents.Math.RealToBoolean(threshold = 0.5) {
    "Dyad": {
      "placement": {
        "diagram": {"iconName": "default", "x1": 161, "y1": 140, "x2": 261, "y2": 240, "rot": 0}
      },
      "tags": []
    }
  }
  "Second BooleanToReal block driven by the sine chain"
  b2r_2 = BlockComponents.Math.BooleanToReal() {
    "Dyad": {
      "placement": {
        "diagram": {"iconName": "default", "x1": 310, "y1": 140, "x2": 410, "y2": 240, "rot": 0}
      },
      "tags": []
    }
  }
relations
  connect(c1.y, r2b.u) {"Dyad": {"edges": [{"S": 1, "M": [], "E": 2}], "renderStyle": "standard"}}
  connect(r2b.y, b2r.u) {"Dyad": {"edges": [{"S": 1, "M": [], "E": 2}], "renderStyle": "standard"}}
  connect(sine.y, r2b_2.u) {"Dyad": {"edges": [{"S": 1, "M": [], "E": 2}], "renderStyle": "standard"}}
  connect(r2b_2.y, b2r_2.u) {"Dyad": {"edges": [{"S": 1, "M": [], "E": 2}], "renderStyle": "standard"}}
metadata {
  "Dyad": {
    "icons": {"default": "dyad://BlockComponents/Example.svg"},
    "tests": {"case1": {"stop": 1, "expect": {"signals": ["b2r.y", "b2r_2.y", "sine.y"]}}}
  }
}
end


Test Cases

Test Case case1

julia
plt

julia
plt

julia
plt