示例#1
0
        /// <summary>
        /// 将对象或具有给定根的对象图形序列化为所提供的流。
        /// </summary>
        /// <param name="serializationStream">格式化程序在其中放置序列化数据的流。此流可以引用多种后备存储区(如文件、网络、内存等)。</param>
        /// <param name="graph">要序列化的对象或对象图形的根。将自动序列化此根对象的所有子对象。</param>
        public void Serialize(Stream serializationStream, object graph)
        {
            Type InstanceType = graph.GetType();

            ObjectTransferOrderAttribute[] transConfig = new ObjectTransferOrderAttribute[0];
            PropertyInfo[] transPropertys = SpecUtil.GetTransferProperties(InstanceType, out transConfig);

            byte[] currentBytes = new byte[0];
            ObjectTransferOrderAttribute currentConfig = null;
            PropertyInfo pInfo = null;

            for (int i = 0, j = transPropertys.Length; i < j; i++)
            {
                pInfo         = transPropertys[i];
                currentConfig = transConfig[i];
                currentBytes  = SpecUtil.GetGetHostBytes(pInfo.PropertyType, pInfo.GetValue(graph, null));

                if (currentBytes != null && currentBytes.Length > 0)
                {
                    if (currentConfig.Reverse)
                    {
                        currentBytes = SpecUtil.ReverseBytes(currentBytes);
                    }
                    serializationStream.Write(currentBytes, 0, currentBytes.Length);
                }
            }
        }
示例#2
0
        public void DoTest()
        {
            byte[]     dat = Encoding.UTF8.GetBytes("测试");
            EaseString str = new EaseString {
                ESP_Length = (ushort)dat.Length, ESP_Data = dat
            };

            //Console.WriteLine("{0}={1}", str.ESP_Length, dat.ESP_Length);

            byte[] networkBytes = str.GetNetworkBytes();
            //Console.WriteLine("Len: {1}, Network Bytes: {0}", BitConverter.ToString(networkBytes), networkBytes.ESP_Length);
            //Console.WriteLine("Total:{0}\r\n{1}", networkBytes.ESP_Length, networkBytes.GetHexViewString());

            EaseString   str2 = new EaseString();
            MemoryStream ms   = new MemoryStream(networkBytes);

            ms.Position = 0;

            if (!HasImplementDataBind)
            {
                str2.BindFromNetworkStream(ms, 0, false);
            }
            else
            {
                str2.BindMappingWithStream(ms);
            }

            byte[] bytes2cmp = str2.GetNetworkBytes();
            //Console.WriteLine("Cmp Total:{0}\r\n{1}", bytes2cmp.ESP_Length, bytes2cmp.GetHexViewString());

            Assert.That(str.ESP_Length == str2.ESP_Length);
            Assert.That(SpecUtil.AreEqual(str.ESP_Data, str2.ESP_Data));
            Assert.That(str.Equals(str2));
        }
示例#3
0
        public void DoTest()
        {
            ResourceRequest instance = new ResourceRequest();

            instance.ESP_Header        = RequestHeader.RequestHeader4Test;
            instance.ESP_PackageIndex  = 0;
            instance.ESP_PackageLength = 0;
            instance.ESP_LinksCount    = 1;

            byte[] linkDat = EaseString.DefaultEncoding.GetBytes("http://118.123.205.218:888/images/testpic.gif");
            instance.ESP_LinkData = new EaseString[] {
                new EaseString {
                    ESP_Data = linkDat, ESP_Length = (ushort)linkDat.Length
                }
            };


            byte[] testBytes = instance.GetNetworkBytes();
            //Console.WriteLine("Total:{0}\r\n{1}", testBytes.ESP_Length, testBytes.GetHexViewString());

            ResourceRequest instanceCmp = new ResourceRequest();

            System.IO.MemoryStream ms = new System.IO.MemoryStream(testBytes);
            ms.Position = 0;
            instanceCmp.BindFromNetworkStream(ms, 0, false);

            byte[] bytes2cmp = instanceCmp.GetNetworkBytes();
            //Console.WriteLine("Cmp Total:{0}\r\n{1}", bytes2cmp.ESP_Length, bytes2cmp.GetHexViewString());

            Assert.That(SpecUtil.AreEqual(testBytes, bytes2cmp));
        }
