• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

luttje / Key2Joy / 6557152774

18 Oct 2023 06:36AM UTC coverage: 52.519% (+39.8%) from 12.718%
6557152774

push

github

web-flow
Adding more tests, fixing bugs in the process (#48)

* Add config manager tests

* legacy config and mapping profile tests (should fix #42)

* remove comment, problem was caused by transfer across appdomain (or to/fro scripting environment)

* Test core functionality #48 + includes minor refactoring to be able to test + added docs

* Add interop tests + implement and test async test utility (refactors away from singletons)

* fix not all tests running in workflow

* config and interop tests

* Refactor and allow mocking global input hook class

* add capture action test

* Make Execute override optional for script only methods

* add dependency injection + refactor and try test gamepad service

* Refactor config singleton to using dependency injection

* add tests for scripting

* add tests for plugin set + fix plugin showing as loaded even if checksum match failed

* fix tests failing because it relied on config exist (I guess the test order was accidentally correct earlier, this means we should really fix cleanup so we catch this sooner)

* refactor docs code + fix wrong enum summary

* refactor docs builder and start testing it a bit

* fix cmd project structure

* ignore designer files in tests

* cleanup and refactor UI code + show latest version in help

* truncate listview action column

* allow user config to minimize app when pressing X (defaults to shut down app) resolves #45

696 of 1757 branches covered (0.0%)

Branch coverage included in aggregate %.

4597 of 4597 new or added lines in 138 files covered. (100.0%)

3619 of 6459 relevant lines covered (56.03%)

17089.01 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

91.67
/Core/Key2Joy.Core/Interop/InteropClient.cs
1
using System.IO.Pipes;
2
using Key2Joy.Interop.Commands;
3

4
namespace Key2Joy.Interop;
5

6
/// <summary>
7
/// Singleton client for communication with the Key2Joy service.
8
/// This is used by the Key2Joy.Cmd CLI to send commands to the service and
9
/// enable/disable mappings.
10
/// </summary>
11
public class InteropClient : IInteropClient
12
{
13
    protected readonly ICommandRepository commandRepository;
14

15
    public InteropClient(ICommandRepository commandRepository)
1✔
16
        => this.commandRepository = commandRepository;
1✔
17

18
    /// <summary>
19
    /// Sends a command to the main app, for example to enable/disable mappings.
20
    /// </summary>
21
    /// <typeparam name="TCommandType"></typeparam>
22
    /// <param name="command"></param>
23
    public void SendCommand<TCommandType>(TCommandType command)
24
    {
25
        using NamedPipeClientStream pipeClient = new(".", this.GetPipeName(),
1✔
26
                    PipeDirection.InOut, PipeOptions.None);
1✔
27
        pipeClient.Connect(1000);
1✔
28

29
        var commandInfo = this.commandRepository.GetCommandInfo<TCommandType>();
1✔
30
        pipeClient.WriteByte(commandInfo.Id);
1✔
31

32
        var bytes = CommandInfo.CommandToBytes(command);
1✔
33
        pipeClient.Write(bytes, 0, bytes.Length);
1✔
34

35
        pipeClient.WaitForPipeDrain();
1✔
36
    }
2✔
37

38
    protected virtual string GetPipeName() => InteropServer.PIPE_NAME;
×
39
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc