Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions ChangeLog/6.0.13_dev.txt
Original file line number Diff line number Diff line change
@@ -1,2 +1,4 @@
[main] Fixed certain cases of bad translation of casts via 'as' operator in LINQ queries
[main] Addressed certain issues of translation connected with comparison with local entity instace within LINQ queries
[main] Fixed rare issues of incorrect translation of filtered index expressions including conditional expressions
[postgresql] Fixed issue of incorrect translation of contitional expressions including comparison with nullable fields
Original file line number Diff line number Diff line change
@@ -0,0 +1,123 @@
using System;
using System.Collections.Generic;
using System.Text;
using NUnit.Framework;
using NUnit.Framework.Interfaces;

namespace Xtensive.Orm.Tests
{
/// <summary>
/// Base attribute for test storage requirement
/// </summary>
public abstract class RequireProvderAttribute : Attribute, ITestAction
{
private Version minVersion = null;
private Version maxVersion = null;

/// <summary>
/// Gets or sets Minimal version that required for test.
/// If not set, version check is not applied
/// </summary>
public virtual string MinVersion
{
get { return (minVersion == null) ? null : minVersion.ToString(); }
set {
if (value == null)
minVersion = null;
else if (!Version.TryParse(value, out minVersion))
throw new ArgumentException("Not a version string", nameof(value));
}
}

/// <summary>
/// Gets or sets Maximal version that required for test.
/// If not set, version check is not applied.
/// </summary>
public virtual string MaxVersion
{
get { return (maxVersion == null) ? null : maxVersion.ToString(); }
set {
if (value == null)
maxVersion = null;
else if (!Version.TryParse(value, out maxVersion))
throw new ArgumentException("Not a version string", nameof(value));
}
}

protected abstract StorageProvider RequiredProviders { get; }

public ActionTargets Targets => ActionTargets.Test;

public void AfterTest(ITest test)
{
Require.ProviderIs(RequiredProviders);
if (minVersion != null)
Require.ProviderVersionAtLeast(minVersion);
if (maxVersion != null)
Require.ProviderVersionAtMost(maxVersion);
}

public void BeforeTest(ITest test) { }
}

[AttributeUsage(AttributeTargets.Method)]
public class RequireSqlServerAttribute : RequireProvderAttribute
{
protected override StorageProvider RequiredProviders => StorageProvider.SqlServer;
}

[AttributeUsage(AttributeTargets.Method)]
public class RequirePostgreSqlAttribute : RequireProvderAttribute
{
protected override StorageProvider RequiredProviders => StorageProvider.PostgreSql;
}

[AttributeUsage(AttributeTargets.Method)]
public class RequireMySqlAttribute : RequireProvderAttribute
{
protected override StorageProvider RequiredProviders => StorageProvider.MySql;
}

[AttributeUsage(AttributeTargets.Method)]
public class RequireFirebirdAttribute : RequireProvderAttribute
{
protected override StorageProvider RequiredProviders => StorageProvider.Firebird;
}

[AttributeUsage(AttributeTargets.Method)]
public class RequireOracleSqlAttribute : RequireProvderAttribute
{
protected override StorageProvider RequiredProviders => StorageProvider.Oracle;
}

[AttributeUsage(AttributeTargets.Method)]
public class RequireSqliteAttribute : RequireProvderAttribute
{
protected override StorageProvider RequiredProviders => StorageProvider.Sqlite;
}

[AttributeUsage(AttributeTargets.Method)]
public class RequireSeveralProvidersAttribute : RequireProvderAttribute
{
private readonly StorageProvider providers;

protected override StorageProvider RequiredProviders => providers;

public override string MinVersion
{
get => throw new NotSupportedException();
set => throw new NotSupportedException();
}

public override string MaxVersion
{
get => throw new NotSupportedException();
set => throw new NotSupportedException();
}

public RequireSeveralProvidersAttribute(StorageProvider allowedProviders)
{
providers = allowedProviders;
}
}
}
Loading