public void Parse()
        {
            ParserContext parserContext = new ParserContext(
                ParserContext.DefaultBufferSize);
            BitMapFieldFormatter bitmapFormatter = new BitMapFieldFormatter(
                0, 1, 64, HexadecimalBinaryEncoder.GetInstance());

            BitMapField bitmap = ( BitMapField)bitmapFormatter.Parse(
                ref parserContext);

            Assert.IsNull(bitmap);
            parserContext.Write("12082020");
            bitmap = ( BitMapField)bitmapFormatter.Parse(ref parserContext);
            Assert.IsTrue(parserContext.DataLength == 8);
            Assert.IsNull(bitmap);
            parserContext.Write("10CA118");
            bitmap = ( BitMapField)bitmapFormatter.Parse(ref parserContext);
            Assert.IsTrue(parserContext.DataLength == 15);
            Assert.IsNull(bitmap);
            parserContext.Write("3");
            bitmap = ( BitMapField)bitmapFormatter.Parse(ref parserContext);
            Assert.IsTrue(parserContext.DataLength == 0);
            Assert.IsNotNull(bitmap);

            byte[] referenceBitmap = { 0x12, 0x08, 0x20, 0x20, 0x10, 0xCA, 0x11, 0x83 };
            byte[] bitmapValue     = bitmap.GetBytes();

            for (int i = 0; i < bitmapValue.Length; i++)
            {
                Assert.IsTrue(bitmapValue[i] == referenceBitmap[i]);
            }
        }
        public void Constructors()
        {
            BitMapFieldFormatter bitmapFormatter = new BitMapFieldFormatter(
                0, 1, 64, BinaryEncoder.GetInstance());

            Assert.IsTrue(bitmapFormatter.FieldNumber == 0);
            Assert.IsTrue(bitmapFormatter.LowerFieldNumber == 1);
            Assert.IsTrue(bitmapFormatter.UpperFieldNumber == 64);
            Assert.IsTrue(bitmapFormatter.Encoder == BinaryEncoder.GetInstance());
            Assert.IsTrue(bitmapFormatter.Description == string.Empty);

            bitmapFormatter = new BitMapFieldFormatter(
                1, 65, 128, BinaryEncoder.GetInstance(), "Second bitmap");

            Assert.IsTrue(bitmapFormatter.FieldNumber == 1);
            Assert.IsTrue(bitmapFormatter.LowerFieldNumber == 65);
            Assert.IsTrue(bitmapFormatter.UpperFieldNumber == 128);
            Assert.IsTrue(bitmapFormatter.Encoder == BinaryEncoder.GetInstance());
            Assert.IsTrue(bitmapFormatter.Description.Equals("Second bitmap"));

            try {
                bitmapFormatter = new BitMapFieldFormatter(0, 1, 64, null);
                Assert.Fail();
            } catch (ArgumentNullException e) {
                Assert.IsTrue(e.ParamName.Equals("encoder"));
            }

            try {
                bitmapFormatter = new BitMapFieldFormatter(0, -1, 64,
                                                           BinaryEncoder.GetInstance());
                Assert.Fail();
            } catch (ArgumentOutOfRangeException e) {
                Assert.IsTrue(e.ParamName.Equals("lowerFieldNumber"));
            }

            try {
                bitmapFormatter = new BitMapFieldFormatter(0, 65, 64,
                                                           BinaryEncoder.GetInstance());
                Assert.Fail();
            } catch (ArgumentOutOfRangeException e) {
                Assert.IsTrue(e.ParamName.Equals("lowerFieldNumber"));
            }
        }
        public void Format()
        {
            FormatterContext formatterContext = new FormatterContext(
                FormatterContext.DefaultBufferSize);
            BitMapField          bitmap          = new BitMapField(0, 1, 64);
            BitMapFieldFormatter bitmapFormatter = new BitMapFieldFormatter(
                0, 1, 64, HexadecimalBinaryEncoder.GetInstance());

            bitmapFormatter.Format(bitmap, ref formatterContext);
            Assert.IsTrue(formatterContext.GetDataAsString().Equals(
                              "0000000000000000"));
            formatterContext.Clear();

            int[] fields = { 4, 7, 13, 19, 27, 36, 41, 42, 45, 47, 52, 56, 57, 63, 64 };
            for (int i = 0; i < fields.Length; i++)
            {
                bitmap.Set(fields[i], true);
            }
            bitmapFormatter.Format(bitmap, ref formatterContext);
            Assert.IsTrue(formatterContext.GetDataAsString().Equals(
                              "1208202010CA1183"));
        }