Skip to content

Commit 19b2ad5

Browse files
authored
Make SqlType.Equals symmetrical (#2534)
1 parent 32a0227 commit 19b2ad5

File tree

3 files changed

+34
-24
lines changed

3 files changed

+34
-24
lines changed

src/NHibernate.Test/TypesTest/ChangeDefaultTypeWithLengthFixture.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -68,16 +68,16 @@ public void PropertyType()
6868
var propertyType25 = Sfi.GetClassMetadata(typeof(ChangeDefaultTypeClass))
6969
.GetPropertyType(nameof(ChangeDefaultTypeClass.StringTypeLengthInType25));
7070
Assert.That(
71-
propertyType25,
72-
Is.EqualTo(_testDefaultStringType));
71+
propertyType25.GetType(),
72+
Is.EqualTo(_testDefaultStringType.GetType()));
7373
Assert.That(propertyType25.SqlTypes(Sfi)[0].Length, Is.EqualTo(25));
7474

7575
var propertyType20 = Sfi.GetClassMetadata(typeof(ChangeDefaultTypeClass))
7676
.GetPropertyType(nameof(ChangeDefaultTypeClass.StringTypeExplicitLength20));
7777

7878
Assert.That(
79-
propertyType20,
80-
Is.EqualTo(_testDefaultStringType));
79+
propertyType20.GetType(),
80+
Is.EqualTo(_testDefaultStringType.GetType()));
8181
Assert.That(propertyType20.SqlTypes(Sfi)[0].Length, Is.EqualTo(20));
8282
}
8383

src/NHibernate.Test/TypesTest/ChangeDefaultTypeWithPrecisionFixture.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -69,17 +69,17 @@ public void PropertyType()
6969
var propertyType1 = Sfi.GetClassMetadata(typeof(ChangeDefaultTypeClass))
7070
.GetPropertyType(nameof(ChangeDefaultTypeClass.CurrencyTypeExplicitPrecision6And3));
7171
Assert.That(
72-
propertyType1,
73-
Is.EqualTo(_testDefaultType));
72+
propertyType1.GetType(),
73+
Is.EqualTo(_testDefaultType.GetType()));
7474
Assert.That(propertyType1.SqlTypes(Sfi)[0].Precision, Is.EqualTo(6));
7575
Assert.That(propertyType1.SqlTypes(Sfi)[0].Scale, Is.EqualTo(3));
7676

7777
var propertyType2 = Sfi.GetClassMetadata(typeof(ChangeDefaultTypeClass))
7878
.GetPropertyType(nameof(ChangeDefaultTypeClass.CurrencyTypePrecisionInType5And2));
7979

8080
Assert.That(
81-
propertyType2,
82-
Is.EqualTo(_testDefaultType));
81+
propertyType2.GetType(),
82+
Is.EqualTo(_testDefaultType.GetType()));
8383
Assert.That(propertyType2.SqlTypes(Sfi)[0].Precision, Is.EqualTo(5));
8484
Assert.That(propertyType2.SqlTypes(Sfi)[0].Scale, Is.EqualTo(2));
8585
}

src/NHibernate/SqlTypes/SqlType.cs

Lines changed: 26 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ namespace NHibernate.SqlTypes
2121
/// </p>
2222
/// </remarks>
2323
[Serializable]
24-
public class SqlType
24+
public class SqlType : IEquatable<SqlType>
2525
{
2626
private readonly DbType dbType;
2727
private readonly int length;
@@ -125,24 +125,34 @@ public override bool Equals(object obj)
125125

126126
public bool Equals(SqlType rhsSqlType)
127127
{
128+
if (ReferenceEquals(this, rhsSqlType))
129+
return true;
130+
128131
if (rhsSqlType == null)
129-
{
130132
return false;
131-
}
132133

133-
if (LengthDefined)
134-
{
135-
return (DbType.Equals(rhsSqlType.DbType)) && (Length == rhsSqlType.Length);
136-
}
137-
if (PrecisionDefined)
138-
{
139-
return (DbType.Equals(rhsSqlType.DbType)) && (Precision == rhsSqlType.Precision) && (Scale == rhsSqlType.Scale);
140-
}
141-
if (ScaleDefined)
142-
{
143-
return DbType.Equals(rhsSqlType.DbType) && Scale == rhsSqlType.Scale;
144-
}
145-
return (DbType.Equals(rhsSqlType.DbType));
134+
if (DbType != rhsSqlType.DbType)
135+
return false;
136+
137+
if (LengthDefined != rhsSqlType.LengthDefined)
138+
return false;
139+
140+
if (PrecisionDefined != rhsSqlType.PrecisionDefined)
141+
return false;
142+
143+
if (ScaleDefined != rhsSqlType.ScaleDefined)
144+
return false;
145+
146+
if (Length != rhsSqlType.Length)
147+
return false;
148+
149+
if (Precision != rhsSqlType.Precision)
150+
return false;
151+
152+
if (Scale != rhsSqlType.Scale)
153+
return false;
154+
155+
return true;
146156
}
147157

148158
public override string ToString()

0 commit comments

Comments
 (0)