public async Task VerifyFixForIssue1Async() { var xbrlDoc = new XbrlDocument(); await xbrlDoc.LoadAsync("http://xbrlsite.com/US-GAAP/BasicExample/2010-09-30/abc-20101231.xml"); Assert.IsTrue(xbrlDoc.IsValid); }
public void AddXbrlNodes(XbrlDocument xbrlDoc) { foreach (var frag in xbrlDoc.XbrlFragments) { foreach (XbrlSchema schema in frag.Schemas) { if (schema != null) { foreach (JeffFerguson.Gepsio.LinkbaseDocument linkbase in schema.LinkbaseDocuments) { if (linkbase.CalculationLinks.Count != 0) { foreach (CalculationLink calcLink in linkbase.CalculationLinks) { if (calcLink.CalculationArcs.Count != 0) { foreach (CalculationArc calcArc in calcLink.CalculationArcs) { if (!NodeExists(calcArc.ToLocators[0].HrefResourceId.Split(new[] { '_' })[1], calcArc.FromLocator.HrefResourceId.Split(new[] { '_' })[1])) { XbrlNode nodeToAdd = new XbrlNode( calcArc.ToLocators[0].HrefResourceId.Split(new[] { '_' })[1], calcArc.FromLocator.HrefResourceId.Split(new[] { '_' })[1], (int)calcArc.Weight); InsertXbrlNode(nodeToAdd); } } } } } } } } } }
public void VerifyFixForIssue1() { var xbrlDoc = new XbrlDocument(); xbrlDoc.Load("http://xbrlsite.com/US-GAAP/BasicExample/2010-09-30/abc-20101231.xml"); Assert.IsTrue(xbrlDoc.IsValid); }
static void LoadValidInstance() { var xbrlDoc = new XbrlDocument(); xbrlDoc.Load(@"..\..\..\..\..\..\JeffFerguson.Gepsio.Test\XBRL-CONF-2014-12-10\Common\300-instance\301-01-IdScopeValid.xml"); CheckValidity(xbrlDoc); }
private static void FindFactInDocument(XbrlDocument doc, string factName) { foreach (var currentFragment in doc.XbrlFragments) { FindFactInFragment(currentFragment, factName); } }
//------------------------------------------------------------------------------- //------------------------------------------------------------------------------- // JIW Start // internal XbrlFragment(XbrlDocument ParentDocument, XmlNode XbrlRootNode) internal XbrlFragment(XbrlDocument ParentDocument, XmlNode XbrlRootNode, string definitionDirectory) { DefinitionDirectory = definitionDirectory; this.Document = ParentDocument; thisXbrlRootNode = XbrlRootNode; thisValidationErrors = new List<ValidationError>(); CreateNamespaceManager(); //--------------------------------------------------------------------------- // Load. //--------------------------------------------------------------------------- ReadTaxonomySchemaRefs(); ReadContexts(); ReadUnits(); // JIW Start ReadCompanyData(); ReadReportData(); ReadDocumentData(); ReadFinancialFacts(); // JIW Stop ReadFacts(); ReadFootnoteLinks(); if (Loaded != null) Loaded(this, null); //--------------------------------------------------------------------------- // Validate. //--------------------------------------------------------------------------- ValidateContextRefs(); ValidateUnitRefs(); ValidateContextTimeSpansAgainstPeriodTypes(); ValidateFootnoteLocations(); ValidateFootnoteArcs(); ValidateItems(); if (Validated != null) Validated(this, null); }
static void LoadInvalidInstance() { var xbrlDoc = new XbrlDocument(); xbrlDoc.Load(@"..\..\..\..\..\..\JeffFerguson.Gepsio.Test\XBRL-CONF-2014-12-10\Common\300-instance\301-10-FootnoteFromOutOfScope.xml"); CheckValidity(xbrlDoc); }
public void VerifyFixForIssue3_EnsureLocalSchemaLoad() { var xbrlDoc = new XbrlDocument(); xbrlDoc.Load(@"..\..\..\IssueTests\3\offentliggorelse.xml"); Assert.IsTrue(xbrlDoc.XbrlFragments[0].Schemas.Count > 0); }
private static void ShowFactsInDocument(XbrlDocument doc) { foreach (var currentFragment in doc.XbrlFragments) { ShowFactsInFragment(currentFragment); } }
//------------------------------------------------------------------------------- //------------------------------------------------------------------------------- private void ExecuteVariation(string TestcaseXmlSourceDirectory, XmlNode VariationNode) { var currentVariation = new XBRLCONFCR320070305TestVariation(VariationNode); if (string.IsNullOrEmpty(currentVariation.Instance) == true) { return; } var instanceXmlSourceFullPathBuilder = new StringBuilder(); instanceXmlSourceFullPathBuilder.AppendFormat("{0}{1}{2}", TestcaseXmlSourceDirectory, Path.DirectorySeparatorChar, currentVariation.Instance); var instanceXmlSourceFullPath = instanceXmlSourceFullPathBuilder.ToString(); var newXbrlDocument = new XbrlDocument(); newXbrlDocument.Load(instanceXmlSourceFullPath); if (newXbrlDocument.IsValid == true) { if (currentVariation.ValidityExpected == false) { AnnounceTestFailure(currentVariation); } } if (newXbrlDocument.IsValid == false) { if (currentVariation.ValidityExpected == true) { AnnounceTestFailure(currentVariation, newXbrlDocument); } } thisTestsPassed++; }
[Ignore] // iXBRL unsupported at this time public void UKGAAP2009Test() { var doc = new XbrlDocument(); doc.Load(@"..\..\..\JeffFerguson.Test.Gepsio\ixbrl-samples\UKGAAP2009.xml"); Assert.IsNotNull(doc.XbrlFragments); Assert.AreNotEqual <int>(0, doc.XbrlFragments.Count, "No fragments found in document."); }
static void Main(string[] args) { var xbrlDoc1 = new XbrlDocument(); xbrlDoc1.Load(@"..\..\..\..\..\..\JeffFerguson.Gepsio.Test\XBRL-CONF-2014-12-10\Common\300-instance\301-01-IdScopeValid.xml"); ShowContextsInDocument(xbrlDoc1); ShowFactsInDocument(xbrlDoc1); }
public void GetRoleTypeTest() { var NewXbrlDocument = new XbrlDocument(); NewXbrlDocument.Load(@"..\..\..\JeffFerguson.Test.Gepsio\RoleType\tgt-20130202.xml"); var balanceSheetRoleType = NewXbrlDocument.GetRoleType("BalanceSheet"); Assert.IsNotNull(balanceSheetRoleType); }
public void PresentableTreeForAig20130630() { var xbrlDoc = new XbrlDocument(); xbrlDoc.Load(GetRelativePathForDocument("aig-20130630.xml")); var firstFragment = xbrlDoc.XbrlFragments[0]; var tree = firstFragment.GetPresentableFactTree(); Assert.IsNotNull(tree); }
public void VerifyFixForIssue3_EnsureAlternativeSchemaLoadPath() { var xbrlDoc = new XbrlDocument(); var d = Directory.GetCurrentDirectory(); xbrlDoc.Load(@"..\..\..\IssueTests\3\offentliggorelse.xml"); var loadedSchema = xbrlDoc.XbrlFragments[0].Schemas[0]; Assert.AreNotEqual(loadedSchema.SchemaReferencePath, loadedSchema.LoadPath); }
static void Main(string[] args) { var xbrlDoc = new XbrlDocument(); Console.Write("Loading..."); xbrlDoc.Load("https://www.sec.gov/Archives/edgar/data/845877/000084587717000155/agm-20170930.xml"); Console.WriteLine("done."); var calculationLinkbase = FindFirstAvailableCalculationLinkbase(xbrlDoc); PrintArcFactsAndWeights(calculationLinkbase); }
public void aig20130630() { var xbrlDoc = new XbrlDocument(); var timeBeforeLoad = System.DateTime.Now; xbrlDoc.Load(GetRelativePathForDocument("aig-20130630.xml")); var timeAfterLoad = System.DateTime.Now; var loadTime = timeAfterLoad - timeBeforeLoad; Assert.IsTrue(xbrlDoc.IsValid); }
public void WorkItem9612Test() { var xbrlDocument = new XbrlDocument(); xbrlDocument.Load(@"..\..\..\JeffFerguson.Test.Gepsio\WorkItemsInput\WorkItem9612\intc-20111231.xml"); Assert.AreEqual <int>(1, xbrlDocument.XbrlFragments.Count); var firstFragment = xbrlDocument.XbrlFragments[0]; Assert.AreEqual <int>(1, firstFragment.Schemas.Count); var firstSchema = firstFragment.Schemas[0]; }
public void LoadXbrlFromStreamSuccessfully() { var webClient = new WebClient(); string readXml = webClient.DownloadString("http://www.xbrl.org/taxonomy/int/fr/ias/ci/pfs/2002-11-15/SampleCompany-2002-11-15.xml"); byte[] byteArray = Encoding.ASCII.GetBytes(readXml); MemoryStream memStream = new MemoryStream(byteArray); var newDoc = new XbrlDocument(); newDoc.Load(memStream); Assert.IsTrue(newDoc.IsValid); }
static void Main(string[] args) { var xbrlDoc = new XbrlDocument(); xbrlDoc.Load(@"..\..\..\..\..\..\JeffFerguson.Gepsio.Test\XBRL-CONF-2014-12-10\Common\300-instance\301-01-IdScopeValid.xml"); Console.WriteLine($"Number of fragments in the loaded document: {xbrlDoc.XbrlFragments.Count}."); foreach (var currentFragment in xbrlDoc.XbrlFragments) { // Work with the fragment here. } }
public void LoadXbrlFromStreamWithRelativeSchema() { var webClient = new WebClient(); string readXml = webClient.DownloadString("http://www.sec.gov/Archives/edgar/data/789019/000119312515020351/msft-20141231.xml"); byte[] byteArray = Encoding.ASCII.GetBytes(readXml); MemoryStream memStream = new MemoryStream(byteArray); var newDoc = new XbrlDocument(); newDoc.Load(memStream); Assert.IsFalse(newDoc.IsValid); }
public void VerifyFixForIssue10() { var xbrlDoc = new XbrlDocument(); xbrlDoc.Load("https://www.sec.gov/Archives/edgar/data/1688568/000168856818000036/csc-20170331.xml"); foreach (var validationError in xbrlDoc.ValidationErrors) { if (validationError.Message.Contains("http://fasb.org/us-gaap/2017-01-31") == true) { Assert.Fail(); } } }
static void Main(string[] args) { var xbrlDoc1 = new XbrlDocument(); xbrlDoc1.Load(@"..\..\JeffFerguson.Gepsio.Test\XBRL-CONF-2014-12-10\Common\300-instance\301-01-IdScopeValid.xml"); ShowFactsInDocument(xbrlDoc1); FindFactInDocument(xbrlDoc1, "changeInRetainedEarnings"); var xbrlDoc2 = new XbrlDocument(); xbrlDoc2.Load(@"..\..\JeffFerguson.Gepsio.Test\XBRL-CONF-2014-12-10\Common\300-instance\306-02-RequiredInstanceTupleValid.xml"); ShowFactsInDocument(xbrlDoc2); }
public string GetXbrl() { var xbrlDoc = new XbrlDocument(); xbrlDoc.Load("https://www.sec.gov/Archives/edgar/data/874292/000144526020000011/aey-20191231.xml"); return(JsonConvert.SerializeObject(xbrlDoc.XbrlFragments .SelectMany(frag => frag.Facts) .Select(fact => new DTOs.FactResult { Name = fact.Name, Value = (fact as Item).Value }), Formatting.Indented)); }
public void WorkItem9571Test() { var xbrlDocument = new XbrlDocument(); xbrlDocument.Load(@"..\..\..\JeffFerguson.Test.Gepsio\WorkItemsInput\WorkItem9571\Sample-Instance-Proof.xml"); Assert.AreEqual <int>(1, xbrlDocument.XbrlFragments.Count); var firstFragment = xbrlDocument.XbrlFragments[0]; Assert.AreEqual <int>(1, firstFragment.Schemas.Count); var firstSchema = firstFragment.Schemas[0]; Assert.AreEqual <int>(60, firstSchema.RoleTypes.Count); }
public void VerifyFixForIssue16() { try { CultureInfo.CurrentCulture = CultureInfo.GetCultureInfo("fr"); var xbrlDoc = new XbrlDocument( ); xbrlDoc.Load("https://www.sec.gov/Archives/edgar/data/1688568/000168856818000036/csc-20170331.xml"); } catch (FormatException) { Assert.Fail("Decimal number format should be culture independant."); } }
public async Task VerifyFixForIssue22Async() { var xbrlDoc = new XbrlDocument(); try { await xbrlDoc.LoadAsync(@"https://www.sec.gov/Archives/edgar/data/1018724/000101872419000004/amzn-20181231.xml"); } catch (System.Exception) { Assert.Fail(); } }
public void WalkPresentableTree() { var xbrlDoc = new XbrlDocument(); xbrlDoc.Load(GetRelativePathForDocument("aig-20130630.xml")); var firstFragment = xbrlDoc.XbrlFragments[0]; var tree = firstFragment.GetPresentableFactTree(); foreach (var currentNode in tree.TopLevelNodes) { WalkPresentableTreeNode(currentNode, 0); } }
public Company Populate(XbrlDocument xbrlDoc, string symbol) { Company comp = new Company(); comp.Symbol = symbol; foreach (XbrlFragment frag in xbrlDoc.XbrlFragments) { foreach (Item xbrlItem in frag.Facts) { comp = CheckItem(xbrlItem, comp); } } return comp; }
public Company Populate(XbrlDocument xbrlDoc, string symbol) { Company comp = new Company(); comp.Symbol = symbol; foreach (XbrlFragment frag in xbrlDoc.XbrlFragments) { foreach (Item xbrlItem in frag.Facts) { comp = CheckItem(xbrlItem, comp); } } return(comp); }
static void CheckValidity(XbrlDocument doc) { if (doc.IsValid == true) { Console.WriteLine("Congratulations! This document is valid according to the XBRL specification."); } else { Console.WriteLine("This document is invalid according to the XBRL specification."); foreach (var validationError in doc.ValidationErrors) { Console.WriteLine(validationError.Message); } } }
public void Example13Row4() { XbrlDocument NewXbrlDocument = new XbrlDocument(); NewXbrlDocument.Load(@"..\..\..\JeffFerguson.Test.Gepsio\InferPrecisionTestDocuments\Example13Row4.xbrl"); Assert.AreEqual <int>(1, NewXbrlDocument.XbrlFragments.Count, "No XBRL fragments found."); XbrlFragment FirstFragment = NewXbrlDocument.XbrlFragments[0]; Assert.AreEqual <int>(1, FirstFragment.Facts.Count, "No facts found in fragment."); Item FirstFact = FirstFragment.Facts[0] as Item; Assert.IsTrue(FirstFact.DecimalsSpecified); Assert.IsFalse(FirstFact.PrecisionSpecified); Assert.IsTrue(FirstFact.PrecisionInferred); Assert.AreEqual <int>(5, FirstFact.Precision); }
public void ProcessXbrlInstanceDocument(string xmlUrl, Dictionary<string, List<string>> xbrlTaxonomyTree) { JeffFerguson.Gepsio.XbrlDocument xbrlDoc = new XbrlDocument(); xbrlDoc.Load(xmlUrl); //AddXbrlNodes(xbrlDoc); int yearsToLoad = 3; string fileName = System.IO.Path.GetFileNameWithoutExtension(xmlUrl); string tickerSymbol = fileName.Split(new[] { '-' })[0]; int year = GetFiscalYear(tickerSymbol, xbrlDoc.XbrlFragments[0]); IncomeStatement incToAdd = new IncomeStatement(); BalanceSheet balToAdd = new BalanceSheet(); CompanyAnnualData compAnnToAdd = new CompanyAnnualData(); Dictionary<string, Object> yahooStats = GetYahooStatistics(tickerSymbol); CreateCompanyObject(tickerSymbol, xbrlDoc, yahooStats); for (int y = year; y > year - yearsToLoad; y--) { XbrlIncomeStatementFilter incFilter = new XbrlIncomeStatementFilter(); XbrlBalanceSheetFilter bsFilter = new XbrlBalanceSheetFilter(); XbrlCompanyAnnualFilter compAnFilter = new XbrlCompanyAnnualFilter(); incToAdd = incFilter.Populate(this, xbrlDoc, tickerSymbol, y, xbrlTaxonomyTree); balToAdd = bsFilter.Populate(xbrlDoc, tickerSymbol, y, xbrlTaxonomyTree); compAnnToAdd = compAnFilter.Populate(xbrlDoc, tickerSymbol, y); compAnnToAdd.LeveredBeta = Convert.ToDecimal(yahooStats["Beta"]); compAnnToAdd.DividendYield = Convert.ToDecimal(yahooStats["DividendYield"]); IncomeStatementBL.Instance.UpdateIncomeStatement(incToAdd); BalanceSheetBL.Instance.UpdateBalanceSheet(balToAdd); CompanyAnnualDataBL.Instance.UpdateCompanyAnnual(compAnnToAdd); } }
public CompanyAnnualData Populate(XbrlDocument xbrlDoc, string symbol, int year) { CompanyAnnualData ann = new CompanyAnnualData(); ann.Symbol = symbol; ann.Year = year; CompanyAnnualFilterItem item = new CompanyAnnualFilterItem(); foreach (XbrlFragment frag in xbrlDoc.XbrlFragments) { foreach (Item xbrlItem in frag.Facts) { if (xbrlItem.ContextRef.InstantDate.Year == ann.Year) { if (!xbrlItem.Type.Name.Equals("monetaryItemType")) { item = CheckItem(xbrlItem, item); } } } } ann = PopulateFinancialStatement(item, ann); if (ann.SharesOutstanding < 0) { ann.SharesOutstanding = ann.SharesOutstanding * -1; } if (ann.SharesOutstanding < 1000) { ann.SharesOutstanding = ann.SharesOutstanding * 1000000; } else if (ann.SharesOutstanding < 1000000) { ann.SharesOutstanding = ann.SharesOutstanding * 1000; } return ann; }
public IncomeStatement Populate(XbrlNodeBL nodeMngr, XbrlDocument xbrlDoc, string symbol, int year, Dictionary<string, List<string>> xbrlTaxonomyTree) { IncomeStatement inc = new IncomeStatement(); inc.Symbol = symbol; inc.Year = year; IncomeStatementFilterItem item = new IncomeStatementFilterItem(); foreach (XbrlFragment frag in xbrlDoc.XbrlFragments) { foreach (Item xbrlItem in frag.Facts) { if (nodeMngr.IsAnnualItem(xbrlItem) && xbrlItem.Type.Name.Equals("monetaryItemType")) { if (xbrlItem.ContextRef.PeriodEndDate.Year == inc.Year) { item = CheckItem(xbrlItem, item, xbrlTaxonomyTree); } } } } return PopulateFinancialStatement(item, inc); }
public BalanceSheet Populate(XbrlDocument xbrlDoc, string symbol, int year, Dictionary<string, List<string>> xbrlTaxonomyTree) { BalanceSheet bal = new BalanceSheet(); bal.Symbol = symbol; bal.Year = year; BalanceSheetFilterItem item = new BalanceSheetFilterItem(); foreach (XbrlFragment frag in xbrlDoc.XbrlFragments) { foreach (Item xbrlItem in frag.Facts) { if (xbrlItem.ContextRef.InstantPeriod && xbrlItem.Type.Name.Equals("monetaryItemType")) { if (xbrlItem.ContextRef.InstantDate.Year == bal.Year) { item = CheckItem(xbrlItem, item, xbrlTaxonomyTree); } } } } return PopulateFinancialStatement(item,bal); }