コード例 #1
0
        public void TestFullMessageWithRichTypes()
        {
            TestXmlMessage message = TestXmlMessage.CreateBuilder()
                                     .SetValid(true)
                                     .SetText("text")
                                     .AddTextlines("a")
                                     .AddTextlines("b")
                                     .AddTextlines("c")
                                     .SetNumber(0x1010101010)
                                     .AddNumbers(1)
                                     .AddNumbers(2)
                                     .AddNumbers(3)
                                     .SetChild(TestXmlChild.CreateBuilder().AddOptions(EnumOptions.ONE).SetBinary(ByteString.CopyFrom(new byte[1])))
                                     .AddChildren(TestXmlMessage.Types.Children.CreateBuilder().AddOptions(EnumOptions.TWO).SetBinary(ByteString.CopyFrom(new byte[2])))
                                     .AddChildren(TestXmlMessage.Types.Children.CreateBuilder().AddOptions(EnumOptions.THREE).SetBinary(ByteString.CopyFrom(new byte[3])))
                                     .Build();

            StringWriter sw   = new StringWriter();
            XmlWriter    xwtr = XmlWriter.Create(sw, new XmlWriterSettings {
                Indent = true, IndentChars = "  "
            });

            XmlFormatWriter.CreateInstance(xwtr)
            .SetOptions(XmlWriterOptions.OutputNestedArrays | XmlWriterOptions.OutputEnumValues)
            .WriteMessage("root", message);

            string xml = sw.ToString();

            XmlFormatReader rdr = XmlFormatReader.CreateInstance(xml);

            rdr.Options = XmlReaderOptions.ReadNestedArrays;
            TestXmlMessage copy = rdr.Merge(TestXmlMessage.CreateBuilder()).Build();

            Assert.AreEqual(message, copy);
        }
コード例 #2
0
        public void TestXmlReadWriteWithoutRoot()
        {
            TestXmlMessage.Builder builder = TestXmlMessage.CreateBuilder();
            TestXmlMessage         message = builder.SetText("abc").SetNumber(123).Build();

            string xml;

            using (StringWriter sw = new StringWriter())
            {
                ICodedOutputStream output = XmlFormatWriter.CreateInstance(
                    XmlWriter.Create(sw, new XmlWriterSettings()
                {
                    ConformanceLevel = ConformanceLevel.Fragment
                }));

                message.WriteTo(output);
                output.Flush();
                xml = sw.ToString();
            }
            Assert.AreEqual("<text>abc</text><number>123</number>", xml);

            TestXmlMessage copy;

            using (XmlReader xr = XmlReader.Create(new StringReader(xml), new XmlReaderSettings()
            {
                ConformanceLevel = ConformanceLevel.Fragment
            }))
            {
                ICodedInputStream input = XmlFormatReader.CreateInstance(xr);
                copy = TestXmlMessage.CreateBuilder().MergeFrom(input).Build();
            }

            Assert.AreEqual(message, copy);
        }
コード例 #3
0
ファイル: XmlFormatReaderTest.cs プロジェクト: reftel/arkade5
        public void ShouldReadSimpleXml()
        {
            XmlReader reader = XmlReaderUtil.Read(
                "<r>" +
                "  <o>" +
                "    <i1>1</i1>" +
                "    <i2>2</i2>" +
                "  </o>" +
                "  <o>" +
                "    <i1>3</i1>" +
                "    <i2>4</i2>" +
                "  </o>" +
                "</r>"
                );
            string recordName = "o";

            XmlFormatReader xmlFormatReader = new XmlFormatReader(reader, recordName);

            xmlFormatReader.HasNext().Should().BeTrue();
            xmlFormatReader.Next().Should().Equal(new Dictionary <string, string> {
                { "i1", "1" }, { "i2", "2" }
            });
            xmlFormatReader.HasNext().Should().BeTrue();
            xmlFormatReader.Next().Should().Equal(new Dictionary <string, string> {
                { "i1", "3" }, { "i2", "4" }
            });
            xmlFormatReader.HasNext().Should().BeFalse();
        }
コード例 #4
0
        /// <summary>
        /// Merges an XML object into this builder using the extensions provided and returns
        /// </summary>
        public static TBuilder MergeFromXml <TBuilder>(
#if !NOEXTENSIONS
            this
#endif
            TBuilder builder, string rootElementName, XmlReader reader,
            ExtensionRegistry extensionRegistry) where TBuilder : IBuilderLite
        {
            return(XmlFormatReader.CreateInstance(reader)
                   .Merge(rootElementName, builder, extensionRegistry));
        }
