public void PerformanceTest() { AdvancedComparerStruct <Xtensive.Tuples.Tuple> comparer = AdvancedComparerStruct <Xtensive.Tuples.Tuple> .Default; Xtensive.Tuples.Tuple t = Xtensive.Tuples.Tuple.Create(1, 2); Xtensive.Tuples.Tuple ct = t.ToRegular(); Xtensive.Tuples.Tuple wt = t.ToReadOnly(TupleTransformType.TransformedTuple); Xtensive.Tuples.Tuple wtc = t.ToReadOnly(TupleTransformType.TransformedTuple); int count = IterationCount; comparer.Equals(t, ct); comparer.Equals(t, wt); comparer.Equals(wt, wtc); TestHelper.CollectGarbage(); using (new Measurement("O&O", MeasurementOptions.Log, count)) for (int i = 0; i < count; i++) { comparer.Equals(t, ct); } TestHelper.CollectGarbage(); using (new Measurement("O&W", MeasurementOptions.Log, count)) for (int i = 0; i < count; i++) { comparer.Equals(t, wt); } TestHelper.CollectGarbage(); using (new Measurement("W&W", MeasurementOptions.Log, count)) for (int i = 0; i < count; i++) { comparer.Equals(wt, wtc); } }
public void BaseTest() { Xtensive.Tuples.Tuple t = Xtensive.Tuples.Tuple.Create(1, "2", 3); TestLog.Info("Original: {0}", t); Xtensive.Tuples.Tuple rt = t.ToReadOnly(TupleTransformType.TransformedTuple); TestLog.Info("Wrapper: {0}", rt); Assert.AreEqual(t, rt); t.SetValue(0, 2); Assert.AreEqual(t, rt); t.SetValue(0, 1); AssertEx.Throws <NotSupportedException>(delegate { rt.SetValue(0, 2); }); Xtensive.Tuples.Tuple ct = t.ToReadOnly(TupleTransformType.Tuple); TestLog.Info("Copy: {0}", ct); Assert.AreEqual(t, ct); t.SetValue(0, 2); Assert.AreNotEqual(t, ct); t.SetValue(0, 1); AssertEx.Throws <NotSupportedException>(delegate { ct.SetValue(0, 2); }); }