示例#4
0
        public void DoTest()
        {
            PageV21Response instance = new PageV21Response();

            instance.ESP_Header = ResponseHeader.ResponseHeader4Test;
            instance.ESP_Code   = StatusCode.Success;
            byte[] msgBytes = EaseString.DefaultEncoding.GetBytes("OK");
            instance.ESP_Message = new EaseString {
                ESP_Data = msgBytes, ESP_Length = (ushort)msgBytes.Length
            };
            instance.ESP_Method = CommandType.None;

            byte[] cmdBytes = EaseString.DefaultEncoding.GetBytes("GET / HTTP/1.1");
            instance.ESP_Command = new EaseString {
                ESP_Data = cmdBytes, ESP_Length = (ushort)cmdBytes.Length
            };
            instance.ESP_PageDocCount = 1;

            instance.ESP_EmbedResDocs = new EmbedResourceDocument[] { EmbedResourceDocument.EmbedResourceDocument4Test };


            byte[] testBytes = instance.GetNetworkBytes();
            //Console.WriteLine("Total:{0}\r\n{1}", testBytes.ESP_Length, testBytes.GetHexViewString());

            PageV21Response instanceCmp = new PageV21Response();

            System.IO.MemoryStream ms = new System.IO.MemoryStream(testBytes);
            ms.Position = 0;
            instanceCmp.BindFromNetworkStream(ms, 0, false);

            byte[] bytes2cmp = instanceCmp.GetNetworkBytes();
            //Console.WriteLine("Cmp Total:{0}\r\n{1}", bytes2cmp.ESP_Length, bytes2cmp.GetHexViewString());

            Assert.That(SpecUtil.AreEqual(testBytes, bytes2cmp));
        }
示例#5
0
        private void treeView_AfterSelect(object sender, TreeViewEventArgs e)
        {
            #region 改变并还原上次选中节点的背景颜色
            e.Node.BackColor = System.Drawing.Color.YellowGreen;
            TreeNode lastNode = lastSelectedNode[2];
            if (lastNode != null)
            {
                lastNode.BackColor = System.Drawing.Color.Transparent;
            }
            lastSelectedNode[2] = e.Node;
            #endregion

            object nodeTag = e.Node.Tag;
            if (nodeTag != null && nodeTag.GetType().Equals(typeof(byte[])))
            {
                rtxOutput.Clear();
                byte[] bindBytes = (byte[])nodeTag;
                WriteOutput("{0}", SpecUtil.GetHexViewString(bindBytes));

                dataProvider.RawBytes = bindBytes;
                htmlBrowser.Navigate(dataProvider);

                SetContextMenuItem(true, true, true, true);
            }
            else
            {
                SetContextMenuItem(false, false, true, false);
            }
        }
示例#6
0
        public void DoRequest()
        {
            byte[] linkBytes = EaseString.DefaultEncoding.GetBytes("http://118.123.205.218:888/blbook/index.aspx");

            PageV21Request instance = new PageV21Request
            {
                ESP_Link = new EaseString {
                    ESP_Length = (ushort)linkBytes.Length, ESP_Data = linkBytes
                },
                ESP_Header = RequestHeader.RequestHeader4Test
            };

            //ServiceConfig Config = ServiceConfig.GetByServiceID(1);

            byte[] testBytes = instance.GetNetworkBytes();
            //Console.WriteLine("Total:{0}\r\n{1}", testBytes.ESP_Length, testBytes.GetHexViewString());

            PageV21Request instanceCmp = new PageV21Request();

            System.IO.MemoryStream ms = new System.IO.MemoryStream(testBytes);
            ms.Position = 0;
            instanceCmp.BindFromNetworkStream(ms, 0, false);
            byte[] bytes2cmp = instanceCmp.GetNetworkBytes();
            //Console.WriteLine("Cmp Total:{0}\r\n{1}", bytes2cmp.ESP_Length, bytes2cmp.GetHexViewString());

            Assert.That(SpecUtil.AreEqual(testBytes, bytes2cmp));
        }
示例#7
0
        private void btnVieHex_Click(object sender, EventArgs e)
        {
            if (!tbxHexview.Focused)
            {
                outPanel.SelectedTab = tabPageHexview;
                tbxHexview.Focus();
            }

            switch (VieMode)
            {
            case InterfaceViewMode.RequestView:
                tbxHexview.Text = SpecUtil.HexPatternStringToByteArray(tbxRequestBin.Text).GetHexViewString();
                break;

            case InterfaceViewMode.ResponseView:
                tbxHexview.Text = SpecUtil.HexPatternStringToByteArray(tbxRespBin.Text).GetHexViewString();
                break;

            case InterfaceViewMode.OtherView:
                break;

            default:
                break;
            }
        }