コード例 #5
0
        public void TestXmlReadEmptyRoot()
        {
            TestXmlMessage.Builder builder = TestXmlMessage.CreateBuilder();
            ICodedInputStream      reader  = XmlFormatReader.CreateInstance(@"<root/>");

            reader.ReadMessageStart();  //manually read the begin the message '{'

            builder.MergeFrom(reader);  //write the message normally

            reader.ReadMessageEnd();    //manually read the end message '}'
        }
コード例 #6
0
        public void TestXmlReadEmptyChild()
        {
            TestXmlMessage.Builder builder = TestXmlMessage.CreateBuilder();
            ICodedInputStream      reader  = XmlFormatReader.CreateInstance(@"<root><text /></root>");

            reader.ReadMessageStart();  //manually read the begin the message '{'

            builder.MergeFrom(reader);  //write the message normally
            Assert.IsTrue(builder.HasText);
            Assert.AreEqual(String.Empty, builder.Text);
        }
コード例 #7
0
        public void Example_ReadXmlUsingICodedInputStream()
        {
            TestXmlMessage.Builder builder = TestXmlMessage.CreateBuilder();
            ICodedInputStream      reader  = XmlFormatReader.CreateInstance(@"<root><valid>true</valid></root>");

            reader.ReadMessageStart();  //manually read the begin the message '{'

            builder.MergeFrom(reader);  //read the message normally

            reader.ReadMessageEnd();    //manually read the end message '}'
        }
コード例 #8
0
        /// <summary>
        /// Constructs an ICodedInputStream from the input stream based on the contentType provided
        /// </summary>
        /// <param name="options">Options specific to reading this message and/or content type</param>
        /// <param name="contentType">The mime type of the input stream content</param>
        /// <param name="input">The stream to read the message from</param>
        /// <returns>The ICodedInputStream that can be given to the IBuilder.MergeFrom(...) method</returns>
        public static ICodedInputStream CreateInputStream(MessageFormatOptions options, string contentType, Stream input)
        {
            ICodedInputStream codedInput = ContentTypeToInputStream(contentType, options, input);

            if (codedInput is XmlFormatReader)
            {
                XmlFormatReader reader = (XmlFormatReader)codedInput;
                reader.RootElementName = options.XmlReaderRootElementName;
                reader.Options         = options.XmlReaderOptions;
            }

            return(codedInput);
        }
コード例 #9
0
        public void TestMessageWithXmlText()
        {
            TestXmlMessage message = TestXmlMessage.CreateBuilder()
                                     .SetText("<text>").Build();

            StringWriter sw = new StringWriter();

            XmlFormatWriter.CreateInstance(sw).WriteMessage("root", message);

            string xml = sw.ToString();

            XmlFormatReader rdr  = XmlFormatReader.CreateInstance(xml);
            TestXmlMessage  copy = rdr.Merge(TestXmlMessage.CreateBuilder()).Build();

            Assert.AreEqual(message, copy);
        }
コード例 #10
0
        public void TestBooleanTypes()
        {
            TestXmlMessage message = TestXmlMessage.CreateBuilder()
                                     .SetValid(true)
                                     .Build();

            StringWriter sw = new StringWriter();

            XmlFormatWriter.CreateInstance(sw).WriteMessage("root", message);

            string          xml  = sw.ToString();
            XmlFormatReader rdr  = XmlFormatReader.CreateInstance(xml);
            TestXmlMessage  copy = rdr.Merge(TestXmlMessage.CreateBuilder()).Build();

            Assert.AreEqual(message, copy);
        }
コード例 #11
0
        public void TestNestedMessage()
        {
            TestXmlMessage message = TestXmlMessage.CreateBuilder()
                                     .SetChild(TestXmlChild.CreateBuilder().AddOptions(EnumOptions.TWO).Build())
                                     .Build();

            StringWriter sw = new StringWriter();

            XmlFormatWriter.CreateInstance(sw).WriteMessage("root", message);

            string          xml  = sw.ToString();
            XmlFormatReader rdr  = XmlFormatReader.CreateInstance(xml);
            TestXmlMessage  copy = rdr.Merge(TestXmlMessage.CreateBuilder()).Build();

            Assert.AreEqual(message, copy);
        }
