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
35 changes: 5 additions & 30 deletions Source/Schema.NET/Values{T1,T2,T3,T4}.cs
Original file line number Diff line number Diff line change
Expand Up @@ -473,40 +473,15 @@ public IEnumerator<object> GetEnumerator()
/// </returns>
public bool Equals(Values<T1, T2, T3, T4> other)
{
if (other.HasValue1)
{
if (this.HasValue1)
{
return this.Value1.Equals(other.Value1);
}
}
else if (other.HasValue2)
{
if (this.HasValue2)
{
return this.Value2.Equals(other.Value2);
}
}
else if (other.HasValue3)
{
if (this.HasValue3)
{
return this.Value3.Equals(other.Value3);
}
}
else if (other.HasValue4)
{
if (this.HasValue4)
{
return this.Value4.Equals(other.Value4);
}
}
else if (!other.HasValue && !this.HasValue)
if (!other.HasValue && !this.HasValue)
{
return true;
}

return false;
return this.Value1.Equals(other.Value1) &&
this.Value2.Equals(other.Value2) &&
this.Value3.Equals(other.Value3) &&
this.Value4.Equals(other.Value4);
}

/// <summary>
Expand Down
27 changes: 4 additions & 23 deletions Source/Schema.NET/Values{T1,T2,T3}.cs
Original file line number Diff line number Diff line change
Expand Up @@ -404,33 +404,14 @@ public IEnumerator<object> GetEnumerator()
/// </returns>
public bool Equals(Values<T1, T2, T3> other)
{
if (other.HasValue1)
{
if (this.HasValue1)
{
return this.Value1.Equals(other.Value1);
}
}
else if (other.HasValue2)
{
if (this.HasValue2)
{
return this.Value2.Equals(other.Value2);
}
}
else if (other.HasValue3)
{
if (this.HasValue3)
{
return this.Value3.Equals(other.Value3);
}
}
else if (!other.HasValue && !this.HasValue)
if (!other.HasValue && !this.HasValue)
{
return true;
}

return false;
return this.Value1.Equals(other.Value1) &&
this.Value2.Equals(other.Value2) &&
this.Value3.Equals(other.Value3);
}

/// <summary>
Expand Down
27 changes: 3 additions & 24 deletions Source/Schema.NET/Values{T1,T2}.cs
Original file line number Diff line number Diff line change
Expand Up @@ -302,34 +302,13 @@ public IEnumerator<object> GetEnumerator()
/// </returns>
public bool Equals(Values<T1, T2> other)
{
if (other.HasValue1 && other.HasValue2)
{
if (this.HasValue1 && this.HasValue2)
{
return this.Value1.Equals(other.Value1) &&
this.Value2.Equals(other.Value2);
}
}
else if (other.HasValue1)
{
if (this.HasValue1)
{
return this.Value1.Equals(other.Value1);
}
}
else if (other.HasValue2)
{
if (this.HasValue2)
{
return this.Value2.Equals(other.Value2);
}
}
else if (!other.HasValue && !this.HasValue)
if (!other.HasValue && !this.HasValue)
{
return true;
}

return false;
return this.Value1.Equals(other.Value1) &&
this.Value2.Equals(other.Value2);
}

/// <summary>
Expand Down
20 changes: 0 additions & 20 deletions Tests/Schema.NET.Test/MixedTypesTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -65,26 +65,6 @@ public void DeserializeObject_WithCollectionOfMixedTypes_ReturnsObjectWithBothTy
Assert.Equal("Penguin", organization.Name);
}

[Fact]
public void DeserializeObject_DeserializesBankAccountTypeToStringAndUri_BankAccountTypeHasStringAndUriValues()
{
var json =
@"{" +
"\"@context\":\"https://schema.org\"," +
"\"@type\":\"BankAccount\"," +
"\"bankAccountType\":[" +
"\"http://example.com/1\"," +
"]" +
"}";

var bankAccount = JsonConvert.DeserializeObject<BankAccount>(json, TestDefaults.DefaultJsonSerializerSettings);

Assert.True(bankAccount.BankAccountType.HasValue);
Assert.Equal(
new List<object>() { "http://example.com/1", new Uri("http://example.com/1") },
bankAccount.BankAccountType);
}