示例#8
0
        public void DoTest()
        {
            ApplicationResponse instance = new ApplicationResponse();

            instance.ESP_Header = ResponseHeader.ResponseHeader4Test;
            instance.ESP_Code   = StatusCode.Success;
            byte[] msgBytes = EaseString.DefaultEncoding.GetBytes("OK");
            instance.ESP_Message = new EaseString {
                ESP_Data = msgBytes, ESP_Length = (ushort)msgBytes.Length
            };
            instance.ESP_Method = CommandType.None;
            byte[] cmdBytes = EaseString.DefaultEncoding.GetBytes("GET / HTTP/1.1");
            instance.ESP_Command = new EaseString {
                ESP_Data = cmdBytes, ESP_Length = (ushort)cmdBytes.Length
            };

            byte[] linkDat = EaseString.DefaultEncoding.GetBytes("http://118.123.205.218:888/images/testpic.gif");
            instance.ESP_AppResponseData   = linkDat;
            instance.ESP_AppResponseLength = linkDat.Length;


            byte[] testBytes = instance.GetNetworkBytes();
            //Console.WriteLine("Total:{0}\r\n{1}", testBytes.ESP_Length, testBytes.GetHexViewString());

            ApplicationResponse instanceCmp = new ApplicationResponse();

            System.IO.MemoryStream ms = new System.IO.MemoryStream(testBytes);
            ms.Position = 0;
            instanceCmp.BindFromNetworkStream(ms, 0, false);

            byte[] bytes2cmp = instanceCmp.GetNetworkBytes();
            //Console.WriteLine("Cmp Total:{0}\r\n{1}", bytes2cmp.ESP_Length, bytes2cmp.GetHexViewString());

            Assert.That(SpecUtil.AreEqual(testBytes, bytes2cmp));
        }
示例#9
0
        public void DoTest()
        {
            EaseResource res = EaseResource4Test;

            byte[] networkBytes = res.GetNetworkBytes();


            //Console.WriteLine("Len: {1}, Network Bytes: {0}", BitConverter.ToString(networkBytes), networkBytes.ESP_Length);

            EaseResource str2 = new EaseResource();
            MemoryStream ms   = new MemoryStream(networkBytes);

            ms.Position = 0;

            //Console.WriteLine("网络字节流,长度:{0}\r\n{1}", networkBytes.ESP_Length, networkBytes.GetHexViewString());

            if (!HasImplementDataBind)
            {
                str2.BindFromNetworkStream(ms, 0, false);
            }
            else
            {
                str2.BindMappingWithStream(ms);
            }

            Assert.That(res.ESP_Name.Equals(str2.ESP_Name));
            Assert.That(res.ESP_URL.Equals(str2.ESP_URL));
            Assert.That(res.ESP_Length == str2.ESP_Length);
            Assert.That(res.ESP_Catelog == str2.ESP_Catelog);

            //Console.WriteLine(str2.ESP_Data.GetHexViewString());

            Assert.That(SpecUtil.AreEqual(res.ESP_Data, str2.ESP_Data));
        }
示例#10
0
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Test public void testClassDelegateHandling()
        public virtual void testClassDelegateHandling()
        {
            ExtensionElements       extensionElements = SpecUtil.createElement(modelInstance, caseTask, null, typeof(ExtensionElements));
            CamundaVariableListener variableListener  = SpecUtil.createElement(modelInstance, extensionElements, null, typeof(CamundaVariableListener));
            CamundaField            field             = SpecUtil.createElement(modelInstance, variableListener, null, typeof(CamundaField));

            field.CamundaName        = "fieldName";
            field.CamundaStringValue = "a string value";

            variableListener.CamundaClass = "a.class.Name";

            // when
            CmmnActivity activity = handler.handleElement(planItem, context);

//JAVA TO C# CONVERTER WARNING: Java wildcard generics have no direct equivalent in .NET:
//ORIGINAL LINE: java.util.List<org.camunda.bpm.engine.delegate.VariableListener<?>> listeners = activity.getVariableListenersLocal(org.camunda.bpm.engine.delegate.CaseVariableListener_Fields.CREATE);
            IList <VariableListener <object> > listeners = activity.getVariableListenersLocal([email protected]_Fields.CREATE);

            Assert.assertEquals(1, listeners.Count);

            ClassDelegateCaseVariableListener listener = (ClassDelegateCaseVariableListener)listeners[0];

            Assert.assertEquals("a.class.Name", listener.ClassName);
            Assert.assertEquals(1, listener.FieldDeclarations.Count);
            Assert.assertEquals("fieldName", listener.FieldDeclarations[0].Name);
            object fieldValue = listener.FieldDeclarations[0].Value;

            assertTrue(fieldValue is Expression);
            Expression expressionValue = (Expression)fieldValue;

            assertEquals("a string value", expressionValue.ExpressionText);

            Assert.assertEquals(listener, activity.getVariableListenersLocal([email protected]_Fields.UPDATE)[0]);
            Assert.assertEquals(listener, activity.getVariableListenersLocal([email protected]_Fields.DELETE)[0]);
        }
示例#11
0
        /// <summary>
        /// 从网络字节序列中加载数据
        /// </summary>
        /// <param name="networkBytes"></param>
        public virtual void LoadFromNetworkBytes(byte[] networkBytes)
        {
            MemoryStream ms = new MemoryStream(networkBytes);

            SpecUtil.BindFromNetworkStream(this, ms, 0, false);
            ms.Dispose();
        }
