// Copyright (c) Brice Lambson // The Brice Lambson licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. Code forked from Brice Lambson's https://github.com/bricelam/ImageResizer/ using System; using System.Collections.Generic; using System.Collections.Specialized; using System.ComponentModel; using System.IO; using System.Windows.Media.Imaging; using Xunit; namespace ImageResizer.Test { internal static class AssertEx { public static void All(IEnumerable collection, Action action) { foreach (var item in collection) { action(item); } } public static void Image(string path, Action action) { using (var stream = File.OpenRead(path)) { var image = BitmapDecoder.Create( stream, BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.None); action(image); } } public static RaisedEvent Raises( Action attach, Action detach, Action testCode) where T : NotifyCollectionChangedEventArgs { RaisedEvent raisedEvent = null; NotifyCollectionChangedEventHandler handler = (sender, e) => raisedEvent = new RaisedEvent(sender, e); attach(handler); testCode(); detach(handler); Assert.NotNull(raisedEvent); return raisedEvent; } public static RaisedEvent Raises( Action attach, Action detach, Action testCode) where T : PropertyChangedEventArgs { RaisedEvent raisedEvent = null; PropertyChangedEventHandler handler = (sender, e) => raisedEvent = new RaisedEvent(sender, e); attach(handler); testCode(); detach(handler); Assert.NotNull(raisedEvent); return raisedEvent; } public class RaisedEvent { public RaisedEvent(object sender, TArgs args) { Sender = sender; Arguments = args; } public object Sender { get; } public TArgs Arguments { get; } } } }