[Fact]
public void ToString_Book_MatchesExpectedJson() =>
Assert.Equal(this.json, this.book.ToString());
Expand Down
28 changes: 28 additions & 0 deletions Tests/Schema.NET.Test/Values2Test.cs
Original file line number Diff line number Diff line change
Expand Up @@ -200,6 +200,34 @@ public void Equals_EqualValue2Passed_ReturnsTrue() =>
public void Equals_NotEqualValue2Passed_ReturnsFalse() =>
Assert.False(new Values<int, string>("Foo").Equals(new Values<int, string>("Bar")));

[Fact]
public void Equals_EqualValuesPassed_ReturnsTrue() =>
Assert.True(new Values<int, string>(new object[] { 0, "Foo" }).Equals(new object[] { 0, "Foo" }));

[Fact]
public void Equals_MixedTypes_Value1EqualValue2NotEqual_ReturnsFalse() =>
Assert.False(new Values<int, string>(new object[] { 0, "Foo" }).Equals(new Values<int, string>(new object[] { 0, "Bar" })));

[Fact]
public void Equals_MixedTypes_Value1NotEqualValue2Equal_ReturnsFalse() =>
Assert.False(new Values<int, string>(new object[] { 0, "Foo" }).Equals(new Values<int, string>(new object[] { 1, "Foo" })));

[Fact]
public void Equals_MixedTypes_ThisMissingValue2_ReturnsFalse() =>
Assert.False(new Values<int, string>(new object[] { 0 }).Equals(new Values<int, string>(new object[] { 0, "Foo" })));

[Fact]
public void Equals_MixedTypes_ThisMissingValue1_ReturnsFalse() =>
Assert.False(new Values<int, string>(new object[] { "Foo" }).Equals(new Values<int, string>(new object[] { 0, "Foo" })));

[Fact]
public void Equals_MixedTypes_OtherMissingValue2_ReturnsFalse() =>
Assert.False(new Values<int, string>(new object[] { 0, "Foo" }).Equals(new Values<int, string>(new object[] { 0 })));

[Fact]
public void Equals_MixedTypes_OtherMissingValue1_ReturnsFalse() =>
Assert.False(new Values<int, string>(new object[] { 0, "Foo" }).Equals(new Values<int, string>(new object[] { "Foo" })));

[Fact]
public void GetHashCode_Value1Passed_ReturnsMatchingHashCode() =>
Assert.Equal(CombineHashCodes(1.GetHashCode(), 0), new Values<int, string>(1).GetHashCode());
Expand Down
36 changes: 36 additions & 0 deletions Tests/Schema.NET.Test/Values3Test.cs
Original file line number Diff line number Diff line change
Expand Up @@ -292,6 +292,42 @@ public void Equals_EqualValue3Passed_ReturnsTrue() =>
public void Equals_NotEqualValue3Passed_ReturnsFalse() =>
Assert.False(new Values<int, string, DayOfWeek>(DayOfWeek.Friday).Equals(new Values<int, string, DayOfWeek>(DayOfWeek.Monday)));

[Fact]
public void Equals_MixedTypes_Value1EqualValue2EqualValue3NotEqual_ReturnsFalse() =>
Assert.False(new Values<int, string, DayOfWeek>(new object[] { 0, "Foo", DayOfWeek.Tuesday }).Equals(new Values<int, string, DayOfWeek>(new object[] { 0, "Foo", DayOfWeek.Wednesday })));

[Fact]
public void Equals_MixedTypes_Value1EqualValue2NotEqualValue3Equal_ReturnsFalse() =>
Assert.False(new Values<int, string, DayOfWeek>(new object[] { 0, "Foo", DayOfWeek.Tuesday }).Equals(new Values<int, string, DayOfWeek>(new object[] { 0, "Bar", DayOfWeek.Tuesday })));

