public void TestDanbooruEngineParser()
        {
            DanbooruProviderDao pd = DanbooruProviderDao.GetInstance();
            DanbooruXmlEngine   e  = new DanbooruXmlEngine();

            {
                XDocument doc         = XDocument.Load(sourceDanbooruXml);
                var       searchQuery = new DanbooruSearchParam();
                searchQuery.Provider = pd.Read(sourceProvider).Where <DanbooruProvider>(x => x.BoardType == BoardType.Danbooru && x.Name.Contains("danbooru")).First <DanbooruProvider>();
                BindingList <DanbooruPost> result = e.Parse(doc.ToString(), searchQuery);
                Assert.IsNotNull(result);
                Assert.IsNotNull(e.RawData);
                Assert.IsTrue(e.TotalPost == 1021107);
                Assert.IsTrue(result.Count == 20);
                Assert.IsTrue(result[0].PreviewUrl == "http://danbooru.donmai.us/ssd/data/preview/73531fc4dda535ef87e57df633caf756.jpg");
            }

            {
                XDocument doc         = XDocument.Load(sourceYandereXml);
                var       searchQuery = new DanbooruSearchParam();
                searchQuery.Provider = pd.Read(sourceProvider).Where <DanbooruProvider>(x => x.BoardType == BoardType.Danbooru && x.Name.Contains("yande.re")).First <DanbooruProvider>();
                BindingList <DanbooruPost> result = e.Parse(doc.ToString(), searchQuery);
                Assert.IsNotNull(result);
                Assert.IsNotNull(e.RawData);
                Assert.IsTrue(e.TotalPost == 160753);
                Assert.IsTrue(result.Count == 16);
                Assert.IsTrue(result[0].PreviewUrl == "https://yande.re/data/preview/d3/41/d34184030ee19c6e63051967cf135f65.jpg");
            }
        }
        public string GetQueryString(DanbooruSearchParam searchParam)
        {
            var queryStr = "";

            if (BoardType == BoardType.Shimmie2)
            {
                if (Preferred == PreferredMethod.Html)
                {
                    queryStr = new ShimmieHtmlParser().GenerateQueryString(searchParam);
                }
                else
                {
                    queryStr = ShimmieEngine.GetQueryString(this, searchParam);
                }
            }
            else if (Url.Contains("sankakucomplex.com"))
            {
                queryStr = new SankakuComplexParser().GenerateQueryString(searchParam);
            }
            else
            {
                queryStr = DanbooruXmlEngine.GetQueryString(this, searchParam);
            }

            return(queryStr);
        }