コード例 #12
0
        public void TestXmlWithWhitespace()
        {
            TestXmlMessage message = TestXmlMessage.CreateBuilder()
                                     .SetText(" \t <- leading space and trailing -> \r\n\t").Build();

            StringWriter sw = new StringWriter();

            XmlFormatWriter.CreateInstance(sw).WriteMessage("root", message);

            string xml = sw.ToString();

            XmlFormatReader rdr  = XmlFormatReader.CreateInstance(xml);
            TestXmlMessage  copy = rdr.Merge(TestXmlMessage.CreateBuilder()).Build();

            Assert.AreEqual(message, copy);
        }
コード例 #13
0
        public void TestFullMessageWithUnknownFields()
        {
            TestXmlMessage origial = TestXmlMessage.CreateBuilder()
                                     .SetValid(true)
                                     .SetText("text")
                                     .AddTextlines("a")
                                     .AddTextlines("b")
                                     .AddTextlines("c")
                                     .SetNumber(0x1010101010)
                                     .AddNumbers(1)
                                     .AddNumbers(2)
                                     .AddNumbers(3)
                                     .SetChild(TestXmlChild.CreateBuilder().AddOptions(EnumOptions.ONE).SetBinary(ByteString.CopyFrom(new byte[1])))
                                     .AddChildren(TestXmlMessage.Types.Children.CreateBuilder().AddOptions(EnumOptions.TWO).SetBinary(ByteString.CopyFrom(new byte[2])))
                                     .AddChildren(TestXmlMessage.Types.Children.CreateBuilder().AddOptions(EnumOptions.THREE).SetBinary(ByteString.CopyFrom(new byte[3])))
                                     .Build();
            TestXmlNoFields message = TestXmlNoFields.CreateBuilder().MergeFrom(origial.ToByteArray()).Build();

            Assert.AreEqual(0, message.AllFields.Count);

            StringWriter sw = new StringWriter();

            XmlFormatWriter.CreateInstance(sw)
            .SetOptions(XmlWriterOptions.OutputNestedArrays | XmlWriterOptions.OutputEnumValues)
            .WriteMessage("root", message);

            string xml = sw.ToString();

            using (XmlReader x = XmlReader.Create(new StringReader(xml)))
            {
                x.MoveToContent();
                Assert.AreEqual(XmlNodeType.Element, x.NodeType);
                //should always be empty
                Assert.IsTrue(x.IsEmptyElement ||
                              (x.Read() && x.NodeType == XmlNodeType.EndElement)
                              );
            }

            XmlFormatReader rdr = XmlFormatReader.CreateInstance(xml);

            rdr.Options = XmlReaderOptions.ReadNestedArrays;
            TestXmlMessage copy = rdr.Merge(TestXmlMessage.CreateBuilder()).Build();

            Assert.AreEqual(TestXmlMessage.DefaultInstance, copy);
        }
コード例 #14
0
        public void TestRepeatedField()
        {
            TestXmlChild message = TestXmlChild.CreateBuilder()
                                   .AddOptions(EnumOptions.ONE)
                                   .AddOptions(EnumOptions.TWO)
                                   .Build();

            //Allow the writer to write the root element
            StringWriter sw = new StringWriter();

            XmlFormatWriter.CreateInstance(sw).WriteMessage("root", message);

            string          xml  = sw.ToString();
            XmlFormatReader rdr  = XmlFormatReader.CreateInstance(xml);
            TestXmlChild    copy = rdr.Merge(TestXmlChild.CreateBuilder()).Build();

            Assert.AreEqual(message, copy);
        }