[Fact]
public void Equals_MixedTypes_Value1NotEqualValue2EqualValue3Equal_ReturnsFalse() =>
Assert.False(new Values<int, string, DayOfWeek>(new object[] { 0, "Foo", DayOfWeek.Tuesday }).Equals(new Values<int, string, DayOfWeek>(new object[] { 1, "Foo", DayOfWeek.Tuesday })));

[Fact]
public void Equals_MixedTypes_ThisMissingValue3_ReturnsFalse() =>
Assert.False(new Values<int, string, DayOfWeek>(new object[] { 0, "Foo" }).Equals(new Values<int, string, DayOfWeek>(new object[] { 0, "Foo", DayOfWeek.Tuesday })));

[Fact]
public void Equals_MixedTypes_ThisMissingValue2_ReturnsFalse() =>
Assert.False(new Values<int, string, DayOfWeek>(new object[] { 0, DayOfWeek.Tuesday }).Equals(new Values<int, string, DayOfWeek>(new object[] { 0, "Foo", DayOfWeek.Tuesday })));

[Fact]
public void Equals_MixedTypes_ThisMissingValue1_ReturnsFalse() =>
Assert.False(new Values<int, string, DayOfWeek>(new object[] { "Foo", DayOfWeek.Tuesday }).Equals(new Values<int, string, DayOfWeek>(new object[] { 0, "Foo", DayOfWeek.Tuesday })));

[Fact]
public void Equals_MixedTypes_OtherMissingValue3_ReturnsFalse() =>
Assert.False(new Values<int, string, DayOfWeek>(new object[] { 0, "Foo", DayOfWeek.Tuesday }).Equals(new Values<int, string, DayOfWeek>(new object[] { 0, "Foo" })));

[Fact]
public void Equals_MixedTypes_OtherMissingValue2_ReturnsFalse() =>
Assert.False(new Values<int, string, DayOfWeek>(new object[] { 0, "Foo", DayOfWeek.Tuesday }).Equals(new Values<int, string, DayOfWeek>(new object[] { 0, DayOfWeek.Tuesday })));

[Fact]
public void Equals_MixedTypes_OtherMissingValue1_ReturnsFalse() =>
Assert.False(new Values<int, string, DayOfWeek>(new object[] { 0, "Foo", DayOfWeek.Tuesday }).Equals(new Values<int, string, DayOfWeek>(new object[] { "Foo", DayOfWeek.Tuesday })));

