// Copyright (c) .NET Foundation. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System; using System.Linq; using System.Collections.Generic; using Moq; using Xunit; namespace Microsoft.AspNet.Mvc.Formatters.Xml { public class DelegatingEnumerableTest { [Fact] public void CanEnumerateOn_NonWrappableElementTypes() { // Arrange var numbers = new[] { 10, 20 }; var delegatingEnumerable = new DelegatingEnumerable(numbers, elementWrapperProvider: null); // Act and Assert Assert.Equal(numbers, delegatingEnumerable); } [Fact] public void DoesNotThrowOn_EmptyCollections_NonWrappableElementTypes() { // Arrange var numbers = new int[] { }; var delegatingEnumerable = new DelegatingEnumerable(numbers, elementWrapperProvider: null); // Act and Assert Assert.Empty(delegatingEnumerable); } [Fact] public void CanEnumerateOn_WrappableElementTypes() { // Arrange var error1 = new SerializableError(); error1.Add("key1", "key1-error"); var error2 = new SerializableError(); error2.Add("key1", "key1-error"); var errors = new[] { error1, error2 }; var delegatingEnumerable = new DelegatingEnumerable( errors, new SerializableErrorWrapperProvider()); // Act and Assert Assert.Equal(errors.Length, delegatingEnumerable.Count()); for (var i = 0; i < errors.Length; i++) { var errorWrapper = delegatingEnumerable.ElementAt(i); Assert.IsType(errorWrapper); Assert.NotNull(errorWrapper); Assert.Same(errors[i], errorWrapper.SerializableError); } } [Fact] public void DoesNotThrowOn_EmptyCollections_WrappableElementTypes() { // Arrange var errors = new SerializableError[] { }; var delegatingEnumerable = new DelegatingEnumerable( errors, new SerializableErrorWrapperProvider()); // Act and Assert Assert.Empty(delegatingEnumerable); } } }