public void StringTest() { var clr = "long.MaxValue / 2"; var v = IshtarMarshal.ToIshtarObject(clr); var r = IshtarMarshal.ToDotnetString(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 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); }