예제 #1
0
        public void SpecReadInContextTest()
        {
            SpecFile spec         = SpecFile.ParseContractFile("..\\..\\Contracts\\test.RnR", SpecFileFormat.Ini);
            string   testBytesStr = @"03 F2 00 00 00 08 00 00 00 04 C8 02 00 B8";

            byte[] readBytes = TypeCache.HexPatternStringToByteArray(testBytesStr);

            MemoryStream readSrc  = new MemoryStream(readBytes);
            MemoryStream writeSrc = new MemoryStream();

            using (StreamContext sc = new StreamContext(spec, readSrc, writeSrc))
            {
                Dictionary <string, object> ReqDict = sc.GetContextRequest();
                if (!SpecData.ReadAs <short>(ReqDict, "ESP_SuccessFlag").Equals((short)1010))
                {
                    Console.WriteLine("*读取数据错误!");
                }
                else
                {
                    sc.SetPosition(0);

                    Dictionary <string, object> result = new Dictionary <string, object>(StringComparer.InvariantCultureIgnoreCase);
                    //result["ESP_SuccessFlag"] = (short)1010;
                    result["ESP_SuccessFlag"]  = "Success";
                    result["ESP_CustomCode"]   = (int)0008;
                    result["ESP_LeaveLength"]  = (int)4;
                    result["ESP_TransferData"] = TypeCache.HexPatternStringToByteArray(@"C8 02 00 B8");
                    sc.WriteContextResponse(result);
                }

                if (writeSrc.Length > 0)
                {
                    string result = TypeCache.ByteArrayToHexString(writeSrc.ToArray());
                    Console.WriteLine(result);
                    Debug.Assert(testBytesStr == result);
                }
                else
                {
                    Console.WriteLine("*没有写入数据!");
                }
                writeSrc.Dispose();
            }
        }