import pytest
from light9.effect.sequencer import Note
from light9.effect.settings import BareEffectSettings
from light9.mock_syncedgraph import MockSyncedGraph
from light9.namespaces import L9
from light9.newtypes import EffectAttr, NoteUri
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/> .
'''
FADER_GRAPH = PREFIXES + '''
:fade1
a :Fader;
:effectClass effect:effect1;
:effectAttr :strength;
:value 0.6 .
'''
# class TestUntimedFaderNote:
# def test_returnsEffectSettings(self):
# g = MockSyncedGraph(FADER_GRAPH)
# n = Note(g, NoteUri(L9['fade1']), timed=False)
# out, report = n.outputCurrent()
# assert report['effectSettings'] == {'http://light9.bigasterisk.com/strength': 0.6}
# assert out == BareEffectSettings(s={EffectAttr(L9['strength']): 0.6})
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 ] .
dev:light1
a :SimpleDimmer;
:dmxUniverse dmxA:;
:dmxBase 178 .
effect:effect1
a :EffectClass;
:setting effect:effect1_set1 .
effect:effect1_set1
:device dev:light1;
:deviceAttr :brightness;
:scaledValue 0.5 .
:fade1
a :Fader;
:effectClass effect:effect1;
:effectAttr :strength;
:value 0.6 .
'''
class TestTimedNote:
@pytest.mark.skip()
def test_scalesStrengthWithCurve(self):
pass