Skip to content

Commit 06fbf13

Browse files
committed
Tests for custom value types
+ minor changes of test enitites
1 parent dfa3d02 commit 06fbf13

File tree

1 file changed

+88
-0
lines changed

1 file changed

+88
-0
lines changed

Orm/Xtensive.Orm.Tests/Linq/CompiledQueriesClosureCachingTest.cs

Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,11 @@ public class AllTypesNeverCreatedEntity : Entity
121121

122122
[Field]
123123
public TimeSpan? FNTimeSpan { get; set; }
124+
125+
public AllTypesNeverCreatedEntity(Session session)
126+
: base(session)
127+
{
128+
}
124129
}
125130

126131
[Serializable]
@@ -135,6 +140,11 @@ public class DateTimeOffsetNeverCreatedEntity : Entity
135140

136141
[Field]
137142
public DateTimeOffset? FNDateTimeOffset { get; set; }
143+
144+
public DateTimeOffsetNeverCreatedEntity(Session session)
145+
: base(session)
146+
{
147+
}
138148
}
139149

140150
[Serializable]
@@ -149,6 +159,39 @@ public class PgSqlTypesNeverCreatedEntity : Entity
149159

150160
[Field]
151161
public NpgsqlTypes.NpgsqlPoint? FNPoint { get; set; }
162+
163+
public PgSqlTypesNeverCreatedEntity(Session session)
164+
: base(session)
165+
{
166+
}
167+
}
168+
169+
public struct PropsStruct
170+
{
171+
public int IntField { get; set; }
172+
173+
public long LongField { get; set; }
174+
}
175+
176+
public struct PropsWrongStruct
177+
{
178+
public int IntField { get; set; }
179+
180+
public Tuple<int> TupleField { get; set; }
181+
}
182+
183+
public struct FieldsStruct
184+
{
185+
public int IntField;
186+
187+
public long LongField;
188+
}
189+
190+
public struct FieldsWrongStruct
191+
{
192+
public int IntField;
193+
194+
public Tuple<int> TupleField;
152195
}
153196
}
154197

@@ -805,6 +848,38 @@ public async Task ValueTupleTestAsync()
805848
Assert.That(Domain.QueryCache.Count, Is.EqualTo(countBefore + 1));
806849
}
807850

851+
[Test]
852+
public void CustomStructTest()
853+
{
854+
var countBefore = Domain.QueryCache.Count;
855+
856+
using var session = Domain.OpenSession();
857+
using var tx = session.OpenTransaction();
858+
Query(session, new PropsStruct() { IntField = 10, LongField = 100 });
859+
860+
Assert.That(Domain.QueryCache.Count, Is.EqualTo(countBefore + 1));
861+
862+
Query(session, new FieldsStruct() { IntField = 10, LongField = 100 });
863+
864+
Assert.That(Domain.QueryCache.Count, Is.EqualTo(countBefore + 2));
865+
}
866+
867+
[Test]
868+
public async Task CustomStructTestAsync()
869+
{
870+
var countBefore = Domain.QueryCache.Count;
871+
872+
await using var session = await Domain.OpenSessionAsync();
873+
await using var tx = await session.OpenTransactionAsync();
874+
await QueryAsync(session, new PropsStruct() { IntField = 10, LongField = 100 });
875+
876+
Assert.That(Domain.QueryCache.Count, Is.EqualTo(countBefore + 1));
877+
878+
await QueryAsync(session, new FieldsStruct() { IntField = 10, LongField = 100 });
879+
880+
Assert.That(Domain.QueryCache.Count, Is.EqualTo(countBefore + 2));
881+
}
882+
808883
#region General types
809884

810885
private void Query(Session session, bool value) =>
@@ -1039,6 +1114,19 @@ private void Query(Session session, NpgsqlTypes.NpgsqlPoint? value) =>
10391114
private async Task QueryAsync(Session session, NpgsqlTypes.NpgsqlPoint? value) =>
10401115
_ = await session.Query.ExecuteAsync(q => q.All<PgSqlTypesNeverCreatedEntity>().Where(e => e.FNPoint == value));
10411116

1117+
1118+
private void Query(Session session, PropsStruct value) =>
1119+
_ = session.Query.Execute(q => q.All<AllTypesNeverCreatedEntity>().Where(e => e.FInt == value.IntField || e.FLong == value.LongField));
1120+
1121+
private async Task QueryAsync(Session session, PropsStruct value) =>
1122+
_ = await session.Query.ExecuteAsync(q => q.All<AllTypesNeverCreatedEntity>().Where(e => e.FInt == value.IntField || e.FLong == value.LongField));
1123+
1124+
private void Query(Session session, FieldsStruct value) =>
1125+
_ = session.Query.Execute(q => q.All<AllTypesNeverCreatedEntity>().Where(e => e.FInt == value.IntField || e.FLong == value.LongField));
1126+
1127+
private async Task QueryAsync(Session session, FieldsStruct value) =>
1128+
_ = await session.Query.ExecuteAsync(q => q.All<AllTypesNeverCreatedEntity>().Where(e => e.FInt == value.IntField || e.FLong == value.LongField));
1129+
10421130
#endregion
10431131
}
10441132
}

0 commit comments

Comments
 (0)