-
Notifications
You must be signed in to change notification settings - Fork 27
Expand file tree
/
Copy pathCutInTransformTest.cs
More file actions
109 lines (94 loc) · 4.67 KB
/
CutInTransformTest.cs
File metadata and controls
109 lines (94 loc) · 4.67 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
// Copyright (C) 2003-2010 Xtensive LLC.
// All rights reserved.
// For conditions of distribution and use, see license.
// Created by: Elena Vakhtina
// Created: 2008.06.23
using System;
using NUnit.Framework;
using Xtensive.Comparison;
using Xtensive.Tuples;
using Xtensive.Orm.Tests;
using Xtensive.Tuples.Transform;
using Tuple = Xtensive.Tuples.Tuple;
namespace Xtensive.Orm.Tests.Core.Tuples.Transform
{
[TestFixture]
public class CutInTransformTest
{
public const int IterationCount = 1000000;
public static Xtensive.Tuples.Tuple t1 = Xtensive.Tuples.Tuple.Create(3, 4.0, "5");
public static Xtensive.Tuples.Tuple t2 = Xtensive.Tuples.Tuple.Create(1, "2");
public const int CutInIndex = 1;
public const string value = "qwe";
[Test]
public void BaseTest()
{
TestLog.InfoRegion("CutInTransform test");
TestLog.Info($"Originals: {t1}, {t2}, index {CutInIndex}");
CutInTransform ct = new CutInTransform(false, CutInIndex, t1.Descriptor, t2.Descriptor);
CutInTransform ctro = new CutInTransform(true, CutInIndex, t1.Descriptor, t2.Descriptor);
Xtensive.Tuples.Tuple wt1 = ct.Apply(TupleTransformType.TransformedTuple, t1, t2);
TestLog.Info($"Wrapper: {wt1}");
Xtensive.Tuples.Tuple ct1 = ct.Apply(TupleTransformType.Tuple, t1, t2);
TestLog.Info($"Copy: {ct1}");
Xtensive.Tuples.Tuple wt2 = ctro.Apply(TupleTransformType.TransformedTuple, t1, t2);
Xtensive.Tuples.Tuple ct2 = ctro.Apply(TupleTransformType.Tuple, t1, t2);
Assert.That(wt2, Is.EqualTo(wt1));
Assert.That(ct1, Is.EqualTo(wt2));
Assert.That(ct2, Is.EqualTo(ct1));
TestLog.InfoRegion("CutInTransform<T> test");
TestLog.Info($"Originals: {t1}, {value}, index {CutInIndex}");
CutInTransform<string> ctt = new CutInTransform<string>(false, CutInIndex, t1.Descriptor);
CutInTransform<string> cttro = new CutInTransform<string>(true, CutInIndex, t1.Descriptor);
Xtensive.Tuples.Tuple wtt1 = ctt.Apply(TupleTransformType.TransformedTuple, t1, value);
TestLog.Info($"Wrapper: {wtt1}");
Xtensive.Tuples.Tuple ctt1 = ctt.Apply(TupleTransformType.Tuple, t1, value);
TestLog.Info($"Copy: {ctt1}");
Xtensive.Tuples.Tuple wtt2 = cttro.Apply(TupleTransformType.TransformedTuple, t1, value);
Xtensive.Tuples.Tuple ctt2 = cttro.Apply(TupleTransformType.Tuple, t1, value);
Assert.That(wtt2, Is.EqualTo(wtt1));
Assert.That(ctt1, Is.EqualTo(wtt2));
Assert.That(ctt2, Is.EqualTo(ctt1));
}
[Test]
[Explicit]
[Category("Performance")]
public void PerformanceTest()
{
TestLog.InfoRegion("CutInTransform test");
CutInTransform mt = new CutInTransform(false, CutInIndex, t1.Descriptor, t1.Descriptor);
Xtensive.Tuples.Tuple wt1 = mt.Apply(TupleTransformType.TransformedTuple, t1, t1);
Xtensive.Tuples.Tuple wt2 = mt.Apply(TupleTransformType.TransformedTuple, t1, t1);
Xtensive.Tuples.Tuple ct1 = mt.Apply(TupleTransformType.Tuple, t1, t1);
Xtensive.Tuples.Tuple ct2 = mt.Apply(TupleTransformType.Tuple, t1, t1);
PerformanceTransformTesting(ct1, ct2, wt1, wt2);
TestLog.InfoRegion("CutInTransform<T> test");
CutInTransform<string> mtt = new CutInTransform<string>(false, CutInIndex, t1.Descriptor);
Xtensive.Tuples.Tuple wtt1 = mtt.Apply(TupleTransformType.TransformedTuple, t1, value);
Xtensive.Tuples.Tuple wtt2 = mtt.Apply(TupleTransformType.TransformedTuple, t1, value);
Xtensive.Tuples.Tuple ctt1 = mtt.Apply(TupleTransformType.Tuple, t1, value);
Xtensive.Tuples.Tuple ctt2 = mtt.Apply(TupleTransformType.Tuple, t1, value);
PerformanceTransformTesting(ctt1, ctt2, wtt1, wtt2);
}
public void PerformanceTransformTesting(Xtensive.Tuples.Tuple tuple1, Xtensive.Tuples.Tuple tuple2, Xtensive.Tuples.Tuple tuple3, Xtensive.Tuples.Tuple tuple4)
{
int count = IterationCount;
AdvancedComparerStruct<Xtensive.Tuples.Tuple> comparer = AdvancedComparerStruct<Xtensive.Tuples.Tuple>.Default;
comparer.Equals(tuple1, tuple2);
comparer.Equals(tuple1, tuple3);
comparer.Equals(tuple3, tuple4);
TestHelper.CollectGarbage();
using (new Measurement("O&O", MeasurementOptions.Log, count))
for (int i = 0; i < count; i++)
comparer.Equals(tuple1, tuple2);
TestHelper.CollectGarbage();
using (new Measurement("O&W", MeasurementOptions.Log, count))
for (int i = 0; i < count; i++)
comparer.Equals(tuple1, tuple3);
TestHelper.CollectGarbage();
using (new Measurement("W&W", MeasurementOptions.Log, count))
for (int i = 0; i < count; i++)
comparer.Equals(tuple3, tuple4);
}
}
}