示例#12
0
        private void NodeTagSet_Load(object sender, EventArgs e)
        {
            if (BindInstance == null)
            {
                return;
            }

            tbxNodeType.Text    = BindInstance.NodeType.AssemblyQualifiedName;
            tbxNodeSubType.Text = BindInstance.SubType != null ? BindInstance.SubType.AssemblyQualifiedName : "";

            tbxStartIndex.Text  = BindInstance.StoreIndex.ToString();
            tbxStoreLength.Text = BindInstance.StoreLength.ToString();

            cbxIsESPData.Checked = BindInstance.IsESPData;
            if (BindInstance.NodeType.IsSubclassOf(typeof(ESPDataBase)))
            {
                ESPDataBase instance = BindInstance.NodeItem as ESPDataBase;
                if (instance != null)
                {
                    tbxNodeItem.Text = SpecUtil.ByteArrayToHexString(instance.GetNetworkBytes());
                }
            }
            else if (BindInstance.NodeType.Equals(typeof(byte[])))
            {
                byte[] targetBytes = BindInstance.NodeItem as byte[];
                if (targetBytes != null && targetBytes.Length > 0)
                {
                    tbxNodeItem.Text = SpecUtil.ByteArrayToHexString(targetBytes);
                }
            }
            else
            {
                tbxNodeItem.Text = BindInstance.NodeItem.ToString();
            }
        }
示例#13
0
        public void DoTest()
        {
            ResourcePartialResponse instance = new ResourcePartialResponse();

            instance.ESP_Header = ResponseHeader.ResponseHeader4Test;
            instance.ESP_Code   = StatusCode.Success;
            byte[] msgBytes = EaseString.DefaultEncoding.GetBytes("OK");
            instance.ESP_Message = new EaseString {
                ESP_Data = msgBytes, ESP_Length = (ushort)msgBytes.Length
            };

            instance.ESP_PackageIndex      = 1;
            instance.ESP_LeavePackageCount = 0;

            //instance.ESP_PackageData = Encoding.ASCII.GetBytes("12345678");
            //instance.ESP_PackageLength = instance.ESP_PackageData.Length;


            byte[] testBytes = instance.GetNetworkBytes();
            //Console.WriteLine("Total:{0}\r\n{1}", testBytes.ESP_Length, testBytes.GetHexViewString());

            ResourcePartialResponse instanceCmp = new ResourcePartialResponse();

            System.IO.MemoryStream ms = new System.IO.MemoryStream(testBytes);
            ms.Position = 0;
            instanceCmp.BindFromNetworkStream(ms, 0, false);

            byte[] bytes2cmp = instanceCmp.GetNetworkBytes();
            //Console.WriteLine("Cmp Total:{0}\r\n{1}", bytes2cmp.ESP_Length, bytes2cmp.GetHexViewString());

            Assert.That(SpecUtil.AreEqual(testBytes, bytes2cmp));
        }
