public void TestGetPdfPlainText()
        {
            const string pathtopdf = @"TestFiles\TestSPCParser\WC500067567.pdf";

            var pt = SPCParser.GetPlainText(pathtopdf);

            Assert.IsFalse(string.IsNullOrWhiteSpace(pt), "Plain text null or whitespace");
        }
        public void TestBtvPurParsing()
        {
            const string pathtopdf = @"TestFiles\TestSPCParser\btvpur-alsap-8-epar-product-information_en.pdf";
            var          sp        = SPCParser.GetTargetSpeciesFromPdf(pathtopdf);

            Assert.IsNotNull(sp, "Nothing returned");
            Assert.IsTrue(sp.Length == 2, $"Returned {sp.Length} species instead of 2");
            Assert.IsTrue(sp.Intersect(new[] { "sheep", "cattle" }).Count() == 2, $"Returned {string.Join(',',sp)} instead of cattle,sheep");
        }
        public void TestGetTargetSpeciesFromPDF()
        {
            const string pathtopdf = @"TestFiles\TestSPCParser\WC500067567.pdf";
            var          sp        = SPCParser.GetTargetSpeciesFromPdf(pathtopdf);

            Assert.IsNotNull(sp, "Nothing returned");
            Assert.IsTrue(sp.Length == 1, $"Returned {sp.Length} species instead of 1");
            Assert.IsTrue(sp[0].Equals("horse", StringComparison.InvariantCultureIgnoreCase),
                          $"returned: {sp[0]} instead of horse");
        }
        public void TestIbaflinParsing()
        {
            const string pathToPdf = @"TestFiles\TestSPCParser\WC500064198.pdf";
            var          ts        = SPCParser.GetTargetSpeciesFromMultiProductPdf(pathToPdf);

            Assert.IsTrue(ts.Keys.Count == 6, $"6 product names should be returned: {ts.Keys.Count}");
            Assert.IsTrue(ts.All(k => k.Value != null && k.Value.Length > 0), "Empty target species array returned");
            Assert.IsFalse(ts.Values.SelectMany(v => v).Any(string.IsNullOrWhiteSpace), "Blank target species returned");
            Assert.IsTrue(ts.Where(kv => kv.Key.Contains("and")).All(kv => kv.Value.Length > 1), "multi-species product has single species");
        }
        public void TestGetTargetSpeciesFromMultiPDF()
        {
            const string pathtopdf = @"TestFiles\TestSPCParser\WC500065777.pdf";
            var          sp        = SPCParser.GetTargetSpeciesFromMultiProductPdf(pathtopdf);

            Assert.IsNotNull(sp, "null dictionary returned");
            Assert.IsFalse(sp.Count == 0, "empty dictionary returned");
            Assert.IsTrue(sp.ContainsKey("Metacam 20 mg/ml solution for injection for cattle, pigs and horses"),
                          "product not found");
            Assert.IsTrue(
                sp["Metacam 20 mg/ml solution for injection for cattle, pigs and horses"]
                .Intersect(new[] { "cattle", "pigs", "horses" }).Count() == 3,
                $"Unexpected species list returned:{string.Join(',', sp["Metacam 20 mg/ml solution for injection for cattle, pigs and horses"])}");
        }
        public void TestPurevaxRcch()
        {
            var ep = new ExpiredProduct
            {
                Name     = "purevax rcch",
                SPC_Link = "ema.europa.eu"
            };
            var spc = VMDPIDFactory.GetSpc(ep).Result;
            var sp  = SPCParser.GetTargetSpeciesFromPdf(spc);

            Assert.IsNotNull(sp, "Nothing returned");
            Assert.IsTrue(sp.Length == 1, $"Returned {sp.Length} species instead of 1");
            Assert.IsTrue(sp.Intersect(new[] { "cats" }).Count() == 1, $"Returned {string.Join(',', sp)} instead of cats");
        }
        public void TestBTVpur()
        {
            var ep = new ExpiredProduct
            {
                Name     = "btvpur alsap 8, suspension for injection",
                SPC_Link = "ema.europa.eu"
            };
            var spc = VMDPIDFactory.GetSpc(ep).Result;
            var sp  = SPCParser.GetTargetSpeciesFromPdf(spc);

            Assert.IsNotNull(sp, "Nothing returned");
            Assert.IsTrue(sp.Length == 2, $"Returned {sp.Length} species instead of 2");
            Assert.IsTrue(sp.Intersect(new[] { "sheep", "cattle" }).Count() == 2, $"Returned {string.Join(',', sp)} instead of cattle,sheep");
        }
        public void TestTargetSpeciesExtractionFromDocOldFormat()
        {
            const string pathtospc = @"TestFiles\TestSPCParser\SPC_124816.doc";

            var expectedoutput = new[]
            {
                "cats"
            };
            var pathtodocx        = WordConverter.ConvertDocToDocx(pathtospc);
            var ts                = SPCParser.GetTargetSpecies(pathtodocx);
            var intersectioncount = ts.Intersect(expectedoutput).Count();

            Assert.IsTrue(intersectioncount == expectedoutput.Length,
                          $"Intersection count:{intersectioncount}, expected {expectedoutput.Length}");
        }
        public void TestTargetSpeciesExtraction()
        {
            const string pathtospc = @"TestFiles\TestSPCParser\SPC_91079.docx";

            var expectedoutput = new[]
            {
                "horses", "ponies", "donkies", "foals over four weeks of age"
            };

            var ts = SPCParser.GetTargetSpecies(pathtospc);
            var intersectioncount = ts.Intersect(expectedoutput).Count();

            Assert.IsTrue(intersectioncount == expectedoutput.Length,
                          $"Intersection count:{intersectioncount}, expected {expectedoutput.Length}");
        }
        public void TestTargetSpeciesExtractionLocal()
        {
            var pid = VMDPIDFactory.GetVmdPid().Result;

            foreach (var ep in pid.ExpiredProducts.Where(ep => !EPARTools.IsEPAR(ep.SPC_Link)))
            {
                var spc = VMDPIDFactory.GetSpc(ep).Result;
                Debug.WriteLine(spc);
                spc = spc.ToLowerInvariant().EndsWith(".doc") ? WordConverter.ConvertDocToDocx(spc) : spc;
                var ts = SPCParser.GetTargetSpecies(spc);
                Assert.IsNotNull(ts, $"null ts for {ep.Name}, {spc}");
                Assert.IsTrue(ts.Any(), $"empty ts for {ep.Name}, {spc}");
                Assert.IsFalse(ts.Any(string.IsNullOrWhiteSpace), $"blank species for {ep.Name}, {spc}");
            }
        }