public async Task RazerChromaApiGetsCalledOnGameEvents() { const string statusFile = "Status.json"; const string journalFile = "Journal.190101020000.01.log"; var chromaApi = new ChromaApiMock(); var evs = new EventCollector <ChromaApiMock.MockCall>(h => chromaApi.Called += h, h => chromaApi.Called -= h); using TestFolder dirRoot = new TestFolder(_gameRootFolder), dirOpts = new TestFolder(_gameOptionsFolder), dirJournal = new TestFolder(); dirJournal.WriteText(statusFile, EventSequence.BuildEvent("Status", new { Flags = 0 })); dirJournal.WriteText(journalFile, EventSequence.BuildEvent("Fileheader", new { part = 1, language = @"English\UK", gameversion = "3.5.0.200 EDH", build = "r210198/r0 " })); using var cc = new ChromaController(dirRoot.Name, dirOpts.Name, dirJournal.Name) { ChromaApi = chromaApi, AnimationFrameRate = 0, DetectGameInForeground = false, }; var mcs = await evs.WaitAsync(5, cc.Start, 1000).ConfigureAwait(false); Assert.Equal("InitializeAsync", mcs[0].Method); Assert.Equal("CreateKeyboardEffectAsync", mcs[1].Method); var seq = BuildEventSequence(); mcs = await evs.WaitAsync(seq.Count, () => seq.Play(dirJournal, journalFile, statusFile), 200 *seq.Count).ConfigureAwait(false); Assert.Equal(seq.Count, mcs.Count); var mc = await evs.WaitAsync(cc.Stop, 1000).ConfigureAwait(false); Assert.Equal("UninitializeAsync", mc.Method); }
public void RazerChromaApiGetsCalledOnGameEvents() { const string statusFile = "Status.json"; const string journalFile = "Journal.190101020000.01.log"; using var cpl = ColoreProviderLock.GetLock(); var chromaApi = new Mock <IChromaApi> { DefaultValue = DefaultValue.Mock }; var mockIA = chromaApi.Setup(x => x.InitializeAsync(It.IsAny <AppInfo>())); var mockCKEA = chromaApi.Setup(x => x.CreateKeyboardEffectAsync(It.IsAny <KeyboardEffectType>(), It.IsAny <It.IsValueType>())); var mockUA = chromaApi.Setup(x => x.UninitializeAsync()); using TestFolder dirRoot = new TestFolder(_gameRootFolder), dirOpts = new TestFolder(_gameOptionsFolder), dirJournal = new TestFolder(); dirJournal.WriteText(statusFile, EventSequence.BuildEvent("Status", new { Flags = 0 })); dirJournal.WriteText(journalFile, EventSequence.BuildEvent("Fileheader", new { part = 1, language = @"English\UK", gameversion = "3.5.0.200 EDH", build = "r210198/r0 " })); using var cc = new ChromaController(dirRoot.Name, dirOpts.Name, dirJournal.Name) { ChromaFactory = new ChromaFactory { ChromaApi = chromaApi.Object, ChromaAppInfo = null, }, AnimationFrameRate = 0, DetectGameInForeground = false, }; Assert.False(cc.DetectGameInForeground); using var ceIA = new CountdownEvent(1); mockIA.Callback(() => ceIA.Signal()); using var ceCKEA = new CountdownEvent(1); mockCKEA.Callback(() => ceCKEA.Signal()); using var ceUA = new CountdownEvent(1); mockUA.Callback(() => ceUA.Signal()); cc.Start(); Assert.True(ceIA.Wait(1000)); Assert.True(ceCKEA.Wait(1000)); var seq = BuildEventSequence(); ceCKEA.Reset(seq.Count(x => x.ChangesGameState)); seq.Play(dirJournal, journalFile, statusFile); Assert.True(ceCKEA.Wait(200 * seq.Count)); cc.Stop(); Assert.True(ceUA.Wait(1000)); }