public void PackAndUnpackingSimpleMsgArgs() { bool b1 = true; bool b2 = false; byte y1 = 0; byte y2 = 255; Int16 n1 = Int16.MaxValue; Int16 n2 = Int16.MinValue; UInt16 q1 = UInt16.MaxValue; UInt16 q2 = UInt16.MinValue; Int32 i1 = Int32.MaxValue; Int32 i2 = Int32.MinValue; UInt32 u1 = UInt32.MaxValue; UInt32 u2 = UInt32.MinValue; Int64 x1 = Int64.MaxValue; Int64 x2 = Int64.MinValue; UInt64 t1 = UInt64.MaxValue; UInt64 t2 = UInt64.MinValue; double d1 = double.MaxValue; double d2 = double.MinValue; string s1 = "string one"; string s2 = "string two"; bool[] bArray = new bool[] { true, true, false, true, false }; byte[] yArray = new byte[] { 1, 7, 13, 27, 43, 111, 137, 231 }; Int16[] nArray = new Int16[] { -231, -137, -111, -43, -27, -13, -7, -1, 1, 7, 13, 27, 43, 111, 137, 231 }; UInt16[] qArray = new UInt16[] { 1, 7, 13, 27, 43, 111, 137, 231 }; Int32[] iArray = new Int32[] { -231, -137, -111, -43, -27, -13, -7, -1, 1, 7, 13, 27, 43, 111, 137, 231 }; UInt32[] uArray = new UInt32[] { 1, 7, 13, 27, 43, 111, 137, 231 }; Int64[] xArray = new Int64[] { -231, -137, -111, -43, -27, -13, -7, -1, 1, 7, 13, 27, 43, 111, 137, 231 }; UInt64[] tArray = new UInt64[] { 1, 7, 13, 27, 43, 111, 137, 231 }; double[] dArray = new double[] { -1235.3476, -5.456366, 0.0, 4.56566, 12344.2345 }; string[] sArray = new string[] { "this", "is", "a", "string", "array" }; MsgArg bArg1 = new MsgArg("b", new object[] { b1 }); MsgArg bArg2 = new MsgArg("b", new object[] { b2 }); Assert.AreEqual(b1, (bool)bArg1.Value); Assert.AreEqual(b2, (bool)bArg2.Value); MsgArg yArg1 = new MsgArg("y", new object[] { y1 }); MsgArg yArg2 = new MsgArg("y", new object[] { y2 }); Assert.AreEqual(y1, (byte)yArg1.Value); Assert.AreEqual(y2, (byte)yArg2.Value); MsgArg nArg1 = new MsgArg("n", new object[] { n1 }); MsgArg nArg2 = new MsgArg("n", new object[] { n2 }); Assert.AreEqual(n1, (Int16)nArg1.Value); Assert.AreEqual(n2, (Int16)nArg2.Value); MsgArg qArg1 = new MsgArg("q", new object[] { q1 }); MsgArg qArg2 = new MsgArg("q", new object[] { q2 }); Assert.AreEqual(q1, (UInt16)qArg1.Value); Assert.AreEqual(q2, (UInt16)qArg2.Value); MsgArg iArg1 = new MsgArg("i", new object[] { i1 }); MsgArg iArg2 = new MsgArg("i", new object[] { i2 }); Assert.AreEqual(i1, (Int32)iArg1.Value); Assert.AreEqual(i2, (Int32)iArg2.Value); MsgArg uArg1 = new MsgArg("u", new object[] { u1 }); MsgArg uArg2 = new MsgArg("u", new object[] { u2 }); Assert.AreEqual(u1, (UInt32)uArg1.Value); Assert.AreEqual(u2, (UInt32)uArg2.Value); MsgArg xArg1 = new MsgArg("x", new object[] { x1 }); MsgArg xArg2 = new MsgArg("x", new object[] { x2 }); Assert.AreEqual(x1, (Int64)xArg1.Value); Assert.AreEqual(x2, (Int64)xArg2.Value); MsgArg tArg1 = new MsgArg("t", new object[] { t1 }); MsgArg tArg2 = new MsgArg("t", new object[] { t2 }); Assert.AreEqual(t1, (UInt64)tArg1.Value); Assert.AreEqual(t2, (UInt64)tArg2.Value); MsgArg dArg1 = new MsgArg("d", new object[] { d1 }); MsgArg dArg2 = new MsgArg("d", new object[] { d2 }); Assert.AreEqual(d1, (double)dArg1.Value); Assert.AreEqual(d2, (double)dArg2.Value); MsgArg sArg1 = new MsgArg("s", new object[] { s1 }); MsgArg sArg2 = new MsgArg("s", new object[] { s2 }); Assert.AreEqual(s1, (string)sArg1.Value); Assert.AreEqual(s2, (string)sArg2.Value); MsgArg abArg = new MsgArg("ab", new object[] { bArray }); CompareArrays <bool>(bArray, (bool[])abArg.Value); MsgArg ayArg = new MsgArg("ay", new object[] { yArray }); CompareArrays <byte>(yArray, (byte[])ayArg.Value); MsgArg anArg = new MsgArg("an", new object[] { nArray }); CompareArrays <Int16>(nArray, (Int16[])anArg.Value); MsgArg aqArg = new MsgArg("aq", new object[] { qArray }); CompareArrays <UInt16>(qArray, (UInt16[])aqArg.Value); MsgArg aiArg = new MsgArg("ai", new object[] { iArray }); CompareArrays <Int32>(iArray, (Int32[])aiArg.Value); MsgArg auArg = new MsgArg("au", new object[] { uArray }); CompareArrays <UInt32>(uArray, (UInt32[])auArg.Value); MsgArg axArg = new MsgArg("ax", new object[] { xArray }); CompareArrays <Int64>(xArray, (Int64[])axArg.Value); MsgArg atArg = new MsgArg("at", new object[] { tArray }); CompareArrays <UInt64>(tArray, (UInt64[])atArg.Value); MsgArg adArg = new MsgArg("ad", new object[] { dArray }); CompareArrays <double>(dArray, (double[])adArg.Value); MsgArg asArg = new MsgArg("as", new object[] { sArray }); // BUGBUG: Throws exception when casting asArg.Value to string[] //CompareArrays<string>(sArray, (string[])asArg.Value); MsgArg dictArg1 = new MsgArg("{yb}", new object[] { y1, b1 }); Assert.AreEqual(y1, (byte)dictArg1.Key); Assert.AreEqual(b1, (bool)dictArg1.Value); MsgArg dictArg2 = new MsgArg("{by}", new object[] { b2, y2 }); Assert.AreEqual(b2, (bool)dictArg2.Key); Assert.AreEqual(y2, (byte)dictArg2.Value); MsgArg dictArg3 = new MsgArg("{bn}", new object[] { b1, n1 }); Assert.AreEqual(b1, (bool)dictArg3.Key); Assert.AreEqual(n1, (Int16)dictArg3.Value); MsgArg dictArg4 = new MsgArg("{nb}", new object[] { n2, b2 }); Assert.AreEqual(n2, (Int16)dictArg4.Key); Assert.AreEqual(b2, (bool)dictArg4.Value); MsgArg dictArg5 = new MsgArg("{nq}", new object[] { n1, q1 }); Assert.AreEqual(n1, (Int16)dictArg5.Key); Assert.AreEqual(q1, (UInt16)dictArg5.Value); MsgArg dictArg6 = new MsgArg("{qn}", new object[] { q2, n2 }); Assert.AreEqual(q2, (UInt16)dictArg6.Key); Assert.AreEqual(n2, (Int16)dictArg6.Value); MsgArg dictArg7 = new MsgArg("{qi}", new object[] { q1, i1 }); Assert.AreEqual(q1, (UInt16)dictArg7.Key); Assert.AreEqual(i1, (Int32)dictArg7.Value); MsgArg dictArg8 = new MsgArg("{iq}", new object[] { i2, q2 }); Assert.AreEqual(i2, (Int32)dictArg8.Key); Assert.AreEqual(q2, (UInt16)dictArg8.Value); MsgArg dictArg9 = new MsgArg("{iu}", new object[] { i1, u1 }); Assert.AreEqual(i1, (Int32)dictArg9.Key); Assert.AreEqual(u1, (UInt32)dictArg9.Value); MsgArg dictArg10 = new MsgArg("{ui}", new object[] { u2, i2 }); Assert.AreEqual(u2, (UInt32)dictArg10.Key); Assert.AreEqual(i2, (Int32)dictArg10.Value); MsgArg dictArg11 = new MsgArg("{ux}", new object[] { u1, x1 }); Assert.AreEqual(u1, (UInt32)dictArg11.Key); Assert.AreEqual(x1, (Int64)dictArg11.Value); MsgArg dictArg12 = new MsgArg("{xu}", new object[] { x2, u2 }); Assert.AreEqual(x2, (Int64)dictArg12.Key); Assert.AreEqual(u2, (UInt32)dictArg12.Value); MsgArg dictArg13 = new MsgArg("{xt}", new object[] { x1, t1 }); Assert.AreEqual(x1, (Int64)dictArg13.Key); Assert.AreEqual(t1, (UInt64)dictArg13.Value); MsgArg dictArg14 = new MsgArg("{tx}", new object[] { t2, x2 }); Assert.AreEqual(t2, (UInt64)dictArg14.Key); Assert.AreEqual(x2, (Int64)dictArg14.Value); MsgArg dictArg15 = new MsgArg("{td}", new object[] { t1, d1 }); Assert.AreEqual(t1, (UInt64)dictArg15.Key); Assert.AreEqual(d1, (double)dictArg15.Value); MsgArg dictArg16 = new MsgArg("{dt}", new object[] { d2, t2 }); Assert.AreEqual(d2, (double)dictArg16.Key); Assert.AreEqual(t2, (UInt64)dictArg16.Value); MsgArg dictArg17 = new MsgArg("{ds}", new object[] { d1, s1 }); Assert.AreEqual(d1, (double)dictArg17.Key); Assert.AreEqual(s1, (string)dictArg17.Value); MsgArg dictArg18 = new MsgArg("{sd}", new object[] { s2, d2 }); Assert.AreEqual(s2, (string)dictArg18.Key); Assert.AreEqual(d2, (double)dictArg18.Value); TestStruct ts = new TestStruct(); ts.i = i1; ts.s = s1; MsgArg sArg = new MsgArg("(is)", new object[] { ts.i, ts.s }); object[] ar = (object[])sArg.Value; Assert.AreEqual(ts.i, ar[0]); Assert.AreEqual(ts.s, ar[1]); TestStruct ts2 = new TestStruct() { i = (int)ar[0], s = (string)ar[1] }; Assert.AreEqual(ts, ts2); SimpleStruct1 struct1 = new SimpleStruct1(6566566, "simplestruct", true, 167); MsgArg structArg1 = new MsgArg("(isby)", new object[] { struct1.i, struct1.s, struct1.b, struct1.y }); object[] ar1 = (object[])structArg1.Value; Assert.AreEqual(struct1.i, ar1[0]); Assert.AreEqual(struct1.s, ar1[1]); Assert.AreEqual(struct1.b, ar1[2]); Assert.AreEqual(struct1.y, ar1[3]); SimpleStruct2 struct2 = new SimpleStruct2(2345.3344, -789342, 7832487934, 134); MsgArg structArg2 = new MsgArg("(dxtn)", new object[] { struct2.d, struct2.x, struct2.t, struct2.n }); object[] ar2 = (object[])structArg2.Value; Assert.AreEqual(struct2.d, ar2[0]); Assert.AreEqual(struct2.x, ar2[1]); Assert.AreEqual(struct2.t, ar2[2]); Assert.AreEqual(struct2.n, ar2[3]); SimpleStruct3 struct3 = new SimpleStruct3(255, false, 838954, 66.36566); MsgArg structArg3 = new MsgArg("(qbud)", new object[] { struct3.q, struct3.b, struct3.u, struct3.d }); object[] ar3 = (object[])structArg3.Value; Assert.AreEqual(struct3.q, ar3[0]); Assert.AreEqual(struct3.b, ar3[1]); Assert.AreEqual(struct3.u, ar3[2]); Assert.AreEqual(struct3.d, ar3[3]); }
public bool Equals(SimpleStruct3 other) { return((q == other.q) && (b == other.b) && (u == other.u) && (d == other.d)); }