public void ScreenAnalyzer_NoPatternMatch_ScreenIsUploaded()
        {
            var matcher = new TestMatcher(true);

            var            dataBase = new DataProvider();
            ScreenAnalyzer sa       = new ScreenAnalyzer(dataBase, matcher);

            var projectDir = TestContext.CurrentContext.TestDirectory;

            int end = projectDir.LastIndexOf("bin");

            projectDir = projectDir.Substring(0, end);

            var picturePath = projectDir + @"\TestResources\2.jpg";

            Bitmap pic = new Bitmap(picturePath);

            var expected = new Dictionary <string, bool>()
            {
                { "bmw", false },
                { "ryanair", false }
            };

            sa.AnalyzeScreenAsync(pic);

            var result = dataBase.GetUserActivity();

            var dict3 = result.Where(entry => expected[entry.Key] != entry.Value)
                        .ToDictionary(entry => entry.Key, entry => entry.Value);

            //if it is 0 there is match between both dictionaries
            Assert.That(dict3.Count, Is.Zero);

            var comparisonResult = ByteArrayCompare(BitmapByteConverter.ConvertBitmapToByteArray(pic), dataBase.getScreen());

            Assert.That(comparisonResult, Is.True);
        }
        private void RunLiveCapture()
        {
            Bitmap img = null;

            byte[] data = new byte[img_w * img_h * 3];
            int    living_status = 0, face_rect_x = 0, face_rect_y = 0, face_rect_w = 0, face_rect_h = 0;
            BitmapByteConverter converter = new BitmapByteConverter();

            isRunning = true;
            Stopwatch  stopWatch = new Stopwatch();
            Graphics   img_graphic;
            Pen        face_rect_pen   = new Pen(Color.Red);
            SolidBrush face_text_brush = new SolidBrush(Color.Black);
            Point      face_rect_point = new Point();
            Size       face_rect_size  = new Size();

            while (isRunning)
            {
                stopWatch.Start();
                VisionLiveCapture(data, ref living_status, ref face_rect_x, ref face_rect_y, ref face_rect_w, ref face_rect_h);

                face_rect_point.X     = face_rect_x;
                face_rect_point.Y     = face_rect_y;
                face_rect_size.Width  = face_rect_w;
                face_rect_size.Height = face_rect_h;

                img         = converter.ByteToBitmap(data, img_w, img_h);
                img_graphic = Graphics.FromImage(img);

                // show result
                if (living_status == 1)
                {
                    face_rect_pen.Color   = Color.Green;
                    face_text_brush.Color = Color.Green;
                    img_graphic.DrawRectangle(face_rect_pen, new Rectangle(face_rect_point, face_rect_size));
                    img_graphic.DrawString("Living", new Font("Courier New", 12), face_text_brush, face_rect_point);
                }
                else if (living_status == 0)
                {
                    face_rect_pen.Color   = Color.Red;
                    face_text_brush.Color = Color.Red;
                    img_graphic.DrawRectangle(face_rect_pen, new Rectangle(face_rect_point, face_rect_size));
                    img_graphic.DrawString("Fake", new Font("Courier New", 12), face_text_brush, face_rect_point);
                }
                else
                {
                    face_rect_pen.Color   = Color.Blue;
                    face_text_brush.Color = Color.Blue;
                    img_graphic.DrawString("Please put your face\nat the center of the screen.", new Font("Courier New", 15), face_text_brush, face_rect_point);
                }
                liveCaptureDisp.BackgroundImage = img;
                liveCaptureDisp.Invalidate();

                stopWatch.Stop();
                if (!isTesting && testProc.IsAlive)
                {
                    statusLabel.Text = stopWatch.ElapsedMilliseconds.ToString() + "ms";
                }
                stopWatch.Reset();

                Thread.Sleep(10);
            }
        }