private static void ShouldFindOneShape(string input, string expectedUnusedInput)
        {
            var testSubject = new TrivialFormatter();

            AssertParsesOneShape(testSubject, input, ExpectedGeographyResult, expectedUnusedInput);
            AssertParsesOneShape(testSubject, input, ExpectedGeometryResult, expectedUnusedInput);
        }
        public void ParseGivesValidationgPipeline()
        {
            // this test is bad, we have a task to fix the api to be testable
            var builder = new TrivialFormatter().GetValidatingBuilder();
            var pipe    = builder.Key;

            AssertThrows <FormatException>(() => pipe.GeometryPipeline.EndFigure());
        }
        private static void AssertParsesOneShape <TExpectedType>(TrivialFormatter testSubject, string input, TExpectedType expected,
                                                                 string expectedUnusedInput) where TExpectedType : class, ISpatial
        {
            var reader = new StringReader(input);
            var actual = testSubject.Read <TExpectedType>(reader);

            Assert.Equal(expected, actual);
            Assert.Equal(expectedUnusedInput, reader.ReadToEnd());
        }
        private static void ShouldFindNothing(string input)
        {
            var testSubject = new TrivialFormatter();

            Assert.Equal(MissingLineMessage,
                         AssertThrows <ParseErrorException>(() => testSubject.Read <GeographyPoint>(new StringReader(input))).Message);

            Assert.Equal(MissingLineMessage,
                         AssertThrows <ParseErrorException>(() => testSubject.Read <GeometryPoint>(new StringReader(input))).Message);
        }