public void TestGetNodeDollarYear()
        {
            var content =
                System.IO.File.ReadAllText(TestAssembly.TestDataDir + @"\ExampleSecXbrl.xml");
            var testSubject = SecXbrlInstanceFile.GetXmlAndNsMgr(content);
            var testResult  = SecXbrlInstanceFile.GetNodeDollarYear(testSubject.Item1, "//us-gaap:SalesRevenueServicesNet", testSubject.Item2);

            Assert.IsNotNull(testResult);
            Assert.IsTrue(testResult.Any());

            foreach (var tr in testResult)
            {
                System.Console.WriteLine(tr);
            }

            content =
                System.IO.File.ReadAllText(TestAssembly.TestDataDir + @"\ExampleSecXbrl2.xml");
            testSubject = SecXbrlInstanceFile.GetXmlAndNsMgr(content);
            testResult  = SecXbrlInstanceFile.GetNodeDollarYear(testSubject.Item1, "//us-gaap:Revenues", testSubject.Item2);
            Assert.IsNotNull(testResult);
            Assert.IsTrue(testResult.Any());

            foreach (var tr in testResult)
            {
                System.Console.WriteLine(tr);
            }
        }
        public void TestGetXmlAndNsMgr()
        {
            var content =
                System.IO.File.ReadAllText(TestAssembly.TestDataDir + @"\ExampleSecXbrl.xml");
            var testResult = SecXbrlInstanceFile.GetXmlAndNsMgr(content);

            Assert.IsNotNull(testResult);
            Assert.IsNotNull(testResult.Item1);
            Assert.IsNotNull(testResult.Item2);
            Assert.AreEqual("http://xbrl.sec.gov/dei/2014-01-31",
                            testResult.Item2.LookupNamespace(SecXbrlInstanceFile.XmlNs.DEI));
            Assert.AreEqual("http://fasb.org/us-gaap/2015-01-31",
                            testResult.Item2.LookupNamespace(SecXbrlInstanceFile.XmlNs.US_GAAP));
            Assert.AreEqual("http://www.xbrl.org/2003/instance",
                            testResult.Item2.LookupNamespace(SecXbrlInstanceFile.XmlNs.ROOTNS));

            content    = System.IO.File.ReadAllText(TestAssembly.TestDataDir + @"\ExampleSecXbrl2.xml");
            testResult = SecXbrlInstanceFile.GetXmlAndNsMgr(content);
            Assert.IsNotNull(testResult);
            Assert.IsNotNull(testResult.Item1);
            Assert.IsNotNull(testResult.Item2);
            Assert.AreEqual("http://xbrl.sec.gov/dei/2014-01-31",
                            testResult.Item2.LookupNamespace(SecXbrlInstanceFile.XmlNs.DEI));
            Assert.AreEqual("http://fasb.org/us-gaap/2015-01-31",
                            testResult.Item2.LookupNamespace(SecXbrlInstanceFile.XmlNs.US_GAAP));
            Assert.AreEqual("http://www.xbrl.org/2003/instance",
                            testResult.Item2.LookupNamespace(SecXbrlInstanceFile.XmlNs.ROOTNS));
        }
        public void TestGetEmbeddedHtmlContentFromInnerText()
        {
            var testXmlFile = TestAssembly.TestDataDir + @"\ExampleSecXbrl4.xml";
            var xml         = new XmlDocument();

            xml.LoadXml(System.IO.File.ReadAllText(testXmlFile));
            var testResult = SecXbrlInstanceFile.GetEmbeddedHtmlContentFromInnerText(xml, "//*[contains(text(),' style=')]");

            Assert.IsNotNull(testResult);
            Assert.IsTrue(testResult.Any());
        }
        public void TestGetTextBlocks()
        {
            var content =
                System.IO.File.ReadAllText(TestAssembly.TestDataDir + @"\ExampleSecXbrl3.xml");
            var testSubject = new SecXbrlInstanceFile(new Uri("http://localhost"));
            var testResults = testSubject.GetTextBlocks(content);

            Assert.IsNotNull(testResults);
            Assert.AreNotEqual(0, testResults.Count());

            var examples = testResults.Take(3);

            foreach (var eg in examples)
            {
                Console.Write(eg);
            }
        }
        public void TestTryGetYear()
        {
            var content =
                System.IO.File.ReadAllText(TestAssembly.TestDataDir + @"\ExampleSecXbrl.xml");
            var testSubject = SecXbrlInstanceFile.GetXmlAndNsMgr(content);
            int testResultOut;
            var testResult = SecXbrlInstanceFile.TryGetYear("FD2013Q4YTD", testSubject.Item1, testSubject.Item2, out testResultOut);

            Assert.IsTrue(testResult);
            Assert.AreEqual(2013, testResultOut);

            content =
                System.IO.File.ReadAllText(TestAssembly.TestDataDir + @"\ExampleSecXbrl2.xml");
            testSubject = SecXbrlInstanceFile.GetXmlAndNsMgr(content);
            testResult  = SecXbrlInstanceFile.TryGetYear("FYCurrentYearM12", testSubject.Item1, testSubject.Item2, out testResultOut);
            Assert.IsTrue(testResult);
            Assert.AreEqual(2015, testResultOut);
        }
        public void TestTryParseDollar()
        {
            var xml = new System.Xml.XmlDocument();

            xml.LoadXml(@"
            <xbrl>
                <SalesRevenueServicesNet contextRef=""FD2013Q4YTD"" decimals=""-3"" id=""Fact-15D9A15CC4357F62E26EAAD1EC523789"" unitRef=""usd"">1668929000</SalesRevenueServicesNet>
            </xbrl>");

            var testInput = xml.SelectSingleNode("//SalesRevenueServicesNet");

            Assert.IsNotNull(testInput);
            var testResultOut = 0M;
            var testResult    = SecXbrlInstanceFile.TryParseDollar(testInput, out testResultOut);

            Assert.IsTrue(testResult);
            Assert.AreEqual(1668929M, testResultOut);
        }
        public void TestParseContent()
        {
            var testXmlFile = TestAssembly.TestDataDir + @"\ExampleSecXbrl.xml";
            var testSubject = new SecXbrlInstanceFile(new Uri("http://localhost"));

            var testResult = testSubject.ParseContent(System.IO.File.ReadAllText(testXmlFile));

            Assert.IsNotNull(testResult);
            Assert.IsTrue(testResult.Any());

            var testResultItem = testResult.First();

            Assert.IsFalse(testResultItem.IsAmended);
            Assert.AreNotEqual(0, testResultItem.EndOfYear);
            Assert.AreEqual("0000768899", testResultItem.Cik);
            Assert.AreEqual(42029009, testResultItem.NumOfShares);
            Assert.AreEqual("TrueBlue, Inc.", testResultItem.Name);
            Assert.AreEqual("TBI", testResultItem.Ticker);

            Assert.AreNotEqual(0, testResultItem.Assets.Count);

            foreach (var asset in testResultItem.Assets)
            {
                var tAsset = asset as Tuple <int, decimal>;
                Assert.IsNotNull(tAsset);
                if (tAsset.Item1 == 2014)
                {
                    Assert.AreEqual(1066671M, tAsset.Item2);
                }
                else if (tAsset.Item1 == 2015)
                {
                    Assert.AreEqual(1266835M, tAsset.Item2);
                }
            }

            Assert.AreNotEqual(0, testResultItem.Liabilities.Count);
            foreach (var lia in testResultItem.Liabilities)
            {
                var tLia = lia as Tuple <int, decimal>;
                Assert.IsNotNull(tLia);
                if (tLia.Item1 == 2014)
                {
                    Assert.AreEqual(597337M, tLia.Item2);
                }
                if (tLia.Item1 == 2015)
                {
                    Assert.AreEqual(731262M, tLia.Item2);
                }
            }

            Assert.AreNotEqual(0, testResultItem.NetIncome.Count);
            foreach (var ni in testResultItem.NetIncome)
            {
                var tNi = ni as Tuple <int, decimal>;
                Assert.IsNotNull(tNi);
                if (tNi.Item1 == 2013)
                {
                    Assert.AreEqual(44924M, tNi.Item2);
                }
                if (tNi.Item1 == 2014)
                {
                    Assert.AreEqual(65675M, tNi.Item2);
                }
                if (tNi.Item1 == 2015)
                {
                    Assert.AreEqual(71247M, tNi.Item2);
                }
            }

            Assert.AreNotEqual(0, testResultItem.OperatingIncome.Count);
            foreach (var oi in testResultItem.OperatingIncome)
            {
                var tOi = oi as Tuple <int, decimal>;
                Assert.IsNotNull(tOi);
                if (tOi.Item1 == 2013)
                {
                    Assert.AreEqual(59583M, tOi.Item2);
                }
                if (tOi.Item1 == 2014)
                {
                    Assert.AreEqual(81728M, tOi.Item2);
                }
                if (tOi.Item1 == 2015)
                {
                    Assert.AreEqual(97842M, tOi.Item2);
                }
            }

            Assert.AreNotEqual(0, testResultItem.Revenue.Count);
            foreach (var r in testResultItem.Revenue)
            {
                var tR = r as Tuple <int, decimal>;
                Assert.IsNotNull(tR);
                if (tR.Item1 == 2013)
                {
                    Assert.AreEqual(1668929M, tR.Item2);
                }
                if (tR.Item1 == 2014)
                {
                    Assert.AreEqual(2174045M, tR.Item2);
                }
                if (tR.Item1 == 2015)
                {
                    Assert.AreEqual(2695680M, tR.Item2);
                }
            }
        }