Example #1
0
        public void WritePartAaaa()
        {
            var stuff = ClientTestingBluetopia.Open();

            Assert.IsNotNull(stuff.DutClient, "DutClient");
            Assert.IsNotNull(stuff.DutConn, "DutConn");
            //
            byte[] buf = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0xA };
            Expect.Once.On(stuff.MockedApi).Method("SPP_Data_Write")
            .With(stuff.StackId, stuff.DutConn.Testing_GetPortId(),
                  (ushort)buf.Length, buf)
            .Will(Return.Value(5));
            var ar = stuff.DutConn.BeginWrite(buf, 0, buf.Length, null, null);

            stuff.Mockery_VerifyAllExpectationsHaveBeenMet();
            Assert.IsFalse(ar.IsCompleted, "IsCompleted mid");
            //
            // Spp_Write is blocked
            Thread.Sleep(100);
            stuff.Mockery_VerifyAllExpectationsHaveBeenMet();
            //
            byte[] buf2 = { 6, 7, 8, 9, 0xA };
            ClientTestingBluetopia.ExpectWrite(stuff, buf2, buf2.Length);
            using (var ctor = new SppEventCreator()) {
                var eventData = ctor.CreateWriteEmpty(stuff.DutConn.Testing_GetPortId());
                ClientTestingBluetopia.RaiseSppEvent(stuff, eventData);
            }
            Thread.Sleep(100);
            Assert.IsTrue(ar.IsCompleted, "IsCompleted end");
            //
            stuff.Mockery_VerifyAllExpectationsHaveBeenMet();
            ClientTestingBluetopia.Close(stuff);
        }
Example #2
0
 //--
 internal static void RaiseRemoteClose(StuffClientBluetopia stuff)
 {
     Expect.Once.On(stuff.MockedApi).Method("SPP_Close_Port")
     .With(stuff.StackId, stuff.DutConn.Testing_GetPortId())
     .Will(Return.Value(BluetopiaError.OK));
     using (var ctor = new SppEventCreator()) {
         RaiseSppEvent(stuff,
                       ctor.CreateCloseConfirmation(stuff.DutConn.Testing_GetPortId()));
     }
     Assert_IsConnected(
         IsConnectedState.RemoteCloseAndBeforeAnyIOMethod,
         stuff.DutConn, stuff.DutClient, "after remote close");
     stuff.Mockery_VerifyAllExpectationsHaveBeenMet();
 }
Example #3
0
        private static byte[] SendReceiveTen(StuffClientBluetopia stuff)
        {
            byte[] srcBuf             = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0xA };
            bool   isMustBeSameLength = false;
            int    sizeOfReaderBuffer = 10;

            Expect.Once.On(stuff.MockedApi).Method("SPP_Data_Read")
            .With(stuff.StackId, stuff.DutConn.Testing_GetPortId(),
                  (ushort)sizeOfReaderBuffer, new byte[sizeOfReaderBuffer])
            .Will(Return.Value(srcBuf.Length),
                  FillArrayIndexedParameterAction.Fill(3, srcBuf, isMustBeSameLength));
            using (var ctor = new SppEventCreator()) {
                var eventData = ctor.CreateDataIndication(stuff.DutConn.Testing_GetPortId(), srcBuf.Length);
                ClientTestingBluetopia.RaiseSppEvent(stuff, eventData);
            }
            stuff.Mockery_VerifyAllExpectationsHaveBeenMet();
            return(srcBuf);
        }
