Beispiel #1
0
        public void TestUsGaap2009_ci_all()
        {
            //Trace.Listeners.Add( new TextWriterTraceListener(Console.Out) );
            string fileName = TestCommon.FolderRoot + @"XBRLUS-USGAAP-Taxonomies-2009-01-31\ind\ci" + System.IO.Path.DirectorySeparatorChar + "us-gaap-ci-stm-all-2009-01-31.xsd";
            TestUsGaap2008 s = new TestUsGaap2008();

            int errors = 0;
            DateTime start = DateTime.Now;
            if (s.Load(fileName, out errors) != true)
            {
                Assert.Fail((string)s.ErrorList[0]);
            }

            s.Parse(out errors);
            DateTime end = DateTime.Now;
            Console.WriteLine("time taken = {0}", end - start);

            Assert.AreEqual(0, errors, "should not have any errors");
            int countCustomTypeTax = 0;
            foreach (TaxonomyItem ti in s.infos)
            {
                if (ti.HasCustomTypes)
                {
                    countCustomTypeTax++;
                    Console.WriteLine("FOUND CUSTOM TYPES INFO");
                    Console.WriteLine(ti.WebLocation + ti.Location);

                }
            }
            Assert.AreEqual(1, countCustomTypeTax, "Should have only one custom type taxonomy");
            //none of the href references should be web based.
            foreach (RoleRef rr in s.roleRefs.Values)
            {
                Assert.IsFalse(rr.href.StartsWith("http"), "Failed to build the correct href");
                Assert.IsTrue(rr.href.StartsWith(".."), "Failed to build the correct href");
            }

            foreach (RoleType rt in s.roleTypes.Values)
            {
                Assert.IsFalse(rt.GetHref().StartsWith("http"), "Failed to build the correct href");
                Assert.IsTrue(rt.GetHref().StartsWith(".."), "Failed to build the correct href");
            }

            foreach (TaxonomyItem ti in s.TaxonomyItems)
            {
                Assert.IsFalse(ti.Location.StartsWith("http"), "Failed to build the correct href");

            }

            int countRef = 0;
            int countNoRef = 0;

            int noInCal = 0;
            int noNotInCal = 0;
            Hashtable elementTypes = new Hashtable();
            foreach (Element ele in s.allElements.Values)
            {

                Assert.IsTrue(ele.LabelInfo.labelDatas.Count >= 1, "Failed to find label");

                ReferenceLocator rl;
                if (ele.TryGetReferenceLocators(out rl))
                {
                    countRef++;
                }
                else
                {
                    if (!ele.Id.EndsWith("Abstract"))
                    {
                        countNoRef++;
                    }
                }

                if (ele.Id.Equals("us-gaap_AccountsReceivableRelatedPartiesCurrent"))
                {
                    Assert.AreEqual(3, rl.References.Count, "Should have three references");
                }

                if (ele.Id.Equals("us-gaap_AccountsReceivableRelatedPartiesCurrent"))
                {
                    Assert.AreEqual(3, rl.References.Count, "Should have three references");
                }

                if (ele.Id.Equals("us-gaap_AccountsReceivableRelatedParties"))
                {
                    Assert.AreEqual(4, rl.References.Count, "Should have four references");
                }

                if (s.DoesElementExistInCalculation(ele.Id))
                {
                    noInCal++;
                    elementTypes[ele.OrigElementType] = 1;
                }
                else
                {
                    noNotInCal++;
                }

            }

            Console.WriteLine("Count ref = {0} Count no Ref = {1}", countRef, countNoRef);
            Console.WriteLine("Count in calculation = {0} Count not in calculation = {1}", noInCal, noNotInCal);

            foreach (string type in elementTypes.Keys)
            {
                Console.WriteLine("Cal element type = " + type);
            }

            Dictionary<string, string> dt = s.GetSimpleCustomElementTypes();

            foreach (KeyValuePair<string, string> kvp in dt)
            {
                Console.WriteLine("Ext type {0} for base type {1}", kvp.Key, kvp.Value);
            }
        }