view light9/effect/sequencer/eval_faders_test.py @ 2188:9fc653ee7fff

WIP redoing how Note works. The new Note outputs EffectSettings only, and callers have to effect_eval them. Still not sure what SimpleOutputs does.
author drewp@bigasterisk.com
date Sat, 20 May 2023 14:49:15 -0700
parents
children 51c670ce5d50
line wrap: on
line source

from unittest import mock
from light9.effect.sequencer.eval_faders import FaderEval
from light9.effect.settings import DeviceSettings
from light9.mock_syncedgraph import MockSyncedGraph
from light9.namespaces import L9


PREFIXES = '''
@prefix : <http://light9.bigasterisk.com/> .
@prefix effect: <http://light9.bigasterisk.com/effect/> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix show: <http://light9.bigasterisk.com/show/dance2023/> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix dev: <http://light9.bigasterisk.com/theater/test/device/> .
@prefix dmxA: <http://light9.bigasterisk.com/output/dmxA/> .
'''

NOTE_GRAPH = PREFIXES + '''
            :brightness         
                a :DeviceAttr; 
                rdfs:label "brightness"; 
                :dataType :scalar .

            :strength
                a :EffectAttr;
                rdfs:label "strength" .

            :SimpleDimmer 
                a :DeviceClass; 
                rdfs:label "SimpleDimmer";
                :deviceAttr :brightness;
                :attr [ :outputAttr :level; :dmxOffset 0 ] .
                
            :light1  
                a :SimpleDimmer;
                :dmxUniverse dmxA:;
                :dmxBase 178 .

            effect:effect1 
                a :EffectClass;
                :setting effect:effect1_set1 .
            effect:effect1_set1 
                :device :light1; 
                :deviceAttr :brightness; 
                :scaledValue 0.5 .
            :fade1 
                a :Fader; 
                :effectClass effect:effect1; 
                :effectAttr :strength; 
                :value 0.6 .

        '''

class TestFaderEval:
    def test_faderValueScalesEffectSettings(self):
        g = MockSyncedGraph(NOTE_GRAPH)
        sender = mock.MagicMock()
        
        f = FaderEval(g, sender)
        devSettings = f._computeOutput()
        assert devSettings == DeviceSettings(g, [(L9['light1'], L9['brightness'], 0.3)])