Skip to content

Commit 30f1aeb

Browse files
committed
IssueJira0761: more cases added
1 parent 7b98f8e commit 30f1aeb

1 file changed

Lines changed: 193 additions & 6 deletions

File tree

Orm/Xtensive.Orm.Tests/Issues/IssueJira0761_ReadingAverageByDecimalField.cs

Lines changed: 193 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,129 @@
1-
// Copyright (C) 2019-2020 Xtensive LLC.
1+
// Copyright (C) 2019-2024 Xtensive LLC.
22
// This code is distributed under MIT license terms.
33
// See the License.txt file in the project root for more information.
44
// Created by: Alexey Kulakov
55
// Created: 2019.02.14
66

7-
using System;
8-
using System.Data.SqlTypes;
97
using System.Linq;
108
using NUnit.Framework;
119
using Xtensive.Orm.Configuration;
1210
using Xtensive.Orm.Tests.Issues.IssueJira0761_ReadingAverageByDecimalFieldModel;
13-
using Xtensive.Sql.Drivers.SqlServer;
1411

1512
namespace Xtensive.Orm.Tests.Issues.IssueJira0761_ReadingAverageByDecimalFieldModel
1613
{
14+
[HierarchyRoot]
15+
public class DecimalValueStructureEntityByRefCase : Entity
16+
{
17+
[Field, Key]
18+
public int Id { get; private set; }
19+
20+
[Field]
21+
public DecimalValueStructureCase Ref { get; set; }
22+
23+
public DecimalValueStructureEntityByRefCase(Session session)
24+
: base(session)
25+
{
26+
}
27+
}
28+
29+
public class DecimalValueStructure : Structure
30+
{
31+
[Field(Precision = 19, Scale = 5)]
32+
public decimal Value { get; set; }
33+
34+
[Field]
35+
public int Code { get; set; }
36+
37+
public DecimalValueStructure(Session session)
38+
: base(session)
39+
{
40+
}
41+
}
42+
43+
[HierarchyRoot]
44+
public class DecimalValueStructureCase : Entity
45+
{
46+
[Field, Key]
47+
public int Id { get; private set; }
48+
49+
[Field]
50+
public DecimalValueStructure Struct { get; set; }
51+
52+
[Field(Precision = 19, Scale = 5)]
53+
public decimal AdditionalValue { get; set; }
54+
55+
public DecimalValueStructureCase(Session session)
56+
: base(session)
57+
{
58+
}
59+
}
60+
61+
[HierarchyRoot]
62+
public class KeyValueByEntityRefCase : Entity
63+
{
64+
[Field, Key]
65+
public int Id { get; private set; }
66+
67+
[Field]
68+
public KeyExpressionCase Ref { get; set; }
69+
70+
public KeyValueByEntityRefCase(Session session)
71+
: base(session)
72+
{
73+
}
74+
}
75+
76+
[HierarchyRoot]
77+
public class KeyExpressionCase : Entity
78+
{
79+
[Field(Precision = 19, Scale = 5), Key]
80+
public decimal Id { get; private set; }
81+
82+
[Field]
83+
public int SomeValue { get; set; }
84+
85+
[Field(Precision = 19, Scale = 5)]
86+
public decimal AdditionalValue { get; set; }
87+
88+
public KeyExpressionCase(Session session, decimal id)
89+
: base(session, id)
90+
{
91+
}
92+
}
93+
94+
[HierarchyRoot]
95+
public class ValueByEntityRefCase : Entity
96+
{
97+
[Field, Key]
98+
public int Id { get; private set; }
99+
100+
[Field]
101+
public DirectFieldValueCase Ref { get; set; }
102+
103+
public ValueByEntityRefCase(Session session)
104+
: base(session)
105+
{
106+
}
107+
}
108+
109+
[HierarchyRoot]
110+
public class DirectFieldValueCase : Entity
111+
{
112+
[Field, Key]
113+
public int Id { get; private set; }
114+
115+
[Field(Precision = 19, Scale = 5)]
116+
public decimal Accepted { get; set; }
117+
118+
[Field(Precision = 19, Scale = 5)]
119+
public decimal AdditionalValue { get; set; }
120+
121+
public DirectFieldValueCase(Session session)
122+
: base(session)
123+
{
124+
}
125+
}
126+
17127
[HierarchyRoot]
18128
public class Order : Entity
19129
{
@@ -91,12 +201,33 @@ protected override void PopulateData()
91201
};
92202
}
93203