コード例 #15
0
        public void TestEmptyMessage()
        {
            TestXmlChild message = TestXmlChild.CreateBuilder()
                                   .Build();

            StringWriter sw = new StringWriter();
            XmlWriter    xw = XmlWriter.Create(sw);

            //When we call message.WriteTo, we are responsible for the root element
            xw.WriteStartElement("root");
            message.WriteTo(XmlFormatWriter.CreateInstance(xw));
            xw.WriteEndElement();
            xw.Flush();

            string          xml  = sw.ToString();
            XmlFormatReader rdr  = XmlFormatReader.CreateInstance(xml);
            TestXmlChild    copy = rdr.Merge(TestXmlChild.CreateBuilder()).Build();

            Assert.AreEqual(message, copy);
        }
        public void TestXmlWithExtensionMessage()
        {
            TestXmlMessage message = TestXmlMessage.CreateBuilder()
                                     .SetExtension(UnitTestXmlSerializerTestProtoFile.ExtensionMessage,
                                                   new TestXmlExtension.Builder().SetNumber(42).Build()).Build();

            StringWriter sw = new StringWriter();

            XmlFormatWriter.CreateInstance(sw).WriteMessage("root", message);

            string xml = sw.ToString();

            ExtensionRegistry registry = ExtensionRegistry.CreateInstance();

            UnitTestXmlSerializerTestProtoFile.RegisterAllExtensions(registry);

            XmlFormatReader rdr  = XmlFormatReader.CreateInstance(xml);
            TestXmlMessage  copy = rdr.Merge(TestXmlMessage.CreateBuilder(), registry).Build();

            Assert.AreEqual(message, copy);
        }
コード例 #17
0
        public void TestXmlWithExtensionEnum()
        {
            TestXmlMessage message = TestXmlMessage.CreateBuilder()
                                     .SetExtension(UnittestExtrasXmltest.ExtensionEnum, EnumOptions.ONE)
                                     .Build();

            StringWriter sw = new StringWriter();

            XmlFormatWriter.CreateInstance(sw).WriteMessage("root", message);

            string xml = sw.ToString();

            ExtensionRegistry registry = ExtensionRegistry.CreateInstance();

            UnittestExtrasXmltest.RegisterAllExtensions(registry);

            XmlFormatReader rdr  = XmlFormatReader.CreateInstance(xml);
            TestXmlMessage  copy = rdr.Merge(TestXmlMessage.CreateBuilder(), registry).Build();

            Assert.AreEqual(message, copy);
        }
コード例 #18
0
        public void TestXmlWriterOptions()
        {
            TestXmlMessage       message = TestXmlMessage.CreateBuilder().SetText("a").AddNumbers(1).AddNumbers(2).Build();
            MessageFormatOptions options = new MessageFormatOptions()
            {
                XmlWriterOptions         = XmlWriterOptions.OutputNestedArrays,
                XmlWriterRootElementName = "root-node"
            };

            MemoryStream ms = new MemoryStream();

            Extensions.WriteTo(message, options, "application/xml", ms);
            ms.Position = 0;

            TestXmlMessage.Builder builder = TestXmlMessage.CreateBuilder();
            XmlFormatReader.CreateInstance(ms)
            .SetOptions(XmlReaderOptions.ReadNestedArrays)
            .Merge("root-node", builder);

            Assert.AreEqual("a", builder.Text);
            Assert.AreEqual(1, builder.NumbersList[0]);
            Assert.AreEqual(2, builder.NumbersList[1]);
        }
コード例 #19
0
        protected override TBuilder DeserializeMessage <TMessage, TBuilder>(object message, TBuilder builder, ExtensionRegistry registry)
        {
            XmlFormatReader reader = XmlFormatReader.CreateInstance((string)message).SetOptions(XmlReaderOptions.ReadNestedArrays);

            return(reader.Merge("root", builder, registry));
        }
