Headless CMS and Content Managment Hub
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

100 lines
3.2 KiB

// ==========================================================================
// Squidex Headless CMS
// ==========================================================================
// Copyright (c) Squidex UG (haftungsbeschraenkt)
// All rights reserved. Licensed under the MIT license.
// ==========================================================================
using Squidex.Infrastructure.TestHelpers;
using Xunit;
namespace Squidex.Infrastructure.Collections
{
public class ReadonlyDictionaryTests
{
[Fact]
public void Should_return_empty_instance_for_empty_source()
{
var result = new Dictionary<int, int>().ToReadonlyDictionary();
Assert.Same(ReadonlyDictionary.Empty<int, int>(), result);
}
[Fact]
public void Should_return_empty_instance_for_empty_source_and_key_selector()
{
var result = Enumerable.Empty<int>().ToReadonlyDictionary(x => x);
Assert.Same(ReadonlyDictionary.Empty<int, int>(), result);
}
[Fact]
public void Should_return_empty_instance_for_empty_source_and_value_selector()
{
var result = Enumerable.Empty<int>().ToReadonlyDictionary(x => x, x => x);
Assert.Same(ReadonlyDictionary.Empty<int, int>(), result);
}
[Fact]
public void Should_make_correct_object_equal_comparisons()
{
var obj1a = new Dictionary<int, int>
{
[1] = 1
}.ToReadonlyDictionary();
var obj1b = new Dictionary<int, int>
{
[1] = 1
}.ToReadonlyDictionary();
var dictionaryOtherValue = new Dictionary<int, int>
{
[1] = 2
}.ToReadonlyDictionary();
var dictionaryOtherKey = new Dictionary<int, int>
{
[2] = 1
}.ToReadonlyDictionary();
var dictionaryOtherCount = new Dictionary<int, int>
{
[1] = 1,
[2] = 2
}.ToReadonlyDictionary();
Assert.Equal(obj1a, obj1b);
Assert.Equal(obj1a.GetHashCode(), obj1b.GetHashCode());
Assert.True(obj1a.Equals((object)obj1b));
Assert.NotEqual(obj1a, dictionaryOtherValue);
Assert.NotEqual(obj1a.GetHashCode(), dictionaryOtherValue.GetHashCode());
Assert.False(obj1a.Equals((object)dictionaryOtherValue));
Assert.NotEqual(obj1a, dictionaryOtherKey);
Assert.NotEqual(obj1a.GetHashCode(), dictionaryOtherKey.GetHashCode());
Assert.False(obj1a.Equals((object)dictionaryOtherKey));
Assert.NotEqual(obj1a, dictionaryOtherCount);
Assert.NotEqual(obj1a.GetHashCode(), dictionaryOtherCount.GetHashCode());
Assert.False(obj1a.Equals((object)dictionaryOtherCount));
}
[Fact]
public void Should_serialize_and_deserialize()
{
var sut = new Dictionary<int, int>
{
[11] = 1,
[12] = 2,
[13] = 3
}.ToReadonlyDictionary();
var serialized = sut.SerializeAndDeserialize();
Assert.Equal(sut, serialized);
}
}
}