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);
        }
Exemplo n.º 2
0
        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));
        }