コード例 #20
0
ファイル: XmlFormatReaderTest.cs プロジェクト: reftel/arkade5
        public void ShouldReadRealWorldNoark4Xml()
        {
            var sb = new StringBuilder();

            sb.AppendLine(@"<?xml version=""1.0"" encoding=""ISO-8859-1""?>");
            sb.AppendLine(@"<!DOCTYPE AVGRADKODE.TAB SYSTEM ""AVGRKODE.DTD"">");
            sb.AppendLine(@"<AVGRADKODE.TAB VERSJON=""1.0"">");
            sb.AppendLine(@"   <AVGRADKODE>");
            sb.AppendLine(@"      <AG.KODE>A</AG.KODE>");
            sb.AppendLine(@"      <AG.BETEGN>Avgraderes ved funksjon kjørt etter avgraderingstidspunkt</AG.BETEGN>");
            sb.AppendLine(@"   </AVGRADKODE>");
            sb.AppendLine(@"   <AVGRADKODE>");
            sb.AppendLine(@"      <AG.KODE>G</AG.KODE>");
            sb.AppendLine(@"      <AG.BETEGN>Gjennomgås for vurdering ved avgraderingstidspunkt</AG.BETEGN>");
            sb.AppendLine(@"   </AVGRADKODE>");
            sb.AppendLine(@"   <AVGRADKODE>");
            sb.AppendLine(@"      <AG.KODE>S</AG.KODE>");
            sb.AppendLine(@"      <AG.BETEGN>Sperrefrist, avgraderes automatisk på avgraderingsdato</AG.BETEGN>");
            sb.AppendLine(@"   </AVGRADKODE>");
            sb.AppendLine(@"   <AVGRADKODE>");
            sb.AppendLine(@"      <AG.KODE>AU</AG.KODE>");
            sb.AppendLine(@"      <AG.BETEGN>Avgradering utført</AG.BETEGN>");
            sb.AppendLine(@"   </AVGRADKODE>");
            sb.AppendLine(@"   <AVGRADKODE>");
            sb.AppendLine(@"      <AG.KODE>U</AG.KODE>");
            sb.AppendLine(@"      <AG.BETEGN>Unntatt fra automatisk avgradering</AG.BETEGN>");
            sb.AppendLine(@"   </AVGRADKODE>");
            sb.AppendLine(@"</AVGRADKODE.TAB>");

            XmlReader reader     = XmlReaderUtil.Read(sb.ToString());
            string    recordName = "AVGRADKODE";

            XmlFormatReader xmlFormatReader = new XmlFormatReader(reader, recordName);

            xmlFormatReader.HasNext().Should().BeTrue();
            xmlFormatReader.Next()
            .Should()
            .Equal(new Dictionary <string, string>
            {
                { "AG.KODE", "A" },
                { "AG.BETEGN", "Avgraderes ved funksjon kjørt etter avgraderingstidspunkt" }
            });
            xmlFormatReader.HasNext().Should().BeTrue();
            xmlFormatReader.Next()
            .Should()
            .Equal(new Dictionary <string, string>
            {
                { "AG.KODE", "G" },
                { "AG.BETEGN", "Gjennomgås for vurdering ved avgraderingstidspunkt" }
            });
            xmlFormatReader.HasNext().Should().BeTrue();
            xmlFormatReader.Next()
            .Should()
            .Equal(new Dictionary <string, string>
            {
                { "AG.KODE", "S" },
                { "AG.BETEGN", "Sperrefrist, avgraderes automatisk på avgraderingsdato" }
            });
            xmlFormatReader.HasNext().Should().BeTrue();
            xmlFormatReader.Next()
            .Should()
            .Equal(new Dictionary <string, string> {
                { "AG.KODE", "AU" }, { "AG.BETEGN", "Avgradering utført" }
            });
            xmlFormatReader.HasNext().Should().BeTrue();
            xmlFormatReader.Next()
            .Should()
            .Equal(new Dictionary <string, string>
            {
                { "AG.KODE", "U" },
                { "AG.BETEGN", "Unntatt fra automatisk avgradering" }
            });
            xmlFormatReader.HasNext().Should().BeFalse();
        }