Example #4
0
        internal static StuffClientBluetopia DoOpen(StuffClientBluetopia stuff, Action beforeEndConnect)
        {
            var cli       = stuff.DutClient;
            var cli2      = (BluetopiaClient)cli;
            var conn      = (BluetopiaRfcommStream)cli2.Testing_GetConn();
            var behaviour = stuff.Behaviour;
            //
            BluetoothEndPoint remote;

            if (behaviour.ToPortNumber)
            {
                remote = new BluetoothEndPoint(Addr1, BluetoothService.Empty, Port5);
            }
            else
            {
                remote = new BluetoothEndPoint(Addr1, BluetoothService.VideoSource);
            }
            //
            bool ourCallbackCalled = false;
            var  ourCallback       = (AsyncCallback) delegate { ourCallbackCalled = true; };
            //
            var ar = cli.BeginConnect(remote, ourCallback, null);

            Assert_IsConnected(
                IsConnectedState.Closed,
                conn, cli, "BB");
            stuff.Mockery_VerifyAllExpectationsHaveBeenMet();
            //
            Assert_IsConnected(
                IsConnectedState.Closed,
                conn, cli, "CC0");
            if (behaviour.SdpQueryResultPort.HasValue)
            {
                var listAllocs = new List <IntPtr>();
                IntPtr /*"SDP_Response_Data *"*/ pSdp = BluetopiaSdpParseTests
                                                        .ProtoDListMake_InSDPResponse_Data(listAllocs, behaviour.SdpQueryResultPort.Value);
                var  sdpQuery          = cli2.Testing_GetSdpQuery();
                uint SDPRequestID      = 0;
                uint CallbackParameter = 0;
                //
                stuff.AddExpectOpenRemotePort(null, null);
                // TODO raise callback on thread pool
                sdpQuery.HandleSDP_Response_Callback(stuff.StackId, SDPRequestID,
                                                     pSdp, CallbackParameter);
                BluetopiaSdpParseTests.Free(listAllocs);
                Thread.Sleep(2000);//HACK
            }
            //
            Assert_IsConnected(
                IsConnectedState.Closed,
                conn, cli, "CC");
            stuff.Mockery_VerifyAllExpectationsHaveBeenMet();
            var openConfData = new Structs.SPP_Open_Port_Confirmation_Data(
                conn.Testing_GetPortId(), behaviour.ConnConfStatusCode);

            using (var ctor = new SppEventCreator()) {
                Structs.SPP_Event_Data eventData = ctor.CreateOpenConfirmation(
                    conn.Testing_GetPortId(), behaviour.ConnConfStatusCode);
                RaiseSppEvent(stuff, eventData);
            }
            SafeWait(ar); //NEW
            Assert_IsConnected(
                behaviour.EndConnectSuccess ? IsConnectedState.Connected : IsConnectedState.Closed,
                conn, cli, "DD");
            Assert.IsTrue(ar.IsCompleted, "ar.IsCompleted before");
            if (beforeEndConnect != null)
            {
                beforeEndConnect();
            }
            if (behaviour.EndConnectSuccess)
            {
                Debug.Assert(!behaviour.SocketError.HasValue, "Behaviour settings: Success BUT errorCode!!");
                cli.EndConnect(ar);
            }
            else
            {
                Debug.Assert(behaviour.SocketError.HasValue, "Behaviour settings: not Success BUT NO errorCode!!");
                try {
                    cli.EndConnect(ar);
                    Assert.Fail("should have thrown!");
                } catch (SocketException ex) {
                    //TODO Assert.AreEqual(SocketError.ConnectionRefused, ex.SocketErrorCode, "SocketErrorCode");
                    Assert.AreEqual(behaviour.SocketError ?? 0, ex.ErrorCode, "(Socket)ErrorCode");
                }
            }
            Thread.Sleep(200); // let the async async-callback run
            Assert.IsTrue(ourCallbackCalled, "ourCallbackCalled");
            //
            if (behaviour.EndConnectSuccess)
            {
                Assert_IsConnected(
                    IsConnectedState.Connected,
                    conn, cli, "DD2");
                BluetoothEndPoint expectedRemote = new BluetoothEndPoint(Addr1, BluetoothService.Empty, Port5);
                Assert.AreEqual(expectedRemote, cli.RemoteEndPoint, "cli.RemoteEndPoint");
            }
            //
            stuff.Mockery_VerifyAllExpectationsHaveBeenMet();
            return(stuff);
        }