コード例 #1
0
        public void EbcdicTestsTest()
        {
            FieldFormat binary = new FieldFormat
            {
                Decimal = 0,
                Size    = "6",
                Type    = "B"
            };
            EbcdicEncoder encoder = new EbcdicEncoder("ascii");
            EbcdicDecoder decoder = new EbcdicDecoder("ascii");

            decimal value1 = -1937m;
            decimal value2 = 1937m;

            Assert.AreEqual(value1, decoder.Decode(encoder.Encode(value1, binary), binary));
            Assert.AreEqual(value2, decoder.Decode(encoder.Encode(value2, binary), binary));
        }
コード例 #2
0
        /// <summary>
        /// read a field
        /// </summary>
        /// <param name="fieldFormat"></param>
        /// <param name="readNumericValues"></param>
        /// <returns></returns>
        private object ReadField(FieldFormat fieldFormat, IDictionary <string, decimal> readNumericValues)
        {
            List <object> values = new List <object>();
            int           occurs;

            if (fieldFormat.HasDependencies())
            {
                if (readNumericValues.ContainsKey(fieldFormat.DependingOn))
                {
                    occurs = Decimal.ToInt32(readNumericValues[fieldFormat.DependingOn]);
                }
                else
                {
                    throw new System.Exception(
                              string.Format("Check your copybook :[{0}] is not present, but field format says it has dependencies ...",
                                            fieldFormat.DependingOn));
                }
            }
            else
            {
                occurs = fieldFormat.Occurs;
            }

            for (int i = 0; i < occurs; i++)
            {
                byte[] bytes = Read(fieldFormat.ByteSize, fieldFormat);
                object value = _decoder.Decode(bytes, fieldFormat);
                values.Add(value);
                if (value is decimal)
                {
                    readNumericValues[fieldFormat.Name] = (decimal)value;
                }
            }

            if (fieldFormat.HasDependencies() || occurs > 1)
            {
                // if occurs is variable or greater than one, return results in a list
                return(values);
            }
            else
            {
                // otherwise, just return the single item
                return(values[0]);
            }
        }
コード例 #3
0
 public void EbcdicDecoderTestText()
 {
     BeforeClass();
     Before();
     byte[] input = { 72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33 };
     Assert.AreEqual("Hello World!", _decoder.Decode(input, Text));
 }