[Fact]
public void GetHashCode_Value1Passed_ReturnsMatchingHashCode() =>
Assert.Equal(
Expand Down
48 changes: 48 additions & 0 deletions Tests/Schema.NET.Test/Values4Test.cs
Original file line number Diff line number Diff line change
Expand Up @@ -397,6 +397,54 @@ public void Equals_EqualValue4Passed_ReturnsTrue()
public void Equals_NotEqualValue4Passed_ReturnsFalse() =>
Assert.False(new Values<int, string, DayOfWeek, Person>(new Person()).Equals(new Values<int, string, DayOfWeek, Person>(new Person())));

[Fact]
public void Equals_MixedTypes_Value1EqualValue2EqualValue3EqualValue4NotEqual_ReturnsFalse() =>
Assert.False(new Values<int, string, DayOfWeek, Person>(new object[] { 0, "Foo", DayOfWeek.Tuesday, new Person() }).Equals(new Values<int, string, DayOfWeek, Person>(new object[] { 0, "Foo", DayOfWeek.Tuesday, new Person { Name = "Schema" } })));

[Fact]
public void Equals_MixedTypes_Value1EqualValue2EqualValue3NotEqualValue4Equal_ReturnsFalse() =>
Assert.False(new Values<int, string, DayOfWeek, Person>(new object[] { 0, "Foo", DayOfWeek.Tuesday, new Person() }).Equals(new Values<int, string, DayOfWeek, Person>(new object[] { 0, "Foo", DayOfWeek.Wednesday, new Person() })));

[Fact]
public void Equals_MixedTypes_Value1EqualValue2NotEqualValue3EqualValue4Equal_ReturnsFalse() =>
Assert.False(new Values<int, string, DayOfWeek, Person>(new object[] { 0, "Foo", DayOfWeek.Tuesday, new Person() }).Equals(new Values<int, string, DayOfWeek, Person>(new object[] { 0, "Bar", DayOfWeek.Tuesday, new Person() })));

[Fact]
public void Equals_MixedTypes_Value1NotEqualValue2EqualValue3EqualValue4Equal_ReturnsFalse() =>
Assert.False(new Values<int, string, DayOfWeek, Person>(new object[] { 0, "Foo", DayOfWeek.Tuesday, new Person() }).Equals(new Values<int, string, DayOfWeek, Person>(new object[] { 1, "Foo", DayOfWeek.Tuesday, new Person() })));

[Fact]
public void Equals_MixedTypes_ThisMissingValue4_ReturnsFalse() =>
Assert.False(new Values<int, string, DayOfWeek, Person>(new object[] { 0, "Foo", DayOfWeek.Tuesday }).Equals(new Values<int, string, DayOfWeek, Person>(new object[] { 0, "Foo", DayOfWeek.Tuesday, new Person() })));

[Fact]
public void Equals_MixedTypes_ThisMissingValue3_ReturnsFalse() =>
Assert.False(new Values<int, string, DayOfWeek, Person>(new object[] { 0, "Foo", new Person() }).Equals(new Values<int, string, DayOfWeek, Person>(new object[] { 0, "Foo", DayOfWeek.Tuesday, new Person() })));

[Fact]
public void Equals_MixedTypes_ThisMissingValue2_ReturnsFalse() =>
Assert.False(new Values<int, string, DayOfWeek, Person>(new object[] { 0, DayOfWeek.Tuesday, new Person() }).Equals(new Values<int, string, DayOfWeek, Person>(new object[] { 0, "Foo", DayOfWeek.Tuesday, new Person() })));

[Fact]
public void Equals_MixedTypes_ThisMissingValue1_ReturnsFalse() =>
Assert.False(new Values<int, string, DayOfWeek, Person>(new object[] { "Foo", DayOfWeek.Tuesday, new Person() }).Equals(new Values<int, string, DayOfWeek, Person>(new object[] { 0, "Foo", DayOfWeek.Tuesday, new Person() })));

[Fact]
public void Equals_MixedTypes_OtherMissingValue4_ReturnsFalse() =>
Assert.False(new Values<int, string, DayOfWeek, Person>(new object[] { 0, "Foo", DayOfWeek.Tuesday, new Person() }).Equals(new Values<int, string, DayOfWeek, Person>(new object[] { 0, "Foo", DayOfWeek.Tuesday })));

[Fact]
public void Equals_MixedTypes_OtherMissingValue3_ReturnsFalse() =>
Assert.False(new Values<int, string, DayOfWeek, Person>(new object[] { 0, "Foo", DayOfWeek.Tuesday, new Person() }).Equals(new Values<int, string, DayOfWeek, Person>(new object[] { 0, "Foo", new Person() })));

[Fact]
public void Equals_MixedTypes_OtherMissingValue2_ReturnsFalse() =>
Assert.False(new Values<int, string, DayOfWeek, Person>(new object[] { 0, "Foo", DayOfWeek.Tuesday, new Person() }).Equals(new Values<int, string, DayOfWeek, Person>(new object[] { 0, DayOfWeek.Tuesday, new Person() })));

[Fact]
public void Equals_MixedTypes_OtherMissingValue1_ReturnsFalse() =>
Assert.False(new Values<int, string, DayOfWeek, Person>(new object[] { 0, "Foo", DayOfWeek.Tuesday, new Person() }).Equals(new Values<int, string, DayOfWeek, Person>(new object[] { "Foo", DayOfWeek.Tuesday, new Person() })));

[Fact]
public void GetHashCode_Value1Passed_ReturnsMatchingHashCode() =>
Assert.Equal(
Expand Down