public string TryParsePassesResult(string stat)
        {
            var sut = new CachingStringParser <string>(_inner);

            var(_, _, actual) = sut.Parse(stat);

            return(actual);
        }
        public bool TryParsePassesSuccessfullyParsed(string stat)
        {
            var sut = new CachingStringParser <string>(_inner);

            var(actual, _, _) = sut.Parse(stat);

            return(actual);
        }
        public void TryParseCachesSingleStat()
        {
            var sut = new CachingStringParser <string>(_inner);

            sut.Parse(TrueStat);
            sut.Parse(TrueStat);

            _innerMock.VerifyParse(TrueStat, Times.Once);
        }
        public void TryParsesCachesMultipleStats()
        {
            var sut = new CachingStringParser <string>(_inner);

            sut.Parse(TrueStat);
            sut.Parse(FalseStat);
            sut.Parse(FalseStat);
            sut.Parse("whatever");
            sut.Parse(TrueStat);
            sut.Parse(TrueStat);
            sut.Parse("whatever");

            _innerMock.VerifyParse(TrueStat, Times.Once);
            _innerMock.VerifyParse(FalseStat, Times.Once);
            _innerMock.VerifyParse("whatever", Times.Once);
        }
        public void IsIParserInt()
        {
            var sut = new CachingStringParser <int>(Mock.Of <IStringParser <int> >());

            Assert.IsInstanceOf <IStringParser <int> >(sut);
        }
        public void IsIParserString()
        {
            var sut = new CachingStringParser <string>(_inner);

            Assert.IsInstanceOf <IStringParser <string> >(sut);
        }