public void TestDate6() { DateTimeOffset date = DateTimeOffset.FromUnixTimeMilliseconds(1514700000000L); var tz = TZConvert.GetTimeZoneInfo("Central Standard Time"); date = TimeZoneInfo.ConvertTime(date, tz); IsoValue f = new IsoValue(IsoType.DATE6, date.DateTime); Assert.Equal("171231", f.ToString()); Assert.Equal("171231", IsoType.DATE6.Format(date)); var parsed = new Date6ParseInfo().Parse(1, "171231".GetSignedBytes(), 0, null); Assert.Equal("171231", parsed.ToString()); Assert.Equal(f.Value, parsed.Value); var buf = new sbyte[3]; buf[0] = 0x17; buf[1] = 0x12; buf[2] = 0x31; var dt = new Date6ParseInfo(); parsed = dt.ParseBinary(2, buf, 0, null); Assert.Equal("171231", parsed.ToString()); Assert.Equal(f.Value, parsed.Value); }
public void WindowsToUtf8() { string data = "05ácido"; Encoding encoding = Encoding.GetEncoding("ISO-8859-1"); if (OsUtil.IsLinux()) { encoding = Encoding.UTF8; } sbyte[] buf = data.GetSbytes(encoding); LlvarParseInfo parser = new LlvarParseInfo { Encoding = Encoding.Default }; if (OsUtil.IsLinux()) { parser.Encoding = Encoding.UTF8; } IsoValue field = parser.Parse(1, buf, 0, null); Assert.Equal(field.Value, data.Substring(2)); parser.Encoding = encoding; field = parser.Parse(1, buf, 0, null); Assert.Equal(data.Substring(2), field.Value); }
public void TestBinaryNumberParsing() { NumericParseInfo npi = new NumericParseInfo(6); IsoValue val = npi.ParseBinary(0, new byte[] { 0x12, 0x34, 0x56 }.ToSbytes(), 0, null); Assert.Equal(123456, Convert.ToInt32(val.Value)); }
public CompositeField AddValue(IsoValue value) { if (Values == null) { Values = new List <IsoValue>(4); } Values.Add(value); return(this); }
public void TestParser() { string configXml = @"/Resources/config.xml"; MessageFactory <IsoMessage> mfact = Config(configXml); //Headers Assert.NotNull(mfact.GetIsoHeader(0x800)); Assert.NotNull(mfact.GetIsoHeader(0x810)); Assert.Equal(mfact.GetIsoHeader(0x800), mfact.GetIsoHeader(0x810)); //Templates IsoMessage m200 = mfact.GetMessageTemplate(0x200); Assert.NotNull(m200); IsoMessage m400 = mfact.GetMessageTemplate(0x400); Assert.NotNull(m400); for (int i = 2; i < 89; i++) { IsoValue v = m200.GetField(i); if (v == null) { Assert.False(m400.HasField(i)); } else { Assert.True(m400.HasField(i)); Assert.Equal(v, m400.GetField(i)); } } Assert.False(m200.HasField(90)); Assert.True(m400.HasField(90)); Assert.True(m200.HasField(102)); Assert.False(m400.HasField(102)); //Parsing guides string s800 = "0800201080000000000012345611251125"; string s810 = "08102010000002000000123456112500"; IsoMessage m = mfact.ParseMessage(s800.GetSbytes(), 0); Assert.NotNull(m); Assert.True(m.HasField(3)); Assert.True(m.HasField(12)); Assert.True(m.HasField(17)); Assert.False(m.HasField(39)); m = mfact.ParseMessage(s810.GetSbytes(), 0); Assert.NotNull(m); Assert.True(m.HasField(3)); Assert.True(m.HasField(12)); Assert.False(m.HasField(17)); Assert.True(m.HasField(39)); }
public override IsoValue ParseBinary(int field, sbyte[] buf, int pos, ICustomField custom) { var sbytes = buf; if (pos < 0) { throw new ParseException($"Invalid bin LLLVAR field {field} pos {pos}"); } if (pos + 2 > buf.Length) { throw new ParseException($"Insufficient data for bin LLLVAR header, field {field} pos {pos}"); } var len = (sbytes[pos] & 0x0f) * 100 + ((sbytes[pos + 1] & 0xf0) >> 4) * 10 + (sbytes[pos + 1] & 0x0f); if (len < 0) { throw new ParseException($"Invalid bin LLLVAR length {len}, field {field} pos {pos}"); } if (len + pos + 2 > buf.Length) { throw new ParseException($"Insufficient data for bin LLLVAR field {field}, pos {pos}"); } if (custom == null) { return(new IsoValue(IsoType, buf.ToString(pos + 2, len, Encoding))); } var v = new IsoValue(IsoType, custom.DecodeField(buf.ToString(pos + 2, len, Encoding)), custom); if (v.Value == null) { return(new IsoValue(IsoType, buf.ToString(pos + 2, len, Encoding.Default))); } return(v); }
public void TestSimpleFieldSetter() { IsoMessage iso = mf.NewMessage(0x200); IsoValue f3 = iso.GetField(3); iso.UpdateValue(3, "999999"); Assert.Equal("999999", iso.GetObjectValue(3)); IsoValue nf3 = iso.GetField(3); Assert.NotSame(f3, nf3); Assert.Equal(f3.Type, nf3.Type); Assert.Equal(f3.Length, nf3.Length); Assert.Same(f3.Encoder, nf3.Encoder); Assert.Throws <ArgumentException>(() => iso.UpdateValue(4, "INVALID!")) ; }
public void WindowsToUtf8() { string data = "05ácido"; Encoding encoding = Encoding.UTF8; sbyte[] buf = data.GetSignedbytes(encoding); LlvarParseInfo parser = new LlvarParseInfo { Encoding = Encoding.Default }; IsoValue field = parser.Parse(1, buf, 0, null); Assert.Equal(field.Value, data.Substring(2)); parser.Encoding = encoding; field = parser.Parse(1, buf, 0, null); Assert.Equal(data.Substring(2), field.Value); }
public void TestExtendCompositeWithSameField() { string configXml = @"/Resources/issue47.xml"; MessageFactory <IsoMessage> mfact = Config(configXml); string m200 = "02001000000000000004000000100000013ABCDEFGHIJKLM"; IsoMessage isoMessage = mfact.ParseMessage(m200.GetSbytes(), 0); // check field num 4 IsoValue field4 = isoMessage.GetField(4); Assert.Equal(IsoType.AMOUNT, field4.Type); Assert.Equal(IsoType.AMOUNT.Length(), field4.Length); // check nested field num 4 from composite field 62 CompositeField compositeField62 = (CompositeField)isoMessage.GetField(62).Value; IsoValue nestedField4 = compositeField62.GetField(0); // first in list Assert.Equal(IsoType.ALPHA, nestedField4.Type); Assert.Equal(13, nestedField4.Length); }