204+
foreach (var i in Enumerable.Range(1, 1000)) {
205+
_ = new ValueByEntityRefCase(session) {
206+
Ref = new DirectFieldValueCase(session) {
207+
Accepted = 163767
208+
}
209+
};
210+
211+
_ = new KeyValueByEntityRefCase(session) {
212+
Ref = new KeyExpressionCase(session, 163767 + i)
213+
};
214+
215+
_ = new DecimalValueStructureEntityByRefCase(session) {
216+
Ref = new DecimalValueStructureCase(session) {
217+
Struct = new DecimalValueStructure(session) {
218+
Value = 163767,
219+
Code = i
220+
}
221+
}
222+
};
223+
}
224+
94225
tx.Complete();
95226
}
96227
}
97228

98229
[Test]
99-
public void AverageTest()
230+
public void AverageComplexTest()
100231
{
101232
using (var session = Domain.OpenSession())
102233
using (var tx = session.OpenTransaction()) {
@@ -143,7 +274,7 @@ public void AverageTest()
143274
}
144275

145276
[Test]
146-
public void SumTest()
277+
public void SumComplexTest()
147278
{
148279
using (var session = Domain.OpenSession())
149280
using (var tx = session.OpenTransaction()) {
@@ -188,5 +319,61 @@ public void SumTest()
188319
Assert.That(queryResult, Is.EqualTo(localResult));
189320
}
190321
}
322+
323+
[Test]
324+
public void DirectFieldValueCase()
325+
{
326+
using (var session = Domain.OpenSession())
327+
using (var tx = session.OpenTransaction()) {
328+
var results = session.Query.All<DirectFieldValueCase>().Sum(a => a.Accepted);
329+
results = session.Query.All<DirectFieldValueCase>().Sum(a => a.Accepted + a.AdditionalValue);
330+
results = session.Query.All<DirectFieldValueCase>().Sum(a => a.Accepted + 1m);
331+
}
332+
}
333+
334+
[Test]
335+
public void ValueByEntityRefCase()
336+
{
337+
using (var session = Domain.OpenSession())
338+
using (var tx = session.OpenTransaction()) {
339+
var results = session.Query.All<ValueByEntityRefCase>().Sum(a => a.Ref.Accepted);
340+
}
341+
}
342+
343+
[Test]
344+
public void KeyExpressionCase()
345+
{
346+
using (var session = Domain.OpenSession())
347+
using (var tx = session.OpenTransaction()) {
348+
var results = session.Query.All<KeyExpressionCase>().Sum(a => a.Id);
349+
}
350+
}
351+
352+
[Test]
353+
public void KeyValueByEntityRefCase()
354+
{
355+
using (var session = Domain.OpenSession())
356+
using (var tx = session.OpenTransaction()) {
357+
var results = session.Query.All<KeyValueByEntityRefCase>().Sum(a => a.Ref.Id);
358+
}
359+
}
360+
361+
[Test]
362+
public void DecimalValueStructureCase()
363+
{
364+
using (var session = Domain.OpenSession())
365+
using (var tx = session.OpenTransaction()) {
366+
var results = session.Query.All<DecimalValueStructureCase>().Sum(a => a.Struct.Value);
367+
}
368+
}
369+
370+
[Test]
371+
public void DecimalValueStructureEntityByRefCase()
372+
{
373+
using (var session = Domain.OpenSession())
374+
using (var tx = session.OpenTransaction()) {
375+
var results = session.Query.All<DecimalValueStructureEntityByRefCase>().Sum(a => a.Ref.Struct.Value);
376+
}
377+
}
191378
}
192379
}

0 commit comments

Comments
 (0)