public void Counting(string fileName, Dictionary <string, int> stencils, int widthImage)
        {
            var metaData      = new MetadataStorage();
            var imageMetaData = new ImageMetadata();

            CountImages++;

            var xmlFile = Path.Combine(Path.ChangeExtension(fileName, "xml"));

            if (File.Exists(xmlFile))
            {
                imageMetaData = metaData.LoadMetadata(xmlFile);

                if (imageMetaData.HumanChecked)
                {
                    Marked++;
                }
                else
                {
                    Unplaced++;
                }

                if (imageMetaData.Brightness == ImageBrightness.Light)
                {
                    CountLightImages++;
                }
                else
                {
                    CountDarkImages++;
                }

                if (imageMetaData.Plates == null)
                {
                    return;
                }

                switch (imageMetaData.Plates.Length)
                {
                case 1:
                    CountOneNumber++;
                    break;

                case 2:
                    CountTwoNumber++;
                    break;

                case 3:
                    CountMoreTwoNumber++;
                    break;
                }

                CountingInfoAboutPlate(imageMetaData.Plates, stencils, widthImage);
            }
            else
            {
                Unplaced++;
            }
        }
        public void SaveAndLoadMetadata()
        {
            var filename = Path.Combine(TestContext.CurrentContext.TestDirectory, "sample1.xml");
            var storage  = new MetadataStorage();
            var metadata = new ImageMetadata()
            {
                Description = "Описание",
                Brightness  = ImageBrightness.Dark,
                DongleId    = "1000DF",
                Plates      = new[]
                {
                    new PlateMetadata()
                    {
                        Number           = "T288EC98",
                        Quality          = PlateQuality.Low,
                        Stencil          = "RU_N01_a000aa00",
                        Confidence       = 1,
                        PlateDataSymbols = new[]
                        {
                            new PlateDataSymbol()
                            {
                                Value = "1"
                            },
                            new PlateDataSymbol()
                            {
                                Value = "E", Confidence = 0.5, Coordinates = new[] { new Point(11, 45) }
                            },
                        },
                    },
                    new PlateMetadata()
                    {
                        Number           = "C534YX177",
                        Quality          = PlateQuality.Normal,
                        Stencil          = "RU_N02_a000aa100",
                        PlateDataSymbols = new[]
                        {
                            new PlateDataSymbol()
                            {
                                Value = "A", Confidence = 0,
                            },
                            new PlateDataSymbol()
                            {
                                Value = "D", Confidence = 1
                            },
                        },
                    },
                },
            };

            metadata.Plates[0].Coordinates[0] = new Point(111, 45);


            storage.SaveMetadata(filename, metadata);

            var loadedMetadata = storage.LoadMetadata(filename);

            Assert.That(loadedMetadata.HumanChecked, Is.EqualTo(metadata.HumanChecked));
            Assert.That(loadedMetadata.Brightness, Is.EqualTo(metadata.Brightness));
            Assert.That(loadedMetadata.Description, Is.EqualTo(metadata.Description));
            Assert.That(loadedMetadata.DongleId, Is.EqualTo(metadata.DongleId));
            Assert.That(loadedMetadata.Plates.Length, Is.EqualTo(metadata.Plates.Length));
            Assert.That(loadedMetadata.Plates[0].Number, Is.EqualTo(metadata.Plates[0].Number));
            Assert.That(loadedMetadata.Plates[0].Stencil, Is.EqualTo(metadata.Plates[0].Stencil));
            Assert.That(loadedMetadata.Plates[0].Quality, Is.EqualTo(metadata.Plates[0].Quality));
            Assert.That(loadedMetadata.Plates[0].Confidence, Is.EqualTo(metadata.Plates[0].Confidence));
            Assert.That(loadedMetadata.Plates[0].Coordinates[0], Is.EqualTo(metadata.Plates[0].Coordinates[0]));
            Assert.That(loadedMetadata.Plates[0].PlateDataSymbols[0].Value, Is.EqualTo(metadata.Plates[0].PlateDataSymbols[0].Value));
            Assert.That(loadedMetadata.Plates[0].PlateDataSymbols[0].Confidence, Is.EqualTo(metadata.Plates[0].PlateDataSymbols[0].Confidence));
            Assert.That(loadedMetadata.Plates[0].PlateDataSymbols[0].Coordinates[0], Is.EqualTo(metadata.Plates[0].PlateDataSymbols[0].Coordinates[0]));
        }