public void Initialization_List_Correct()
        {
            var o = new ListOrSingleValue <int>()
            {
                1, 2, 3
            };

            Assert.Equal(3, o.Count);
            Assert.False(o.IsSingle);
            Assert.Equal(o.CastErrorMode, CastErrorMode.ThrowExceptionIfList);
            Assert.Equal(1, o.ElementAt(0));
            Assert.Equal(2, o.ElementAt(1));
            Assert.Equal(3, o.ElementAt(2));
        }
        public void ImplicitCastFromList_ListOfInt_ListOrSingle()
        {
            var list = new List <int> {
                10, 12, 15
            };

            ListOrSingleValue <int> o = list;

            Assert.Equal(3, o.Count);
            Assert.Equal(o.CastErrorMode, CastErrorMode.ThrowExceptionIfList);
            Assert.False(o.IsSingle);
            Assert.Equal(10, o.ElementAt(0));
            Assert.Equal(12, o.ElementAt(1));
            Assert.Equal(15, o.ElementAt(2));
        }
        public void Initialization_SingleValue_Correct()
        {
            ListOrSingleValue <int> o = 5;

            Assert.Equal(1, o.Count);
            Assert.Equal(o.CastErrorMode, CastErrorMode.ThrowExceptionIfList);
            Assert.True(o.IsSingle);
            Assert.Equal(5, o.ElementAt(0));
        }
        public void IsSingle_ListWithSingleElement_True()
        {
            var o = new ListOrSingleValue <int>();

            o.Add(5);

            Assert.Equal(1, o.Count);
            Assert.True(o.IsSingle);
            Assert.Equal(5, o.ElementAt(0));
        }