public async void ReturnsNullWhenCfCidFails([Frozen] ITmNative native, TmsApi tms)
            {
                A.CallTo(() => native.TmcGetCfsHandle(A <int> ._))
                .Returns(IntPtr.Zero);

                var result = await tms.GetFilesInDirectory(A.Dummy <string>());

                result.Should().BeNull();
            }
            public async void ReturnsFalseWhenCfCidFails([Frozen] ITmNative native, TmsApi tms)
            {
                A.CallTo(() => native.TmcGetCfsHandle(A <int> ._))
                .Returns(IntPtr.Zero);

                var result = await tms.DownloadFile(A.Dummy <string>(), A.Dummy <string>());

                result.Should().BeFalse();
            }
            public async void ReturnsCorrectAnalogNow([Frozen] ITmNative native, TmsApi tms,
                                                      short ch, short rtu, short point,
                                                      float expected)
            {
                A.CallTo(() => native.TmcAnalog(A <int> ._, ch, rtu, point, null, 0))
                .Returns(expected);

                var result = await tms.GetAnalog(ch, rtu, point);

                result.Should().Be(expected);
            }
            public async void ReturnsCorrectStatus([Frozen] ITmNative native, TmsApi tms,
                                                   short ch, short rtu, short point,
                                                   short expected)
            {
                A.CallTo(() => native.TmcStatus(A <int> ._, ch, rtu, point))
                .Returns(expected);

                var result = await tms.GetStatus(ch, rtu, point);

                result.Should().Be(expected);
            }
        public void InitializeTmWithoutSql(int tmCid, TmUserInfo userInfo, TmServerFeatures features)
        {
            TmCid            = tmCid;
            TmUserInfo       = userInfo;
            TmServerFeatures = features;

            OikDataApi.SetUserInfoAndServerFeatures(TmUserInfo, TmServerFeatures);
            TmsApi.SetCidAndUserInfo(TmCid, TmUserInfo);
            ServerService.SetTmCid(TmCid);

            ServerService.CheckSqlConnection = false;
            OikDataApi.IsSqlAllowed          = false;
        }
            public async void ReturnsFalseWhenNoFileFound([Frozen] ITmNative native, TmsApi tms)
            {
                uint error;
                var  errorBuf = new byte[80];

                A.CallTo(() => native.TmcGetCfsHandle(A <int> ._))
                .Returns(new IntPtr(1));
                A.CallTo(() => native.CfsFileGet(new IntPtr(1), "", "", 0, IntPtr.Zero, out error, ref errorBuf, 0))
                .WithAnyArguments()
                .Returns(true);

                var result = await tms.DownloadFile(A.Dummy <string>(), A.Dummy <string>());

                result.Should().BeFalse();
            }
            public async void ReturnsCorrectTime([Frozen] ITmNative native, TmsApi tms)
            {
                Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);

                var fakeTime   = "12.12.2017 09:14:30";
                var anyByteBuf = new byte[80];

                A.CallTo(() => native.TmcSystemTime(A <int> ._, ref anyByteBuf, A <IntPtr> ._))
                .WithAnyArguments()
                .AssignsOutAndRefParameters(Encoding.GetEncoding(1251).GetBytes(fakeTime));

                var result = await tms.GetSystemTime();

                result.Should().Be(new DateTime(2017, 12, 12, 9, 14, 30));
            }
        public void InitializeTm(int tmCid, int rbCid, int rbPort, TmUserInfo userInfo, TmServerFeatures features)
        {
            TmCid            = tmCid;
            RbCid            = rbCid;
            RbPort           = rbPort;
            TmUserInfo       = userInfo;
            TmServerFeatures = features;

            OikSqlApi.SetCreateOikSqlConnection(CreateOikSqlConnection);
            ServerService.SetCreateOikSqlConnection(CreateOikSqlConnection);

            OikDataApi.SetUserInfoAndServerFeatures(TmUserInfo, TmServerFeatures);
            TmsApi.SetCidAndUserInfo(TmCid, TmUserInfo);
            ServerService.SetTmCid(TmCid);
        }
            public async void ReturnsCorrectList([Frozen] ITmNative native, TmsApi tms)
            {
                uint error;
                var  errorBuf  = new byte[80];
                uint bufLength = 80;
                var  buf       = new char[bufLength];

                A.CallTo(() => native.TmcGetCfsHandle(A <int> ._))
                .Returns(new IntPtr(1));
                A.CallTo(() => native.CfsDirEnum(new IntPtr(1), "", ref buf, bufLength, out error, ref errorBuf, 0))
                .WithAnyArguments()
                .Returns(true)
                .AssignsOutAndRefParameters(new[]
                {
                    'I', 't', 'e', 'm', '1', '\0',
                    'I', 't', 'e', 'm', '2', '\0', '\0',
                    'T', 'r', 'a', 's', 'h'
                }, A.Dummy <uint>(), A.Dummy <byte[]>());

                var result = await tms.GetFilesInDirectory(A.Dummy <string>());

                result.Should().Equal("Item1", "Item2");
            }
            public async void ReturnsNullWhenWhenTmconnReturnsFalse([Frozen] ITmNative native, TmsApi tms)
            {
                uint error;
                var  errorBuf  = new byte[80];
                uint bufLength = 80;
                var  buf       = new char[bufLength];

                A.CallTo(() => native.TmcGetCfsHandle(A <int> ._))
                .Returns(new IntPtr(1));
                A.CallTo(() => native.CfsDirEnum(new IntPtr(1), "", ref buf, bufLength, out error, ref errorBuf, 0))
                .WithAnyArguments()
                .Returns(false);

                var result = await tms.GetFilesInDirectory(A.Dummy <string>());

                result.Should().BeNull();
            }