|
1 | | -// Copyright (C) 2003-2010 Xtensive LLC. |
2 | | -// All rights reserved. |
3 | | -// For conditions of distribution and use, see license. |
| 1 | +// Copyright (C) 2009-2021 Xtensive LLC. |
| 2 | +// This code is distributed under MIT license terms. |
| 3 | +// See the License.txt file in the project root for more information. |
4 | 4 | // Created by: Alexis Kochetov |
5 | 5 | // Created: 2009.02.04 |
6 | 6 |
|
| 7 | +using System; |
7 | 8 | using System.Linq; |
8 | 9 | using NUnit.Framework; |
9 | 10 | using Xtensive.Orm.Providers; |
@@ -38,7 +39,22 @@ public void OrderBy2Test() |
38 | 39 | .Select(c => c.Address.City) |
39 | 40 | .Distinct() |
40 | 41 | .OrderBy(c => c); |
41 | | - Assert.IsTrue(expected.SequenceEqual(result)); |
| 42 | + if (StorageProviderInfo.Instance.CheckProviderIs(StorageProvider.Firebird | StorageProvider.Sqlite)) { |
| 43 | + var storage = result.AsEnumerable().Where(c => !c.StartsWith('S')); |
| 44 | + var local = expected.Where(c => !c.StartsWith('S')); |
| 45 | + Assert.IsTrue(local.SequenceEqual(storage)); |
| 46 | + var storageHashset = result.AsEnumerable().Where(c => c.StartsWith('S')).ToHashSet(); |
| 47 | + local = expected.Where(c => c.StartsWith('S')); |
| 48 | + var count = 0; |
| 49 | + foreach (var item in local) { |
| 50 | + Assert.That(storageHashset.Contains(item)); |
| 51 | + count++; |
| 52 | + } |
| 53 | + Assert.That(storageHashset.Count, Is.EqualTo(count)); |
| 54 | + } |
| 55 | + else { |
| 56 | + Assert.IsTrue(expected.SequenceEqual(result)); |
| 57 | + } |
42 | 58 | QueryDumper.Dump(result); |
43 | 59 | } |
44 | 60 |
|
@@ -95,7 +111,23 @@ public void DistinctOrderByTest() |
95 | 111 | .Select(c => c.Address.City) |
96 | 112 | .Distinct() |
97 | 113 | .OrderBy(c => c); |
98 | | - Assert.IsTrue(expected.SequenceEqual(result)); |
| 114 | + |
| 115 | + if (StorageProviderInfo.Instance.CheckProviderIs(StorageProvider.Firebird | StorageProvider.Sqlite)) { |
| 116 | + var storage = result.AsEnumerable().Where(c => !c.StartsWith('S')); |
| 117 | + var local = expected.Where(c => !c.StartsWith('S')); |
| 118 | + Assert.IsTrue(local.SequenceEqual(storage)); |
| 119 | + var storageHashset = result.AsEnumerable().Where(c => c.StartsWith('S')).ToHashSet(); |
| 120 | + local = expected.Where(c => c.StartsWith('S')); |
| 121 | + var count = 0; |
| 122 | + foreach (var item in local) { |
| 123 | + Assert.That(storageHashset.Contains(item)); |
| 124 | + count++; |
| 125 | + } |
| 126 | + Assert.That(storageHashset.Count, Is.EqualTo(count)); |
| 127 | + } |
| 128 | + else { |
| 129 | + Assert.IsTrue(expected.SequenceEqual(result)); |
| 130 | + } |
99 | 131 | QueryDumper.Dump(result); |
100 | 132 | } |
101 | 133 |
|
@@ -316,6 +348,7 @@ public void DistinctSkipTest() |
316 | 348 | .Distinct() |
317 | 349 | .OrderBy(c => c.LastName) |
318 | 350 | .Skip(5); |
| 351 | + |
319 | 352 | Assert.IsTrue(expected.SequenceEqual(result)); |
320 | 353 | Assert.Greater(result.ToList().Count, 0); |
321 | 354 | } |
|
0 commit comments