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)); }
/// <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]); } }
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)); }