public void Int16Test() { short clr = short.MaxValue / 2; var v = IshtarMarshal.ToIshtarObject(clr); var r = IshtarMarshal.ToDotnetInt16(v, null); Assert.AreEqual(clr, r); }
public void StringTest() { var clr = "long.MaxValue / 2"; var v = IshtarMarshal.ToIshtarObject(clr); var r = IshtarMarshal.ToDotnetString(v, null); Assert.AreEqual(clr, r); }
public void Int64Test() { long clr = long.MaxValue / 2; var v = IshtarMarshal.ToIshtarObject(clr); var r = IshtarMarshal.ToDotnetInt64(v, null); Assert.AreEqual(clr, r); }
public void Int32Test() { int clr = int.MaxValue / 2; var v = IshtarMarshal.ToIshtarObject(clr); var r = IshtarMarshal.ToDotnetInt32(v, null); Assert.AreEqual(clr, r); }
public unsafe void LDSTR_Test() { var targetStr = "the string"; using var ctx = CreateContext(); var result = ctx.Execute((gen, _) => { gen.Emit(OpCodes.LDC_STR, targetStr); gen.Emit(OpCodes.RET); }); Validate(); Assert.AreEqual(VeinTypeCode.TYPE_STRING, (*result.returnValue).type); var obj = (IshtarObject *)result.returnValue->data.p; Assert.AreEqual(targetStr, IshtarMarshal.ToDotnetString(obj, null)); }
public unsafe void CorrectAllocateArray() { if (VM.watcher is DefaultWatchDog) { VM.watcher = new TestWatchDog(); } var array = IshtarGC.AllocArray(VeinTypeCode.TYPE_I4.AsRuntimeClass(), 10, 1); Assert.AreEqual(10UL, array->length); Assert.AreEqual(1UL, array->rank); foreach (var i in..10) { array->Set((uint)i, IshtarMarshal.ToIshtarObject(88 * i)); } foreach (var i in..10) { var obj = array->Get((uint)i); Assert.AreEqual(i * 88, IshtarMarshal.ToDotnetInt32(obj, null)); } }
public void StringFormatWithArray() { using var ctx = CreateContext(); var result = ctx.Execute((x, _) => { x.Emit(OpCodes.LDC_STR, "{0} and {1}"); x.Emit(OpCodes.LDC_STR, "foo"); x.Emit(OpCodes.LDC_STR, "bar"); x.Emit(OpCodes.CALL, VeinCore.StringClass.FindMethod("format", new [] { VeinCore.StringClass, /* template */ VeinCore.ObjectClass, /* o1 */ VeinCore.ObjectClass /* o2 */ })); x.Emit(OpCodes.RET); }); Assert.AreEqual(VeinTypeCode.TYPE_STRING, result.returnValue->type); var str = IshtarMarshal.ToDotnetString((IshtarObject *)result.returnValue->data.p, result); Assert.AreEqual("foo and bar", str); }
public unsafe void CorrectAllocateString() { var result = IshtarMarshal.ToIshtarObject("foo"); IshtarGC.FreeObject(&result, new CallFrame()); }