using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace MasterDevs.ChromeDevTools.ProtocolGenerator
{
    static class CollectionExtensions
    {
        public static bool CollectionEqual<T>(this ICollection<T> x, ICollection<T> y)
        {
            if (x == null || y == null)
            {
                return false;
            }

            if(x.Count != y.Count)
            {
                return false;
            }

            return x.All(e => y.Contains(e));
        }

        public static int GetCollectionHashCode<T>(this ICollection<T> x)
        {
            int hash = 17;

            unchecked
            {
                foreach (var e in x)
                {
                    hash = hash * 23 + e.GetHashCode();
                }
            }

            return hash;
        }
    }
}