public void VirtualFuncOfStruct() { Redirect.ValueTypeCounter c1 = new Redirect.ValueTypeCounter(); c1.Inc(); c1.Inc(); Assert.AreEqual("ValueTypeCounter { 2 }", c1.ToString()); Assert.AreEqual(c1.ToString() + ",hashcode:" + c1.GetHashCode(), Redirect.BaseTest.VirtualFuncOfStruct(c1)); }
public void UnboxBase() { Redirect.ValueTypeCounter c1 = new Redirect.ValueTypeCounter(); Redirect.ValueTypeCounter c2 = new Redirect.ValueTypeCounter(); c1.Inc(); Assert.AreEqual(1, c1.CompareTo(c2)); c2.Inc(); Assert.AreEqual(0, c1.CompareTo(c2)); c2.Inc(); Assert.AreEqual(-1, c1.CompareTo(c2)); Assert.That(() => c1.CompareTo(1), Throws.ArgumentException); }
public static void PassByValue(ref ValueTypeCounter c1, RefTypeCounter c2) { c1.Inc(); c2.Inc(); CallInc(c1); CallInc(c2); }
public void StructBase() { Redirect.ValueTypeCounter vtc = new Redirect.ValueTypeCounter(); int c = vtc.Val; vtc.Inc(); Assert.AreEqual(vtc.Val, c + 1); }
public static int Initobj(int a) { ValueTypeCounter c1 = new ValueTypeCounter(); c1.Inc(); ValueTypeCounter c2 = new ValueTypeCounter(a); ValueTypeCounterContainer cc = new ValueTypeCounterContainer(); cc.Init(a); return(c1.Val + c2.Val + cc.c.Val); }
public void Ldflda() { Redirect.ValueTypeCounter c = new Redirect.ValueTypeCounter(); Redirect.BaseTest.Ldflda(ref c); Assert.AreEqual(10, c.Val); Redirect.BaseTest.Ldflda(ref c); c.Inc(); Assert.AreEqual(21, c.Val); c = new Redirect.ValueTypeCounter(); Redirect.ValueTypeCounterContainer cc = new Redirect.ValueTypeCounterContainer(); cc.c = c; Redirect.BaseTest.Ldflda(ref cc); Assert.AreEqual(10, cc.c.i); Redirect.BaseTest.Ldflda(ref cc); cc.c.Inc(); Assert.AreEqual(21, cc.c.Val); Redirect.W1 w1 = new Redirect.W1() { F = new Redirect.ValueTypeCounter() }; Redirect.W2 w2 = new Redirect.W2() { F = w1 }; Redirect.W3 w3 = new Redirect.W3() { F = w2 }; Redirect.BaseTest.Ldflda(ref w1); Assert.AreEqual(10, w1.F.i); Redirect.BaseTest.Ldflda(ref w2); Assert.AreEqual(10, w2.F.F.i); Redirect.BaseTest.Ldflda(ref w3); Assert.AreEqual(10, w3.F.F.F.i); Assert.AreEqual(10, Redirect.BaseTest.Ldflda_m(ref w3)); }
static void CallInc(ValueTypeCounter counter) { counter.Inc(); }