public int Compare(TEnum x, TEnum y) => ComparerImpl.Compare(x, y);
        public void CompareObjectWithBothStrings_ExpectSuppliedComparerToBeCalled()
        {
            var comparer = new ComparerImpl <string>((a, b) => 123);

            Assert.AreEqual(123, comparer.Compare((object)"A", (object)"B"));
        }
        public void CompareObjectWithNotStrings_ExpectInvalidCastException()
        {
            var comparer = new ComparerImpl <string>((a, b) => 123);

            Assert.Throws <InvalidCastException>(() => comparer.Compare((object)1, (object)2));
        }
        public void CompareStrings_ExpectSuppliedComparerToBeCalled()
        {
            var comparer = new ComparerImpl <string>((a, b) => 123);

            Assert.AreEqual(123, comparer.Compare("A", "B"));
        }