public void EnoughData()
        {
            ParserContext parserContext = new ParserContext(
                ParserContext.DefaultBufferSize);
            VariableLengthManager lengthManager = new VariableLengthManager(1,
                                                                            480, StringLengthEncoder.GetInstance(480));

            parserContext.Write("0");
            Assert.IsFalse(lengthManager.EnoughData(ref parserContext));
            parserContext.Write("0");
            Assert.IsFalse(lengthManager.EnoughData(ref parserContext));
            parserContext.Write("9Some data");
            Assert.IsTrue(lengthManager.EnoughData(ref parserContext));
        }
        public void Constructor()
        {
            VariableLengthManager lengthManager = new VariableLengthManager(5,
                                                                            40, StringLengthEncoder.GetInstance(2));

            Assert.IsTrue(lengthManager.MinimumLength == 5);
            Assert.IsTrue(lengthManager.MaximumLength == 40);
            Assert.IsTrue(lengthManager.LengthEncoder ==
                          StringLengthEncoder.GetInstance(2));

            lengthManager = new VariableLengthManager(20,
                                                      20, StringLengthEncoder.GetInstance(3));

            Assert.IsTrue(lengthManager.MinimumLength == 20);
            Assert.IsTrue(lengthManager.MaximumLength == 20);
            Assert.IsTrue(lengthManager.LengthEncoder ==
                          StringLengthEncoder.GetInstance(3));

            try {
                lengthManager = new VariableLengthManager(-1,
                                                          40, StringLengthEncoder.GetInstance(2));
                Assert.Fail();
            } catch (ArgumentOutOfRangeException e) {
                Assert.IsTrue(e.ParamName.Equals("minimumLength"));
            }

            try {
                lengthManager = new VariableLengthManager(50,
                                                          40, StringLengthEncoder.GetInstance(2));
                Assert.Fail();
            } catch (ArgumentOutOfRangeException e) {
                Assert.IsTrue(e.ParamName.Equals("minimumLength"));
            }

            try {
                lengthManager = new VariableLengthManager(10,
                                                          20, null);
                Assert.Fail();
            } catch (ArgumentNullException e) {
                Assert.IsTrue(e.ParamName.Equals("lengthEncoder"));
            }
        }
        public void WriteLength()
        {
            FormatterContext formatterContext = new FormatterContext(
                FormatterContext.DefaultBufferSize);
            VariableLengthManager lengthManager = new VariableLengthManager(8,
                                                                            24, StringLengthEncoder.GetInstance(999));

            lengthManager.WriteLength(null, 8, 8, ref formatterContext);
            string length = formatterContext.GetDataAsString();

            Assert.IsTrue(length.Equals("008"));
            formatterContext.Clear();

            lengthManager.WriteLength(null, 15, 15, ref formatterContext);
            length = formatterContext.GetDataAsString();

            Assert.IsTrue(length.Equals("015"));
            formatterContext.Clear();

            lengthManager.WriteLength(null, 24, 24, ref formatterContext);
            length = formatterContext.GetDataAsString();

            Assert.IsTrue(length.Equals("024"));

            try {
                lengthManager.WriteLength(null, 1, 1, ref formatterContext);
                Assert.Fail();
            } catch (ArgumentOutOfRangeException e) {
                Assert.IsTrue(e.ParamName.Equals("dataLength"));
            }

            try {
                lengthManager.WriteLength(null, 90, 90, ref formatterContext);
                Assert.Fail();
            } catch (ArgumentOutOfRangeException e) {
                Assert.IsTrue(e.ParamName.Equals("dataLength"));
            }
        }
        public void ReadLength()
        {
            ParserContext parserContext = new ParserContext(
                ParserContext.DefaultBufferSize);
            VariableLengthManager lengthManager = new VariableLengthManager(120,
                                                                            180, StringLengthEncoder.GetInstance(999));

            parserContext.Write("120");
            int length = lengthManager.ReadLength(ref parserContext);

            Assert.IsTrue(length == 120);

            parserContext.Write("150");
            length = lengthManager.ReadLength(ref parserContext);

            Assert.IsTrue(length == 150);

            parserContext.Write("180");
            length = lengthManager.ReadLength(ref parserContext);

            Assert.IsTrue(length == 180);

            parserContext.Write("005");
            try {
                lengthManager.ReadLength(ref parserContext);
                Assert.Fail();
            } catch (MessagingException) {
            }

            parserContext.Clear();
            parserContext.Write("999");
            try {
                lengthManager.ReadLength(ref parserContext);
                Assert.Fail();
            } catch (MessagingException) {
            }
        }