示例#14
0
        public void AppDownTest()
        {
            byte[] testBytes = SpecUtil.HexPatternStringToByteArray(@"C8 00 
00 00 1C 00 00 27 14 00 64 00 0B 00 00 0E 52 00 
00 00 27 03 00 00 00 00 00 00 00 00 00 00 01");

            //HttpClient client = new HttpClient();
            //client.UploadData("http://118.123.205.165:8082/App/Post.ashx", testBytes);
            //foreach (string key in client.ResponseHeaders.AllKeys)
            //{
            //    Console.WriteLine("{0}={1}", key, client.ResponseHeaders[key]);
            //}
            //client.Dispose();

            HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("http://118.123.205.165:8082/App/Post.ashx");

            request.Method        = "POST";
            request.ContentLength = testBytes.Length;
            request.ContentType   = "application/x-www-form-urlencoded";// "application/ease-appdown";
            Stream swReq = request.GetRequestStream();

            swReq.Write(testBytes, 0, testBytes.Length);
            swReq.Close();
            swReq.Dispose();

            HttpWebResponse Resp = null;

            try
            {
                Resp = (HttpWebResponse)request.GetResponse();
            }
            catch (WebException ex)
            {
                Resp = (HttpWebResponse)ex.Response;
            }


            foreach (string key in Resp.Headers.AllKeys)
            {
                Console.WriteLine("{0}: {1}", key, Resp.Headers[key]);
            }

            Stream respSw = Resp.GetResponseStream();

            List <byte> bytList = new List <byte>();
            int         rdByte  = 0;

            while ((rdByte = respSw.ReadByte()) != -1)
            {
                bytList.Add((byte)rdByte);
            }

            respSw.Close();
            respSw.Dispose();

            Console.WriteLine("Length:{0}\r\nRAW:{1}", bytList.Count, SpecUtil.ByteArrayToHexString(bytList.ToArray()));

            Resp.Close();
        }
示例#15
0
        public void DoTest()
        {
            int i = 0;

start:

            NetworkSwitchResponse response = new NetworkSwitchResponse();

            response.ESP_SuccessFlag = (i == 0) ? EaseSuccessFlag.SuccessExpress : EaseSuccessFlag.Success;
            response.ESP_CustomCode  = 0;

            response.ESP_TransferData = Encoding.UTF8.GetBytes("123456");

            if (response.ESP_SuccessFlag == EaseSuccessFlag.Success)
            {
                #region 设置完整参数
                response.ESP_DataTotalLength = 100;
                response.ESP_DataIndex       = 0;
                response.ESP_DateEndIndex    = 0;
                #endregion
            }

            if (response.ESP_SuccessFlag == EaseSuccessFlag.SuccessExpress)
            {
                response.ESP_LeaveLength = response.ESP_TransferData.Length;
            }
            else
            {
                response.ESP_LeaveLength = response.ESP_TransferData.Length + 4 * 3; //后续长度
            }
            //Console.WriteLine("后续长度:{0}", response.ESP_LeaveLength);

            byte[] networkBytes = response.GetNetworkBytes();

            //Console.WriteLine("Total:{0}\r\n{1}", networkBytes.ESP_Length, networkBytes.GetHexViewString());

            NetworkSwitchResponse response2 = new NetworkSwitchResponse();
            MemoryStream          ms        = new MemoryStream(networkBytes);
            ms.Position = 0;
            response2.BindFromNetworkStream(ms, 0, false);

            //Console.WriteLine("########################################");
            //Console.WriteLine(response2.GetNetworkBytes().GetHexViewString());
            //Console.WriteLine("########################################");

            ms.Dispose();

            Assert.That(SpecUtil.AreEqual(response2.GetNetworkBytes(), networkBytes));

            i++;

            if (i < 2)
            {
                //Console.WriteLine("\r\n下一次测试:\r\n");
                goto start;
            }
        }
示例#16
0
 /// <summary>
 /// Determines whether the specified <see cref="T:System.Object"/> is equal to the current <see cref="T:System.Object"/>.
 /// </summary>
 /// <param name="obj">The <see cref="T:System.Object"/> to compare with the current <see cref="T:System.Object"/>.</param>
 /// <returns>
 /// true if the specified <see cref="T:System.Object"/> is equal to the current <see cref="T:System.Object"/>; otherwise, false.
 /// </returns>
 /// <exception cref="T:System.NullReferenceException">
 /// The <paramref name="obj"/> parameter is null.
 /// </exception>
 public override bool Equals(object obj)
 {
     if (obj != null && obj.GetType() == this.GetType())
     {
         EaseString target = (EaseString)obj;
         return(target.ESP_Length == this.ESP_Length &&
                SpecUtil.AreEqual(target.ESP_Data, this.ESP_Data));
     }
     return(base.Equals(obj));
 }
示例#17
0
        /// <summary>
        /// 从网络字节序列绑定实例
        /// </summary>
        /// <param name="ntkBytes">网络字节序列</param>
        public static TEntity BindFromNetworkBytes <TEntity>(byte[] ntkBytes)
            where TEntity : ESPDataBase, new()
        {
            TEntity      instance = new TEntity();
            MemoryStream ms       = new MemoryStream(ntkBytes);

            SpecUtil.BindFromNetworkStream(instance, ms, 0, false);
            ms.Dispose();
            return(instance);
        }
示例#18
0
        /// <summary>
        /// 根据网关传递信息获取转发的请求封装[TODO]
        /// </summary>
        /// <returns></returns>
        public RequestBase GetSubRequest()
        {
            if (ESP_TransferData == null || ESP_TransferData.Length < 2)
            {
                return(null);
            }

            System.IO.MemoryStream ms     = ESP_TransferData.AsMemoryStream();
            RequestBase            subReq = null;
            RequestHeader          header = SpecUtil.DataBind <RequestHeader>(ms, 0);

            switch (header.ESP_Protocol)
            {
            case RequestType.PageV21:
                subReq = new PageV21Request(Context);
                break;

            case RequestType.Mixed:
                subReq = new MixedRequest(Context);
                break;

            case RequestType.Page:
                subReq = new PageRequest(Context);
                break;

            case RequestType.Resource:
                subReq = new ResourceRequest(Context);
                break;

            case RequestType.Application:
                subReq = new ApplicationRequest(Context);
                break;

            case RequestType.UpdateCenter:
                subReq = new GatewayUpdateRequest(Context);
                break;

            case RequestType.SynServerAddress:
                subReq = new SynServerAddressRequest(Context);
                break;

            default:
                subReq = new ApplicationRequest(Context);
                break;
            }
            if (subReq != null)
            {
                subReq.ESP_Header = header;
                SpecUtil.BindFromNetworkStream(subReq, ms, ms.Position, false, 1);
                subReq.ContentRange[0] = 0;
                subReq.ContentRange[1] = ESP_TransferData.LongLength - 1;
            }
            ms.Dispose();
            return(subReq);
        }
示例#19
0
 private void tbxHexview_DragDrop(object sender, DragEventArgs e)
 {
     if (e.Data.GetDataPresent(DataFormats.FileDrop))
     {
         string[] data = (string[])e.Data.GetData(DataFormats.FileDrop);
         foreach (string str in data)
         {
             tbxHexview.Text = SpecUtil.GetHexViewString(System.IO.File.ReadAllBytes(str));
             break;
         }
     }
 }
示例#20
0
 private void btnSaveToBin_Click(object sender, EventArgs e)
 {
     byte[] fileBytes = SpecUtil.HexPatternStringToByteArray(tbxBinView.Text);
     if (fileBytes != null && fileBytes.Length > 0)
     {
         SaveBinDataToFileDialog(this, fileBytes);
     }
     else
     {
         ShowEror("{0}", "未能获取二进制文件内容!");
     }
 }
示例#21
0
        public void SpecUtilTest()
        {
            byte[] testBytes1 = new byte[] { 0x03, 0xF2, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x6A, 0x00, 0x03 };
            byte[] testBytes2 = new byte[] { 0x03, 0xF2, 0x00, 0x00, 0x00, 0x02 };
            byte[] testBytes3 = new byte[] { 0x00, 0x00, 0x00, 0x6A, 0x00, 0x03 };

            Assert.That(SpecUtil.BytesStartWith(testBytes1, testBytes2));
            Assert.That(SpecUtil.BytesStartWith(testBytes1, testBytes3, testBytes2.Length));

            Assert.That(SpecUtil.AreEqual(SpecUtil.TrimStart(testBytes1, testBytes2), testBytes3));
            Assert.That(SpecUtil.AreEqual(SpecUtil.AddPrefix(testBytes3, testBytes2), testBytes1));
        }
示例#22
0
        public void DoTest()
        {
            int testCount = 0;

            short[] AvaliableLens = new short[] { 21, 20, 18 };

            //string ttestString = RequestHeader.HttpRequestURLSyn(RequestHeader4Test, "/index.aspx");
            //Console.WriteLine(ttestString);
            //ttestString = RequestHeader.HttpRequestURLSyn(RequestHeader4Test, "/");
            //Console.WriteLine(ttestString);
            //ttestString = RequestHeader.HttpRequestURLSyn(RequestHeader4Test, "/index.aspx?a=b&c=d");
            //Console.WriteLine(ttestString);
            //ttestString = RequestHeader.HttpRequestURLSyn(RequestHeader4Test, "/index.aspx?abcd");
            //Console.WriteLine(ttestString);
            //return;

start:

            RequestHeader reqH = RequestHeader4Test;

            reqH.ESP_SuccessFlag = EaseSuccessFlag.Success;
            reqH.ESP_ParamsCount = AvaliableLens[testCount];
            //Console.WriteLine("参数个数为:{0}", reqH.ParamsCount);

            byte[] reqHBytes = reqH.GetNetworkBytes();
            //Console.WriteLine("Total:{0}\r\n{1}", reqHBytes.ESP_Length, reqHBytes.GetHexViewString());

            RequestHeader reqH2 = new RequestHeader();

            System.IO.MemoryStream ms = new System.IO.MemoryStream(reqHBytes);
            reqH2.BindFromNetworkStream(ms, 0, false);

            byte[] bytes2cmp = reqH2.GetNetworkBytes();
            //Console.WriteLine(bytes2cmp.GetHexViewString());

            bool currentResult = SpecUtil.AreEqual(reqHBytes, bytes2cmp);

            Assert.That(currentResult, string.Format("**参数为{0}个时,测试失败", reqH.ESP_ParamsCount));

            testCount++;
            if (testCount < 3)
            {
                goto start;
            }
            else
            {
                RequestHeader4Test.ESP_ParamsCount = 21;
            }
        }
示例#23
0
        /// <summary>
        /// 读取全部数据绑定
        /// </summary>
        /// <typeparam name="TEntity">The type of the entity.</typeparam>
        /// <returns></returns>
        public TEntity ReadToEnd <TEntity>()
            where TEntity : ESPDataBase, new()
        {
            TEntity instance     = new TEntity();
            Type    instanceType = typeof(TEntity);

            ObjectTransferOrderAttribute[] Configs = new ObjectTransferOrderAttribute[0];
            PropertyInfo[] bindProperties = SpecUtil.GetTransferProperties(instanceType, out Configs);
            object         currentObj = null, lastDat = null;

            for (int m = 0, n = bindProperties.Length; m < n; m++)
            {
                string propKey = BindBuilder.GetPropertyBindKey(instanceType, bindProperties[m]);
                if (BindBuilder.CustomBindDict.ContainsKey(propKey))
                {
                    currentObj = BindBuilder.CustomBindDict[propKey](bindSteam, instance);
                    //Console.WriteLine("自定义属性绑定回调..");
                }
                else
                {
                    if (lastDat != null && bindProperties[m].PropertyType.IsArray)
                    {
                        if (Configs[m].ArrayLengthOffset != -1)
                        {
                            throw new NotSupportedException(String.Format("数组属性偏移量不为-1的值暂不支持,当前配置值为:{0}!\r\n实例属性:{1}:{2}, 属性类型:{3}",
                                                                          Configs[m].ArrayLengthOffset,
                                                                          instanceType.FullName,
                                                                          bindProperties[m].Name,
                                                                          bindProperties[m].PropertyType.FullName));
                        }
                        else
                        {
                            currentObj = SpecUtil.GetArrayPropertyValue(bindProperties[m].PropertyType.GetElementType(),
                                                                        Convert.ToInt32(lastDat), bindSteam);
                        }
                    }
                    else
                    {
                        currentObj = SpecUtil.GetNetworkStreamMappingData(bindProperties[m].PropertyType, instance.Context, bindSteam, -1, false);
                    }
                }

                lastDat = currentObj;
                bindProperties[m].SetValue(instance, currentObj, null);
            }

            return(instance);
        }
示例#24
0
        /// <summary>
        /// 获取网络字节序列
        /// </summary>
        /// <returns></returns>
        public override byte[] GetNetworkBytes()
        {
            byte[] retBytes = new byte[0];

            System.IO.MemoryStream ms = new System.IO.MemoryStream();
            byte[] lenBytes           = SpecUtil.ReverseBytes(BitConverter.GetBytes(ESP_Length));
            ms.Write(lenBytes, 0, lenBytes.Length);
            if (ESP_Length > 0)
            {
                ms.Write(ESP_Data, 0, ESP_Data.Length);
            }
            retBytes = ms.ToArray();
            ms.Dispose();

            return(retBytes);
        }
示例#25
0
        public void DoTest()
        {
            //ESP_Type lastObjDateType = typeof(byte[]);
            //byte[] lastDat = new byte[] { 0x00, 0x01 };
            //long lastOffset = Convert.ToInt64(lastObjDateType.GetProperty("ESP_Length").GetValue(lastDat, null));
            //Console.WriteLine(lastOffset);


            MixedResponse instance = new MixedResponse();

            instance.ESP_Header = ResponseHeader.ResponseHeader4Test;
            instance.ESP_Code   = StatusCode.Success;
            byte[] msgBytes = EaseString.DefaultEncoding.GetBytes("OK");
            instance.ESP_Message = new EaseString {
                ESP_Data = msgBytes, ESP_Length = (ushort)msgBytes.Length
            };

            instance.ESP_Method = CommandType.None;

            byte[] cmdBytes = EaseString.DefaultEncoding.GetBytes("GET / HTTP/1.1");
            instance.ESP_Command = new EaseString {
                ESP_Data = cmdBytes, ESP_Length = (ushort)cmdBytes.Length
            };

            instance.ESP_PageDocCount = 2;
            instance.ESP_Docs         = new EaseDocument[] { EaseDocument.EaseDocument4Test, EaseDocument.EaseDocument4Test };

            instance.ESP_PageResCount = 2;
            instance.ESP_Resources    = new EaseResource[] { EaseResource.EaseResource4Test, EaseResource.EaseResource4Test };


            byte[] testBytes = instance.GetNetworkBytes();
            //Console.WriteLine("Total:{0}\r\n{1}", testBytes.ESP_Length, testBytes.GetHexViewString());

            MixedResponse instanceCmp = new MixedResponse();

            System.IO.MemoryStream ms = new System.IO.MemoryStream(testBytes);
            ms.Position = 0;
            instanceCmp.BindFromNetworkStream(ms, 0, false);

            byte[] bytes2cmp = instanceCmp.GetNetworkBytes();
            //Console.WriteLine("Cmp Total:{0}\r\n{1}", bytes2cmp.ESP_Length, bytes2cmp.GetHexViewString());

            Assert.That(SpecUtil.AreEqual(testBytes, bytes2cmp));
        }
示例#26
0
        public void DoTest()
        {
            EmbedResourceDocument instance = EmbedResourceDocument4Test;

            byte[] testBytes = instance.GetNetworkBytes();
            //Console.WriteLine("Total:{0}\r\n{1}", testBytes.ESP_Length, testBytes.GetHexViewString());

            EmbedResourceDocument instanceCmp = new EmbedResourceDocument();

            System.IO.MemoryStream ms = new System.IO.MemoryStream(testBytes);
            ms.Position = 0;
            instanceCmp.BindFromNetworkStream(ms, 0, false);

            byte[] bytes2cmp = instanceCmp.GetNetworkBytes();
            //Console.WriteLine("Cmp Total:{0}\r\n{1}", bytes2cmp.ESP_Length, bytes2cmp.GetHexViewString());

            Assert.That(SpecUtil.AreEqual(testBytes, bytes2cmp));
        }
示例#27
0
        private void btnSendTest_Click(object sender, EventArgs e)
        {
            if (TesterPlugConfig.Instance.CurrentPlug == null)
            {
                ShowEror("没有加载任何解析插件在目录{0}中!", TesterPlugConfig.Instance.PlugInDirectory);
            }
            else
            {
                bool   blnGetRemote = true;
                byte[] respBytes    = new byte[0];
                try
                {
                    TesterPlugConfig.Instance.CurrentPlug.ExchangeStore("Plug_Current_ReadObjectFromStream", cbxReadObjectFromStream.Checked);

                    respBytes = TesterPlugConfig.Instance.CurrentPlug.GetTestResponse(SpecUtil.HexPatternStringToByteArray(tbxRequestBin.Text), WriteOutput);
                }
                catch (Exception plugExp)
                {
                    plugExp      = SpecUtil.GetTriggerException(plugExp);
                    blnGetRemote = false;
                    ShowEror("插件测试失败,错误消息及跟踪:\r\nMessage:{0} \r\nStackTrace:{1}",
                             plugExp.Message,
                             plugExp.StackTrace);
                }

                if (blnGetRemote)
                {
                    tabControlData.SelectedTab = tabPageResp;
                    if (respBytes != null && respBytes.Length > 0)
                    {
                        if (!tbxHexview.Focused)
                        {
                            outPanel.SelectedTab = tabPageHexview;
                            tbxHexview.Focus();
                        }

                        //设置返回字节的16进制数据(无ASCII)
                        tbxRespBin.Text = SpecUtil.ByteArrayToHexString(respBytes);

                        tbxHexview.Text = SpecUtil.GetHexViewString(respBytes);
                    }
                }
            }
        }
示例#28
0
        void HexStringTextBox(object sender, DragEventArgs e)
        {
            if (e.Data.GetDataPresent(DataFormats.FileDrop))
            {
                string[] data = (string[])e.Data.GetData(DataFormats.FileDrop);
                foreach (string str in data)
                {
                    FileStream fs = new FileStream(str, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
                    if (fs.Length > int.MaxValue)
                    {
                        ShowEror("文件大小{0}超过可以显示的最大长度[{1}]!", fs.Length, int.MaxValue);
                        return;
                    }

                    byte[] fileBin = new byte[fs.Length];
                    fs.Read(fileBin, 0, fileBin.Length);
                    fs.Close();
                    fs.Dispose();
                    TextBox tbxTarget = sender as TextBox;
                    if (tbxTarget != null)
                    {
                        if (!cbxBase64Binary.Checked)
                        {
                            tbxTarget.Text = SpecUtil.ByteArrayToHexString(fileBin);
                        }
                        else
                        {
                            if (tbxTarget.Name.Equals(tbxInput.Name))
                            {
                                //读取为文本文件
                                tbxInput.Text = getCurrentEncoding().GetString(fileBin);
                            }
                            else if (tbxTarget.Name.Equals(tbxBinView.Name))
                            {
                                //显示二进制序列的base64编码
                                tbxTarget.Text = Convert.ToBase64String(fileBin, Base64FormattingOptions.InsertLineBreaks);
                            }
                        }
                    }

                    break;
                }
            }
        }
示例#29
0
        /// <summary>
        /// 获取网络字节序列
        /// </summary>
        /// <returns></returns>
        public override byte[] GetNetworkBytes()
        {
            byte[] toFixBytes = GetInstanceNetworkBytes(p =>
            {
                if (ESP_PackageLength == 0)
                {
                    return(p.Name.Equals("ESP_PackageBytes"));
                }
                return(false);
            });
            ESP_Header.ESP_LeaveLength = toFixBytes.Length - 6;

            byte[] lenBytes = SpecUtil.ReverseBytes(BitConverter.GetBytes(ESP_Header.ESP_LeaveLength));
            for (int i = 0, j = lenBytes.Length; i < j; i++)
            {
                Buffer.SetByte(toFixBytes, 2 + i, lenBytes[i]);
            }
            return(toFixBytes);
        }
示例#30
0
        /// <summary>
        /// 获取网络字节序列
        /// </summary>
        /// <returns></returns>
        public override byte[] GetNetworkBytes()
        {
            //if (ESP_Header.ESP_LeaveLength == 0) return ResponseBizErrorBytes;

            byte[] toFixBytes = base.GetNetworkBytes();
            ESP_Header.ESP_LeaveLength = toFixBytes.Length - 6;

            byte[] lenBytes = SpecUtil.ReverseBytes(BitConverter.GetBytes(ESP_Header.ESP_LeaveLength));
            for (int i = 0, j = lenBytes.Length; i < j; i++)
            {
                Buffer.SetByte(toFixBytes, 2 + i, lenBytes[i]);
            }

            //System.Diagnostics.Trace.TraceInformation("业务对象返回字节后续长度: {0} ==> {1}",
            //        ESP_Header.ESP_LeaveLength,
            //        lenBytes.ByteArrayToHexString());

            return(toFixBytes);
        }