|
4 | 4 |
|
5 | 5 | using System;
|
6 | 6 | using System.Collections.Generic;
|
| 7 | +using System.Linq; |
7 | 8 | using Xunit;
|
8 | 9 |
|
9 | 10 | namespace Microsoft.ML.AutoML.Test
|
@@ -235,5 +236,41 @@ public void TestStringParameterValue()
|
235 | 236 | Assert.Equal(value1.GetHashCode(), value1.GetHashCode());
|
236 | 237 | Assert.Equal(value1.GetHashCode(), duplicateValue1.GetHashCode());
|
237 | 238 | }
|
| 239 | + |
| 240 | + [Fact] |
| 241 | + public void TestParameterSetEquality() |
| 242 | + { |
| 243 | + LongParameterValue value1 = new LongParameterValue(nameof(value1), 1); |
| 244 | + LongParameterValue value2 = new LongParameterValue(nameof(value2), 2); |
| 245 | + StringParameterValue stringValue1 = new StringParameterValue(nameof(value1), "1"); |
| 246 | + |
| 247 | + var parameterSet = new ParameterSet(new[] { value1 }); |
| 248 | + Assert.False(parameterSet.Equals(null)); |
| 249 | + |
| 250 | + // Verify Equals for sets with different hash codes |
| 251 | + var parameterSetNewHash = new ParameterSet(new IParameterValue[] { value1 }.ToDictionary(x => x.Name), hash: parameterSet.GetHashCode() + 1); |
| 252 | + Assert.NotEqual(parameterSet.GetHashCode(), parameterSetNewHash.GetHashCode()); |
| 253 | + Assert.False(parameterSet.Equals(parameterSetNewHash)); |
| 254 | + |
| 255 | + // Verify Equals for sets with the same hash code, but different number of values |
| 256 | + var parameterSetMoreValues = new ParameterSet(new IParameterValue[] { value1, value2 }.ToDictionary(x => x.Name), hash: parameterSet.GetHashCode()); |
| 257 | + Assert.Equal(parameterSet.GetHashCode(), parameterSetMoreValues.GetHashCode()); |
| 258 | + Assert.False(parameterSet.Equals(parameterSetMoreValues)); |
| 259 | + |
| 260 | + // Verify Equals for sets with the same hash and item counts, but one of the items has a different name |
| 261 | + var parameterSetDifferentName = new ParameterSet(new IParameterValue[] { value2 }.ToDictionary(x => x.Name), hash: parameterSet.GetHashCode()); |
| 262 | + Assert.Equal(parameterSet.GetHashCode(), parameterSetDifferentName.GetHashCode()); |
| 263 | + Assert.False(parameterSet.Equals(parameterSetDifferentName)); |
| 264 | + |
| 265 | + // Verify Equals for sets with the same hash and item names, but one of the items has a different value |
| 266 | + var parameterSetDifferentValue = new ParameterSet(new IParameterValue[] { stringValue1 }.ToDictionary(x => x.Name), hash: parameterSet.GetHashCode()); |
| 267 | + Assert.Equal(parameterSet.GetHashCode(), parameterSetDifferentValue.GetHashCode()); |
| 268 | + Assert.False(parameterSet.Equals(parameterSetDifferentValue)); |
| 269 | + |
| 270 | + // Verify Equals for sets with the same hash and items |
| 271 | + var parameterSetSameHash = new ParameterSet(new IParameterValue[] { value1 }.ToDictionary(x => x.Name), hash: parameterSet.GetHashCode()); |
| 272 | + Assert.Equal(parameterSet.GetHashCode(), parameterSetSameHash.GetHashCode()); |
| 273 | + Assert.True(parameterSet.Equals(parameterSetSameHash)); |
| 274 | + } |
238 | 275 | }
|
239 | 276 | }
|
0 commit comments