// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license information. namespace System.Data.Entity.Infrastructure { using Xunit; public class ExecutionStrategyKeyTests { [Fact] public void Constructor_throws_on_invalid_parameters() { Assert.Throws(() => new ExecutionStrategyKey(null, "")) .ValidateMessage("ArgumentIsNullOrWhitespace", "invariantProviderName"); Assert.Throws(() => new ExecutionStrategyKey("", "b")) .ValidateMessage("ArgumentIsNullOrWhitespace", "invariantProviderName"); Assert.Throws(() => new ExecutionStrategyKey("a", null)) .ValidateMessage("ArgumentIsNullOrWhitespace", "dataSource"); Assert.Throws(() => new ExecutionStrategyKey("a", "")) .ValidateMessage("ArgumentIsNullOrWhitespace", "dataSource"); } [Fact] public void Equals_returns_correct_results() { TestEquals( (left, right) => left.Equals(right)); } private void TestEquals(Func equals) { var sameInstace = new ExecutionStrategyKey("a", "b"); Assert.True( equals( sameInstace, sameInstace)); Assert.True( equals( new ExecutionStrategyKey("a", "b"), new ExecutionStrategyKey("a", "b"))); Assert.False( equals( new ExecutionStrategyKey("a", "b1"), new ExecutionStrategyKey("a", "b2"))); Assert.False( equals( new ExecutionStrategyKey("a1", "b"), new ExecutionStrategyKey("a2", "b"))); Assert.False( equals( new ExecutionStrategyKey("a", "b"), null)); } [Fact] public void GetHashCode_returns_correct_results() { Assert.Equal( new ExecutionStrategyKey("a", "b").GetHashCode(), new ExecutionStrategyKey("a", "b").GetHashCode()); Assert.NotEqual( new ExecutionStrategyKey("a1", "b").GetHashCode(), new ExecutionStrategyKey("a2", "b").GetHashCode()); Assert.NotEqual( new ExecutionStrategyKey("a", "b1").GetHashCode(), new ExecutionStrategyKey("a", "b2").GetHashCode()); } } }