コード例 #21
0
        /// <summary>
        /// Runs a single test. Error messages are displayed to Console.Error, and the return value indicates
        /// general success/failure.
        /// </summary>
        public static bool RunTest(string typeName, string file, byte[] inputData)
        {
            WriteLine("Benchmarking {0} with file {1}", typeName, file);
            IMessage defaultMessage;

            try
            {
                defaultMessage = MessageUtil.GetDefaultMessage(typeName);
            }
            catch (ArgumentException e)
            {
                Console.Error.WriteLine(e.Message);
                return(false);
            }
            try
            {
                ExtensionRegistry registry = ExtensionRegistry.Empty;
                inputData = inputData ?? File.ReadAllBytes(file);
                MemoryStream inputStream   = new MemoryStream(inputData);
                ByteString   inputString   = ByteString.CopyFrom(inputData);
                IMessage     sampleMessage =
                    defaultMessage.WeakCreateBuilderForType().WeakMergeFrom(inputString, registry).WeakBuild();

                IDictionary <string, object> dictionary = null;
                byte[] jsonBytes = null, xmlBytes = null; /*no pun intended, well... maybe for xml*/
                if (OtherFormats)
                {
                    using (MemoryStream temp = new MemoryStream())
                    {
                        XmlFormatWriter.CreateInstance(temp).WriteMessage(sampleMessage);
                        xmlBytes = temp.ToArray();
                    }
                    using (MemoryStream temp = new MemoryStream())
                    {
                        JsonFormatWriter.CreateInstance(temp).WriteMessage(sampleMessage);
                        jsonBytes = temp.ToArray();
                    }
                    dictionary = new Dictionary <string, object>(StringComparer.Ordinal);
                    new DictionaryWriter(dictionary).WriteMessage(sampleMessage);
                }

                //Serializers
                if (!FastTest)
                {
                    RunBenchmark("Serialize to byte string", inputData.Length, () => sampleMessage.ToByteString());
                }
                RunBenchmark("Serialize to byte array", inputData.Length, () => sampleMessage.ToByteArray());
                if (!FastTest)
                {
                    RunBenchmark("Serialize to memory stream", inputData.Length,
                                 () => sampleMessage.WriteTo(new MemoryStream()));
                }

                if (OtherFormats)
                {
                    RunBenchmark("Serialize to xml", xmlBytes.Length,
                                 () =>
                    {
                        XmlFormatWriter.CreateInstance(new MemoryStream(), Encoding.UTF8).WriteMessage(sampleMessage);
                    });
                    RunBenchmark("Serialize to json", jsonBytes.Length,
                                 () => { JsonFormatWriter.CreateInstance().WriteMessage(sampleMessage); });
                    RunBenchmark("Serialize to json via xml", jsonBytes.Length,
                                 () =>
                                 XmlFormatWriter.CreateInstance(
                                     JsonReaderWriterFactory.CreateJsonWriter(new MemoryStream(), Encoding.UTF8))
                                 .SetOptions(XmlWriterOptions.OutputJsonTypes)
                                 .WriteMessage(sampleMessage)
                                 );

                    RunBenchmark("Serialize to dictionary", sampleMessage.SerializedSize,
                                 () => new DictionaryWriter().WriteMessage(sampleMessage));
                }
                //Deserializers
                if (!FastTest)
                {
                    RunBenchmark("Deserialize from byte string", inputData.Length,
                                 () => defaultMessage.WeakCreateBuilderForType()
                                 .WeakMergeFrom(inputString, registry)
                                 .WeakBuild()
                                 );
                }

                RunBenchmark("Deserialize from byte array", inputData.Length,
                             () => defaultMessage.WeakCreateBuilderForType()
                             .WeakMergeFrom(CodedInputStream.CreateInstance(inputData), registry)
                             .WeakBuild()
                             );
                if (!FastTest)
                {
                    RunBenchmark("Deserialize from memory stream", inputData.Length,
                                 () =>
                    {
                        inputStream.Position = 0;
                        defaultMessage.WeakCreateBuilderForType().WeakMergeFrom(
                            CodedInputStream.CreateInstance(inputStream), registry)
                        .WeakBuild();
                    });
                }

                if (OtherFormats)
                {
                    RunBenchmark("Deserialize from xml", xmlBytes.Length,
                                 () =>
                                 XmlFormatReader.CreateInstance(xmlBytes).Merge(
                                     defaultMessage.WeakCreateBuilderForType()).WeakBuild());
                    RunBenchmark("Deserialize from json", jsonBytes.Length,
                                 () =>
                                 JsonFormatReader.CreateInstance(jsonBytes).Merge(
                                     defaultMessage.WeakCreateBuilderForType()).WeakBuild());
                    RunBenchmark("Deserialize from json via xml", jsonBytes.Length,
                                 () =>
                                 XmlFormatReader.CreateInstance(JsonReaderWriterFactory.CreateJsonReader(jsonBytes, XmlDictionaryReaderQuotas.Max))
                                 .SetOptions(XmlReaderOptions.ReadNestedArrays).Merge(
                                     defaultMessage.WeakCreateBuilderForType()).WeakBuild());

                    RunBenchmark("Deserialize from dictionary", sampleMessage.SerializedSize,
                                 () =>
                                 new DictionaryReader(dictionary).Merge(defaultMessage.WeakCreateBuilderForType()).
                                 WeakBuild());
                }
                WriteLine(String.Empty);
                return(true);
            }
            catch (Exception e)
            {
                Console.Error.WriteLine("Error: {0}", e.Message);
                Console.Error.WriteLine();
                Console.Error.WriteLine("Detailed exception information: {0}", e);
                return(false);
            }
        }