defmodule Reactivity.Test do require Integer require Logger alias Reactivity.Signal.Source alias Reactivity.Signal.Derived def hot_cold(t) do if t > 30 do "hot" else "cold" end end def test do # Start some source signals {:ok, t} = Source.new(fn(_old_value) -> Enum.random(10..100) end, -1, 5000, :temperature) #{:ok, h} = Source.new(fn(_old_value) -> Enum.random(60..100) end, -1, 2000, :humidity) # Print out "hot" or "cold" when temp changes. t |> Reactivity.liftapp(&hot_cold/1) |> Reactivity.liftapp(&(Logger.debug "Celcius: #{&1}")) # Create a new signal in Kelvin. kelvin = t |> Reactivity.liftapp(&(&1 + 237.15)) # Print out hot/cold for the kelvin signal kelvin |> Reactivity.liftapp(&hot_cold/1) |> Reactivity.liftapp(&(Logger.debug "Kelvin: #{&1}")) end end