public async Task FirmwareAsyncTest()
    {
        var tests = new[]
        {
            new
            {
                Payload = "010001000100",
                Node    = new NodeFirmwareInfoMapping {
                    NodeId = string.Empty, Type = 1, Version = 1
                },
                Expected = "0100010001000C946E000C946E000C946E000C946E00"
            },
            new
            {
                Payload = "0B0001000100",
                Node    = new NodeFirmwareInfoMapping {
                    NodeId = string.Empty, Type = 11, Version = 1
                },
                Expected = "0B000100010052C1000050C10000EEC200004CC10000"
            }
        };

        foreach (var test in tests)
        {
            var logger = new Mock <ILogger <ExposedFirmwareDAO> >().Object;
            var opts   = Options.Create(new SharedOpts
            {
                Resources = new List <NodeFirmwareInfoMapping> {
                    test.Node
                },
                FirmwareBasePath = Const.TestFilesBasePath,
            });
            var dao    = new ExposedFirmwareDAO(logger, opts);
            var actual = await dao.FirmwareAsync(string.Empty, test.Payload);

            Assert.AreEqual(test.Expected, actual);
        }
    }
    public async Task LoadFromFileContentAsyncTest()
    {
        var tests = new[]
        {
            new { Type = 1, Blocks = 80, Path = $"{Const.TestFilesBasePath}/1/1/firmware.encoded" },
            new { Type = 11, Blocks = 1072, Path = $"{Const.TestFilesBasePath}/11/1/firmware.encoded" }
        };

        foreach (var test in tests)
        {
            var logger = new Mock <ILogger <ExposedFirmwareDAO> >().Object;
            var opts   = Options.Create(new SharedOpts
            {
                FirmwareBasePath = Const.TestFilesBasePath,
            });
            var dao   = new ExposedFirmwareDAO(logger, opts);
            var lines = await File.ReadAllLinesAsync(test.Path);

            foreach (var blockNo in Enumerable.Range(0, test.Blocks))
            {
                var lineNo  = test.Blocks - blockNo - 1;
                var payload = dao.PackTest(new FirmwareReqResp
                {
                    Type    = (ushort)test.Type,
                    Version = 1,
                    Block   = (ushort)blockNo,
                });

                var actual = await dao.FirmwareAsync(string.Empty, payload);

                var expected = lines[lineNo];

                Assert.AreEqual(expected, actual, $"Type: {test.Type}, Line: {lineNo}, Block: {blockNo}");
            }
        }
    }