xbrlware-ce 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (194) hide show
  1. data/Copying.txt +13 -0
  2. data/License.txt +13 -0
  3. data/Rakefile.rb +124 -0
  4. data/Readme.txt +15 -0
  5. data/doc/classes/Edgar.html +144 -0
  6. data/doc/classes/Edgar/HTMLFeedDownloader.html +199 -0
  7. data/doc/classes/Edgar/RSSFeedDownloader.html +225 -0
  8. data/doc/classes/Xbrlware.html +350 -0
  9. data/doc/classes/Xbrlware/Context.html +429 -0
  10. data/doc/classes/Xbrlware/Entity.html +323 -0
  11. data/doc/classes/Xbrlware/Identifier.html +191 -0
  12. data/doc/classes/Xbrlware/Instance.html +742 -0
  13. data/doc/classes/Xbrlware/Item.html +278 -0
  14. data/doc/classes/Xbrlware/LBConstants.html +144 -0
  15. data/doc/classes/Xbrlware/Linkbase.html +131 -0
  16. data/doc/classes/Xbrlware/Linkbase/CalculationLinkbase.html +212 -0
  17. data/doc/classes/Xbrlware/Linkbase/CalculationLinkbase/Calculation.html +172 -0
  18. data/doc/classes/Xbrlware/Linkbase/CalculationLinkbase/Calculation/CalculationArc.html +166 -0
  19. data/doc/classes/Xbrlware/Linkbase/DefinitionLinkbase.html +210 -0
  20. data/doc/classes/Xbrlware/Linkbase/DefinitionLinkbase/Definition.html +204 -0
  21. data/doc/classes/Xbrlware/Linkbase/DefinitionLinkbase/Definition/DefinitionArc.html +160 -0
  22. data/doc/classes/Xbrlware/Linkbase/LabelLinkbase.html +239 -0
  23. data/doc/classes/Xbrlware/Linkbase/LabelLinkbase/Label.html +189 -0
  24. data/doc/classes/Xbrlware/Linkbase/Linkbase.html +172 -0
  25. data/doc/classes/Xbrlware/Linkbase/Linkbase/Link.html +217 -0
  26. data/doc/classes/Xbrlware/Linkbase/Linkbase/Link/Arc.html +284 -0
  27. data/doc/classes/Xbrlware/Linkbase/PresentationLinkbase.html +224 -0
  28. data/doc/classes/Xbrlware/Linkbase/PresentationLinkbase/Presentation.html +222 -0
  29. data/doc/classes/Xbrlware/Linkbase/PresentationLinkbase/Presentation/PresentationArc.html +160 -0
  30. data/doc/classes/Xbrlware/Taxonomy.html +369 -0
  31. data/doc/classes/Xbrlware/TaxonomyDefintion.html +177 -0
  32. data/doc/classes/Xbrlware/Unit.html +179 -0
  33. data/doc/classes/Xbrlware/Unit/Divide.html +165 -0
  34. data/doc/created.rid +1 -0
  35. data/doc/files/Readme_txt.html +124 -0
  36. data/doc/files/lib/edgar/edgar_data_downloader_rb.html +129 -0
  37. data/doc/files/lib/edgar/util_rb.html +129 -0
  38. data/doc/files/lib/edgar_rb.html +141 -0
  39. data/doc/files/lib/xbrlware/constants_rb.html +129 -0
  40. data/doc/files/lib/xbrlware/context_rb.html +129 -0
  41. data/doc/files/lib/xbrlware/date_util_rb.html +129 -0
  42. data/doc/files/lib/xbrlware/float_patch_rb.html +129 -0
  43. data/doc/files/lib/xbrlware/hash_util_rb.html +129 -0
  44. data/doc/files/lib/xbrlware/instance_rb.html +129 -0
  45. data/doc/files/lib/xbrlware/item_rb.html +129 -0
  46. data/doc/files/lib/xbrlware/linkbase/calculation_linkbase_rb.html +129 -0
  47. data/doc/files/lib/xbrlware/linkbase/definition_linkbase_rb.html +129 -0
  48. data/doc/files/lib/xbrlware/linkbase/label_linkbase_rb.html +129 -0
  49. data/doc/files/lib/xbrlware/linkbase/linkbase_rb.html +129 -0
  50. data/doc/files/lib/xbrlware/linkbase/presentation_linkbase_rb.html +129 -0
  51. data/doc/files/lib/xbrlware/meta_util_rb.html +129 -0
  52. data/doc/files/lib/xbrlware/taxonomy_rb.html +129 -0
  53. data/doc/files/lib/xbrlware/unit_rb.html +129 -0
  54. data/doc/files/lib/xbrlware/util_rb.html +129 -0
  55. data/doc/files/lib/xbrlware/xml_parser_rb.html +129 -0
  56. data/doc/files/lib/xbrlware_rb.html +163 -0
  57. data/doc/fr_class_index.html +55 -0
  58. data/doc/fr_file_index.html +48 -0
  59. data/doc/fr_method_index.html +104 -0
  60. data/doc/index.html +24 -0
  61. data/doc/rdoc-style.css +208 -0
  62. data/example/benchmark/instance_parser_benchmark.rb +25 -0
  63. data/example/case_study/buy_strategy.rb +34 -0
  64. data/example/case_study/c-20091230.xml +29 -0
  65. data/example/case_study/c_sell_strategy.rb +29 -0
  66. data/example/lang_integration/thrift/rating-client.py +21 -0
  67. data/example/lang_integration/thrift/rating-impl.rb +13 -0
  68. data/example/lang_integration/thrift/rating-server.rb +25 -0
  69. data/example/lang_integration/thrift/rating.thrift +52 -0
  70. data/example/quick_start/foo.rb +10 -0
  71. data/example/quick_start/foo.xml +29 -0
  72. data/example/quick_start/print_item.rb +27 -0
  73. data/lib/edgar.rb +30 -0
  74. data/lib/edgar/edgar_data_downloader.rb +126 -0
  75. data/lib/edgar/util.rb +30 -0
  76. data/lib/xbrlware.rb +65 -0
  77. data/lib/xbrlware/constants.rb +29 -0
  78. data/lib/xbrlware/context.rb +148 -0
  79. data/lib/xbrlware/date_util.rb +35 -0
  80. data/lib/xbrlware/float_patch.rb +26 -0
  81. data/lib/xbrlware/hash_util.rb +175 -0
  82. data/lib/xbrlware/instance.rb +406 -0
  83. data/lib/xbrlware/item.rb +115 -0
  84. data/lib/xbrlware/linkbase/calculation_linkbase.rb +137 -0
  85. data/lib/xbrlware/linkbase/definition_linkbase.rb +186 -0
  86. data/lib/xbrlware/linkbase/label_linkbase.rb +128 -0
  87. data/lib/xbrlware/linkbase/linkbase.rb +170 -0
  88. data/lib/xbrlware/linkbase/presentation_linkbase.rb +160 -0
  89. data/lib/xbrlware/meta_util.rb +45 -0
  90. data/lib/xbrlware/taxonomies/us_gaap_taxonomy_20090131.rb +40365 -0
  91. data/lib/xbrlware/taxonomy.rb +133 -0
  92. data/lib/xbrlware/unit.rb +42 -0
  93. data/lib/xbrlware/util.rb +83 -0
  94. data/lib/xbrlware/xml_parser.rb +122 -0
  95. data/setup.rb +1585 -0
  96. data/test/lib/edgar/edgar_data_downloader_test.rb +35 -0
  97. data/test/lib/edgar/resources/0000930413-09-005485-index.htm +331 -0
  98. data/test/lib/edgar/resources/usgaap.rss.xml +2861 -0
  99. data/test/lib/xbrlware/411_footnotes_test.rb +65 -0
  100. data/test/lib/xbrlware/42_schemaref_test.rb +20 -0
  101. data/test/lib/xbrlware/46_item_test.rb +253 -0
  102. data/test/lib/xbrlware/47_context_test.rb +129 -0
  103. data/test/lib/xbrlware/48_unit_test.rb +45 -0
  104. data/test/lib/xbrlware/49_tuple_test.rb +12 -0
  105. data/test/lib/xbrlware/date_util_test.rb +24 -0
  106. data/test/lib/xbrlware/dimension/context_explicit_dimension_test.rb +40 -0
  107. data/test/lib/xbrlware/dimension/resources/context_explicit_dimension.xml +84 -0
  108. data/test/lib/xbrlware/float_patch_test.rb +10 -0
  109. data/test/lib/xbrlware/hash_util_test.rb +29 -0
  110. data/test/lib/xbrlware/instance_test.rb +250 -0
  111. data/test/lib/xbrlware/linkbase/calculation_linkbase_test.rb +39 -0
  112. data/test/lib/xbrlware/linkbase/definition_linkbase_test.rb +35 -0
  113. data/test/lib/xbrlware/linkbase/label_linkbase_test.rb +22 -0
  114. data/test/lib/xbrlware/linkbase/linkbase_test.rb +36 -0
  115. data/test/lib/xbrlware/linkbase/linkbase_test_util.rb +98 -0
  116. data/test/lib/xbrlware/linkbase/presentation_linkbase_test.rb +33 -0
  117. data/test/lib/xbrlware/linkbase/report.html +62 -0
  118. data/test/lib/xbrlware/linkbase/resources/cal.xml +219 -0
  119. data/test/lib/xbrlware/linkbase/resources/def.xml +186 -0
  120. data/test/lib/xbrlware/linkbase/resources/def_with_multiple_dimension.xml +41 -0
  121. data/test/lib/xbrlware/linkbase/resources/instance.xml +5822 -0
  122. data/test/lib/xbrlware/linkbase/resources/lab.xml +782 -0
  123. data/test/lib/xbrlware/linkbase/resources/pre.xml +485 -0
  124. data/test/lib/xbrlware/linkbase/resources/report_10_q.htm +12327 -0
  125. data/test/lib/xbrlware/linkbase/resources/taxonomy.xsd +178 -0
  126. data/test/lib/xbrlware/linkbase/sample_html_report.html +40 -0
  127. data/test/lib/xbrlware/meta_util_test.rb +23 -0
  128. data/test/lib/xbrlware/resources/411/411_footnotes.xml +66 -0
  129. data/test/lib/xbrlware/resources/42/42_schema_ref_with_base.xml +7 -0
  130. data/test/lib/xbrlware/resources/42/42_schema_ref_without_base.xml +7 -0
  131. data/test/lib/xbrlware/resources/46/46_item_value.xml +61 -0
  132. data/test/lib/xbrlware/resources/47/472_period_forever.xml +29 -0
  133. data/test/lib/xbrlware/resources/47/472_period_instant.xml +24 -0
  134. data/test/lib/xbrlware/resources/47/472_period_start_dt_and_end_dt.xml +30 -0
  135. data/test/lib/xbrlware/resources/47/4731_entity_identifier.xml +29 -0
  136. data/test/lib/xbrlware/resources/47/4732_entity_segment_not_present.xml +24 -0
  137. data/test/lib/xbrlware/resources/47/4732_entity_segment_present.xml +30 -0
  138. data/test/lib/xbrlware/resources/47/474_scenario_not_present.xml +26 -0
  139. data/test/lib/xbrlware/resources/47/474_scenario_present.xml +30 -0
  140. data/test/lib/xbrlware/resources/47/47_multiple_contexts.xml +36 -0
  141. data/test/lib/xbrlware/resources/48/482_unit_measure.xml +32 -0
  142. data/test/lib/xbrlware/resources/48/483_unit_divide.xml +39 -0
  143. data/test/lib/xbrlware/resources/48/48_multiple_units.xml +43 -0
  144. data/test/lib/xbrlware/resources/49/49_tuple.xml +61 -0
  145. data/test/lib/xbrlware/resources/49_tuple.xsd +44 -0
  146. data/test/lib/xbrlware/resources/instance.xml +128 -0
  147. data/test/lib/xbrlware/resources/report_test_xbrl_files/cal.xml +219 -0
  148. data/test/lib/xbrlware/resources/report_test_xbrl_files/def.xml +186 -0
  149. data/test/lib/xbrlware/resources/report_test_xbrl_files/instance.xml +5822 -0
  150. data/test/lib/xbrlware/resources/report_test_xbrl_files/lab.xml +782 -0
  151. data/test/lib/xbrlware/resources/report_test_xbrl_files/pre.xml +485 -0
  152. data/test/lib/xbrlware/resources/report_test_xbrl_files/report/report_index.html +62 -0
  153. data/test/lib/xbrlware/resources/report_test_xbrl_files/taxonomy.xsd +178 -0
  154. data/test/lib/xbrlware/resources/taxonomy_test_files/1/cal.xml +223 -0
  155. data/test/lib/xbrlware/resources/taxonomy_test_files/1/def.xml +190 -0
  156. data/test/lib/xbrlware/resources/taxonomy_test_files/1/lab.xml +786 -0
  157. data/test/lib/xbrlware/resources/taxonomy_test_files/1/pre.xml +489 -0
  158. data/test/lib/xbrlware/resources/taxonomy_test_files/1/taxonomy.xsd +177 -0
  159. data/test/lib/xbrlware/resources/taxonomy_test_files/2/linkbases/cal.xml +223 -0
  160. data/test/lib/xbrlware/resources/taxonomy_test_files/2/linkbases/def.xml +190 -0
  161. data/test/lib/xbrlware/resources/taxonomy_test_files/2/linkbases/lab.xml +786 -0
  162. data/test/lib/xbrlware/resources/taxonomy_test_files/2/linkbases/pre.xml +489 -0
  163. data/test/lib/xbrlware/resources/taxonomy_test_files/2/taxonomy.xsd +175 -0
  164. data/test/lib/xbrlware/resources/taxonomy_test_files/3/taxonomy.xsd +175 -0
  165. data/test/lib/xbrlware/resources/us_gaap_schema.xsd +8 -0
  166. data/test/lib/xbrlware/resources/us_gaap_schema_local.xsd +10 -0
  167. data/test/lib/xbrlware/resources/util_test_xbrl_files/cal.xml +219 -0
  168. data/test/lib/xbrlware/resources/util_test_xbrl_files/def.xml +186 -0
  169. data/test/lib/xbrlware/resources/util_test_xbrl_files/instance.xml +5822 -0
  170. data/test/lib/xbrlware/resources/util_test_xbrl_files/lab.xml +782 -0
  171. data/test/lib/xbrlware/resources/util_test_xbrl_files/pre.xml +485 -0
  172. data/test/lib/xbrlware/resources/util_test_xbrl_files/taxonomy.xsd +178 -0
  173. data/test/lib/xbrlware/resources/xbrl_xsd/dei-2009-01-31.xsd +162 -0
  174. data/test/lib/xbrlware/resources/xbrl_xsd/dei-std-2009-01-31.xsd +23 -0
  175. data/test/lib/xbrlware/resources/xbrl_xsd/negated-2008-03-31.xsd +23 -0
  176. data/test/lib/xbrlware/resources/xbrl_xsd/ref-2006-02-27.xsd +121 -0
  177. data/test/lib/xbrlware/resources/xbrl_xsd/us-gaap-2009-01-31.xsd +13474 -0
  178. data/test/lib/xbrlware/resources/xbrl_xsd/us-roles-2009-01-31.xsd +2283 -0
  179. data/test/lib/xbrlware/resources/xbrl_xsd/us-types-2009-01-31.xsd +368 -0
  180. data/test/lib/xbrlware/resources/xbrl_xsd/xbrl-instance-2003-12-31.xsd +772 -0
  181. data/test/lib/xbrlware/resources/xbrl_xsd/xbrl-linkbase-2003-12-31.xsd +477 -0
  182. data/test/lib/xbrlware/resources/xbrl_xsd/xbrldi-2006.xsd +41 -0
  183. data/test/lib/xbrlware/resources/xbrl_xsd/xbrldt-2005.xsd +53 -0
  184. data/test/lib/xbrlware/resources/xbrl_xsd/xl-2003-12-31.xsd +246 -0
  185. data/test/lib/xbrlware/resources/xbrl_xsd/xlink-2003-12-31.xsd +117 -0
  186. data/test/lib/xbrlware/taxonomy_test.rb +124 -0
  187. data/test/lib/xbrlware/util_test.rb +18 -0
  188. data/test/lib/xbrlware/xml_parser_test.rb +142 -0
  189. data/test/schema_validator_jruby.rb +40 -0
  190. data/test/schema_validator_ruby.rb +7 -0
  191. data/test/scratchpad/block.rb +36 -0
  192. data/test/test_helper.rb +21 -0
  193. data/xbrlware.iml +30 -0
  194. metadata +261 -0
@@ -0,0 +1,45 @@
1
+ require File.dirname(__FILE__) + '/../../test_helper.rb'
2
+ class TestUnit < Test::Unit::TestCase
3
+ @@xsd_file=File.dirname(__FILE__)+"/resources/us_gaap_schema_local.xsd"
4
+
5
+ def test_48_get_all_units
6
+ xml_file=File.dirname(__FILE__)+"/resources/48/48_multiple_units.xml"
7
+ XbrlTest::SchemaValidator.validate(xml_file, @@xsd_file)
8
+ xbrl = Xbrlware::Instance.new(xml_file)
9
+ units=xbrl.unit
10
+ assert_equal(2, units.size)
11
+ end
12
+
13
+ def test_48_unit_by_id
14
+ xml_file=File.dirname(__FILE__)+"/resources/48/48_multiple_units.xml"
15
+ XbrlTest::SchemaValidator.validate(xml_file, @@xsd_file)
16
+ xbrl = Xbrlware::Instance.new(xml_file)
17
+
18
+ unit=xbrl.unit("USD_multipy_by_shares")
19
+ assert_not_nil(unit)
20
+
21
+ unit=xbrl.unit("not_exist")
22
+ assert_nil(unit)
23
+ end
24
+
25
+ def test_482_measure
26
+ xml_file=File.dirname(__FILE__)+"/resources/48/482_unit_measure.xml"
27
+ XbrlTest::SchemaValidator.validate(xml_file, @@xsd_file)
28
+ xbrl = Xbrlware::Instance.new(xml_file)
29
+ unit = xbrl.unit("USD_multipy_by_shares")
30
+ assert_equal("iso4217:USD", unit.measure[0])
31
+ assert_equal("xbrli:shares", unit.measure[1])
32
+ end
33
+
34
+ def test_483_and_484_divide
35
+ xml_file=File.dirname(__FILE__)+"/resources/48/483_unit_divide.xml"
36
+ XbrlTest::SchemaValidator.validate(xml_file, @@xsd_file)
37
+ xbrl = Xbrlware::Instance.new(xml_file)
38
+ unit = xbrl.unit("USDPerShare")
39
+ assert(unit.measure.is_a?(Xbrlware::Unit::Divide))
40
+ assert_equal("iso4217:USD", unit.measure.numerator[0])
41
+ assert_equal("iso4217:AUD", unit.measure.numerator[1])
42
+ assert_equal("xbrli:shares", unit.measure.denominator[0])
43
+ assert_equal("xbrli:pure", unit.measure.denominator[1])
44
+ end
45
+ end
@@ -0,0 +1,12 @@
1
+ require File.dirname(__FILE__) + '/../../test_helper.rb'
2
+
3
+ class TestTuple < Test::Unit::TestCase
4
+ @@xsd_file=File.dirname(__FILE__)+"/resources/49_tuple.xsd"
5
+
6
+ def test_tuple
7
+ xml_file=File.dirname(__FILE__)+"/resources/49/49_tuple.xml"
8
+ XbrlTest::SchemaValidator.validate(xml_file, @@xsd_file)
9
+ xbrl = Xbrlware::Instance.new(xml_file)
10
+ end
11
+
12
+ end
@@ -0,0 +1,24 @@
1
+ require File.dirname(__FILE__) + '/../../test_helper.rb'
2
+ class TestDateUtil < Test::Unit::TestCase
3
+ def test_stringify_date
4
+ dt=Date.parse("2009-12-15")
5
+ dt_str=Xbrlware::DateUtil.stringify_date(dt)
6
+ assert_equal("Dec 15, 2009", dt_str)
7
+ end
8
+
9
+ def test_stringify_date_with_nil
10
+ dt_str=Xbrlware::DateUtil.stringify_date(nil)
11
+ assert_equal("", dt_str)
12
+ end
13
+
14
+ def test_months_between
15
+ start_dt=Date.parse("2009-09-15")
16
+ end_dt=Date.parse("2009-12-15")
17
+
18
+ months=Xbrlware::DateUtil.months_between(start_dt, end_dt)
19
+ assert_equal(3, months)
20
+
21
+ months=Xbrlware::DateUtil.months_between(end_dt, start_dt)
22
+ assert_equal(3, months)
23
+ end
24
+ end
@@ -0,0 +1,40 @@
1
+ require File.dirname(__FILE__) + '/../../../test_helper.rb'
2
+
3
+ class TestContextExplicitDimension < Test::Unit::TestCase
4
+
5
+ def initialize(test_case)
6
+ super(test_case)
7
+ xml_file=File.dirname(__FILE__)+"/resources/context_explicit_dimension.xml"
8
+ @xbrl = Xbrlware::Instance.new(xml_file)
9
+ end
10
+
11
+ def test_explicit_dimensions
12
+ ctx=@xbrl.context("I2008_Ctx")
13
+ expected=["us-gaap:StatementEquityComponentsAxis", "us-gaap:IndefiniteLivedIntangibleAssetsBySegmentAxis"]
14
+ assert_equal(expected, ctx.explicit_dimensions)
15
+ end
16
+
17
+ def test_explicit_domains
18
+ ctx=@xbrl.context("I2009_Ctx")
19
+
20
+ expected=["us-gaap:CommonStockMember", "us-gaap:AdjustableRateResidentialMortgageMember", "us-gaap:PreferredStockMember"]
21
+ assert_equal(expected, ctx.explicit_domains)
22
+
23
+ dimensions=["us-gaap:StatementEquityComponentsAxis", "us-gaap:IndefiniteLivedIntangibleAssetsBySegmentAxis", "us-gaap:StatementEquityComponentsAxis"]
24
+ assert_equal(expected, ctx.explicit_domains(dimensions))
25
+
26
+ dimensions=["us-gaap:StatementEquityComponentsAxis", "us-gaap:IndefiniteLivedIntangibleAssetsBySegmentAxis"]
27
+ assert_equal(expected, ctx.explicit_domains(dimensions))
28
+
29
+ dimensions=["us-gaap:StatementEquityComponentsAxis"]
30
+ expected=["us-gaap:CommonStockMember", "us-gaap:PreferredStockMember"]
31
+ assert_equal(expected, ctx.explicit_domains(dimensions))
32
+ end
33
+
34
+ def test_explicit_dimensions_domains
35
+ ctx=@xbrl.context("I2009_Ctx")
36
+ dims_doms=ctx.explicit_dimensions_domains
37
+ assert_equal(["us-gaap:CommonStockMember", "us-gaap:PreferredStockMember"], dims_doms["us-gaap:StatementEquityComponentsAxis"])
38
+ assert_equal(["us-gaap:AdjustableRateResidentialMortgageMember"], dims_doms["us-gaap:IndefiniteLivedIntangibleAssetsBySegmentAxis"])
39
+ end
40
+ end
@@ -0,0 +1,84 @@
1
+ <?xml version="1.0" encoding="US-ASCII"?>
2
+ <xbrli:xbrl xmlns:xbrli="http://www.xbrl.org/2003/instance" xmlns:dei="http://xbrl.us/dei/2009-01-31" xmlns:iso4217="http://www.xbrl.org/2003/iso4217"
3
+ xmlns:link="http://www.xbrl.org/2003/linkbase" xmlns:us-gaap="http://xbrl.us/us-gaap/2009-01-31"
4
+ xmlns:xbrldi="http://xbrl.org/2006/xbrldi" xmlns:xlink="http://www.w3.org/1999/xlink"
5
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
6
+ <link:schemaRef xlink:href="schema.xsd" xlink:type="simple"/>
7
+ <xbrli:context id="I2007_Ctx">
8
+ <xbrli:entity>
9
+ <xbrli:identifier scheme="http://www.sec.gov/CIK">
10
+ 0000056873
11
+ </xbrli:identifier>
12
+ <xbrli:segment>
13
+ <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
14
+ <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:PreferredStockMember</xbrldi:explicitMember>
15
+ </xbrli:segment>
16
+ </xbrli:entity>
17
+ <xbrli:period>
18
+ <xbrli:instant>2008-12-27</xbrli:instant>
19
+ </xbrli:period>
20
+ </xbrli:context>
21
+ <xbrli:context id="I2008_Ctx">
22
+ <xbrli:entity>
23
+ <xbrli:identifier scheme="http://www.sec.gov/CIK">
24
+ 0000056873
25
+ </xbrli:identifier>
26
+ <xbrli:segment>
27
+ <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
28
+ <xbrldi:explicitMember dimension="us-gaap:IndefiniteLivedIntangibleAssetsBySegmentAxis">us-gaap:AdjustableRateResidentialMortgageMember</xbrldi:explicitMember>
29
+ </xbrli:segment>
30
+ </xbrli:entity>
31
+ <xbrli:period>
32
+ <xbrli:forever/>
33
+ </xbrli:period>
34
+ </xbrli:context>
35
+ <xbrli:context id="I2009_Ctx">
36
+ <xbrli:entity>
37
+ <xbrli:identifier scheme="http://www.sec.gov/CIK">
38
+ 0000056873
39
+ </xbrli:identifier>
40
+ <xbrli:segment>
41
+ <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
42
+ <xbrldi:explicitMember dimension="us-gaap:IndefiniteLivedIntangibleAssetsBySegmentAxis">us-gaap:AdjustableRateResidentialMortgageMember</xbrldi:explicitMember>
43
+ <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:PreferredStockMember</xbrldi:explicitMember>
44
+ </xbrli:segment>
45
+ </xbrli:entity>
46
+ <xbrli:period>
47
+ <xbrli:startDate>2008-12-28</xbrli:startDate>
48
+ <xbrli:endDate>2009-09-05</xbrli:endDate>
49
+ </xbrli:period>
50
+ </xbrli:context>
51
+ <xbrli:context id="I2010_Ctx">
52
+ <xbrli:entity>
53
+ <xbrli:identifier scheme="http://www.sec.gov/CIK">
54
+ 0000056873
55
+ </xbrli:identifier>
56
+ <xbrli:segment>
57
+ <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
58
+ <xbrldi:explicitMember dimension="us-gaap:IndefiniteLivedIntangibleAssetsBySegmentAxis">us-gaap:AdjustableRateResidentialMortgageMember</xbrldi:explicitMember>
59
+ <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:PreferredStockMember</xbrldi:explicitMember>
60
+ </xbrli:segment>
61
+ </xbrli:entity>
62
+ <xbrli:period>
63
+ <xbrli:startDate>2008-12-28</xbrli:startDate>
64
+ <xbrli:endDate>2009-09-05</xbrli:endDate>
65
+ </xbrli:period> </xbrli:context>
66
+ <xbrli:unit id="USD">
67
+ <xbrli:measure>
68
+ iso4217:USD
69
+ </xbrli:measure>
70
+ </xbrli:unit>
71
+ <us-gaap:StockholdersEquityIncludingPortionAttributableToNoncontrollingInterest contextRef="I2007_Ctx"
72
+ decimals="-6" unitRef="USD">
73
+ 947000000
74
+ </us-gaap:StockholdersEquityIncludingPortionAttributableToNoncontrollingInterest>
75
+ <us-gaap:ProfitLoss contextRef="I2007_Ctx" unitRef="USD" decimals="-6">
76
+ 702000000
77
+ </us-gaap:ProfitLoss>
78
+ <us-gaap:ProfitLoss contextRef="I2008_Ctx" unitRef="USD" decimals="-6">
79
+ 802000000
80
+ </us-gaap:ProfitLoss>
81
+ <us-gaap:ProfitLoss contextRef="I2009_Ctx" unitRef="USD" decimals="-6">
82
+ 902000000
83
+ </us-gaap:ProfitLoss>
84
+ </xbrli:xbrl>
@@ -0,0 +1,10 @@
1
+ require File.dirname(__FILE__) + '/../../test_helper.rb'
2
+ class TestFloatPatch < Test::Unit::TestCase
3
+ def test_round_at
4
+ x=10.1234561
5
+ assert_equal(x.round_at(3), 10.123)
6
+ assert_equal(x.round_at(4), 10.1235)
7
+ assert_equal(x.round_at(5), 10.12346)
8
+ assert_equal(x.round_at(6), 10.123456)
9
+ end
10
+ end
@@ -0,0 +1,29 @@
1
+ require File.dirname(__FILE__) + '/../../test_helper.rb'
2
+ class TestHashUtil < Test::Unit::TestCase
3
+ def test_hash_to_object
4
+ h={"address"=>{"office"=>{"city"=>"NY"}, "home"=>{"city"=>"NJ", "route"=>["10E", "S", "R"]}}, "name"=>"selvan", "age"=>20, "route"=>["L", "25W", "E"]}
5
+ o=Xbrlware::HashUtil::to_obj(h)
6
+
7
+ assert_equal("selvan", o.name)
8
+ assert_equal(["L", "25W", "E"], o.route)
9
+ assert_equal(20, o.age)
10
+ assert_equal("NY", o.address.office.city)
11
+ assert_equal("NJ", o.address.home.city)
12
+ assert_equal(["10E", "S", "R"], o.address.home.route)
13
+ end
14
+
15
+ def test_ordered_hash
16
+ h=Xbrlware::HashUtil::OHash.new()
17
+ h["address"]="some-address"
18
+ h["name"]="some-name"
19
+ h["age"]=20
20
+ h["route"]="some-route"
21
+
22
+ assert_equal("address", h.keys[0])
23
+ assert_equal("name", h.keys[1])
24
+ assert_equal("age", h.keys[2])
25
+ assert_equal("route", h.keys[3])
26
+
27
+ assert(h.instance_of?(Hash))
28
+ end
29
+ end
@@ -0,0 +1,250 @@
1
+ require File.dirname(__FILE__) + '/../../test_helper.rb'
2
+
3
+ class TestXbrlInstance < Test::Unit::TestCase
4
+
5
+ @@xsd_file=File.dirname(__FILE__)+"/resources/us_gaap_schema_local.xsd"
6
+
7
+ def setup
8
+ xml_file=File.dirname(__FILE__)+"/resources/instance.xml"
9
+ XbrlTest::SchemaValidator.validate(xml_file, @@xsd_file)
10
+ @xbrl = Xbrlware::Instance.new(xml_file)
11
+ end
12
+
13
+ def test_get_all_contexts
14
+ ctx = @xbrl.context
15
+ assert_equal(8, ctx.size)
16
+ end
17
+
18
+ def test_get_context_by_dimension
19
+ ctx = @xbrl.context(nil, ["us-gaap:StatementEquityComponentsAxis"])
20
+ assert_equal(4, ctx.size)
21
+
22
+ ctx = @xbrl.context(nil, ["us-gaap:IndefiniteLivedIntangibleAssetsBySegmentAxis"])
23
+ assert_equal(2, ctx.size)
24
+
25
+ ctx = @xbrl.context(nil, ["doesnot_exist"])
26
+ assert_equal(0, ctx.size)
27
+ end
28
+
29
+
30
+ def test_ctx_groupby_dimension
31
+ group=@xbrl.ctx_groupby_dim
32
+ assert_equal(2, group.keys.size)
33
+ assert_equal(4, group["us-gaap:StatementEquityComponentsAxis"].size)
34
+ assert_equal(2, group["us-gaap:IndefiniteLivedIntangibleAssetsBySegmentAxis"].size)
35
+ end
36
+
37
+ def test_ctx_groupby_domain
38
+ group=@xbrl.ctx_groupby_dom
39
+ assert_equal(2, group.keys.size)
40
+ assert_equal(4, group["us-gaap:CommonStockMember"].size)
41
+ assert_equal(2, group["us-gaap:AdjustableRateResidentialMortgageMember"].size)
42
+ end
43
+
44
+ def test_ctx_groupby_domain_for_a_dimension
45
+ group=@xbrl.ctx_groupby_dom(["us-gaap:StatementEquityComponentsAxis"])
46
+ assert_equal(1, group.keys.size)
47
+ assert_equal(4, group["us-gaap:CommonStockMember"].size)
48
+
49
+ group=@xbrl.ctx_groupby_dom(["us-gaap:IndefiniteLivedIntangibleAssetsBySegmentAxis"])
50
+ assert_equal(1, group.keys.size)
51
+ assert_equal(2, group["us-gaap:AdjustableRateResidentialMortgageMember"].size)
52
+ end
53
+
54
+
55
+ def test_context_for_item
56
+ ctxs=@xbrl.context_for_item("ProfitLoss")
57
+ assert_equal(6, ctxs.size)
58
+ end
59
+
60
+ def test_item_ctx_filter
61
+ items=@xbrl.item_ctx_filter("ProfitLoss")
62
+ assert_equal(6, items.size)
63
+
64
+ items=@xbrl.item_ctx_filter("ProfitLoss") {|ctx| ctx.has_explicit_dimensions?}
65
+ assert_equal(4, items.size)
66
+
67
+ items=@xbrl.item_ctx_filter("ProfitLoss") {|ctx| ctx.has_explicit_dimensions?(["us-gaap:IndefiniteLivedIntangibleAssetsBySegmentAxis"])}
68
+ assert_equal(2, items.size)
69
+
70
+ items=@xbrl.item_ctx_filter("ProfitLoss") {|ctx| ctx.explicit_domains==["us-gaap:CommonStockMember"]}
71
+ assert_equal(2, items.size)
72
+
73
+ items=@xbrl.item_ctx_filter("ProfitLoss") {|ctx| ctx.explicit_domains==["us-gaap:CommonStockMember", "us-gaap:AdjustableRateResidentialMortgageMember"]}
74
+ assert_equal(2, items.size)
75
+ end
76
+
77
+ def test_get_all_units
78
+ units=@xbrl.unit
79
+ assert_equal(2, units.size)
80
+ end
81
+
82
+ def test_get_unit_by_id
83
+ unit=@xbrl.unit("USD")
84
+ assert_not_nil(unit)
85
+
86
+ unit=@xbrl.unit("not-exist")
87
+ assert_nil(unit)
88
+ end
89
+
90
+ def test_taxonomy
91
+ taxonomy_detail=@xbrl.taxonomy.definition("IncomeBeforeIncomeTaxes")
92
+ assert_not_nil(taxonomy_detail)
93
+ end
94
+
95
+ def test_item_with_taxonomy
96
+
97
+ items=@xbrl.item("IncomeBeforeIncomeTaxes")
98
+ assert_not_nil(items)
99
+ assert_equal(1, items.size)
100
+ assert_equal("credit", items[0].def["xbrli:balance"])
101
+ assert_equal("credit", items[0].meta["xbrli:balance"])
102
+
103
+ # taxonomy elements are created as instance methods and instance variable
104
+ # at runtime using ruby meta feature
105
+ # "-" is not valid in method / variable name. The below test covers this scenario
106
+ items=@xbrl.item("Income-Before-IncomeTaxes")
107
+ assert_not_nil(items)
108
+ assert_equal(1, items.size)
109
+ assert_equal("credit", items[0].meta["xbrli:balance"])
110
+ end
111
+
112
+ def test_create_instance_from_xbrl_string
113
+ xbrl_content=%{
114
+ <?xml version="1.0" encoding="US-ASCII"?>
115
+ <xbrli:xbrl xmlns:xbrli="http://www.xbrl.org/2003/instance" xmlns:dei="http://xbrl.us/dei/2009-01-31" xmlns:iso4217="http://www.xbrl.org/2003/iso4217"
116
+ xmlns:link="http://www.xbrl.org/2003/linkbase" xmlns:us-gaap="http://xbrl.us/us-gaap/2009-01-31"
117
+ xmlns:xbrldi="http://xbrl.org/2006/xbrldi" xmlns:xlink="http://www.w3.org/1999/xlink"
118
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:local="http://xbrl_us_gaap_local">
119
+ <link:schemaRef xlink:href="us_gaap_schema_local.xsd" xlink:type="simple"/>
120
+ <xbrli:context id="I2007Q">
121
+ <xbrli:entity>
122
+ <xbrli:identifier scheme="http://www.sec.gov/CIK">
123
+ 0000056873
124
+ </xbrli:identifier>
125
+ <xbrli:segment>
126
+ <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
127
+ </xbrli:segment>
128
+ </xbrli:entity>
129
+ <xbrli:period>
130
+ <xbrli:startDate>2007-01-02</xbrli:startDate>
131
+ <xbrli:endDate>2007-03-30</xbrli:endDate>
132
+ </xbrli:period>
133
+ </xbrli:context>
134
+
135
+ <xbrli:context id="I2008Q">
136
+ <xbrli:entity>
137
+ <xbrli:identifier scheme="http://www.sec.gov/CIK">
138
+ 0000056873
139
+ </xbrli:identifier>
140
+ <xbrli:segment>
141
+ <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
142
+ </xbrli:segment>
143
+ </xbrli:entity>
144
+ <xbrli:period>
145
+ <xbrli:startDate>2008-01-02</xbrli:startDate>
146
+ <xbrli:endDate>2008-03-30</xbrli:endDate>
147
+ </xbrli:period>
148
+ </xbrli:context>
149
+
150
+ <xbrli:context id="I2007Y-ADJ">
151
+ <xbrli:entity>
152
+ <xbrli:identifier scheme="http://www.sec.gov/CIK">
153
+ 0000056873
154
+ </xbrli:identifier>
155
+ <xbrli:segment>
156
+ <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
157
+ <xbrldi:explicitMember dimension="us-gaap:IndefiniteLivedIntangibleAssetsBySegmentAxis">us-gaap:AdjustableRateResidentialMortgageMember</xbrldi:explicitMember>
158
+ </xbrli:segment>
159
+ </xbrli:entity>
160
+ <xbrli:period>
161
+ <xbrli:startDate>2007-01-02</xbrli:startDate>
162
+ <xbrli:endDate>2007-12-30</xbrli:endDate>
163
+ </xbrli:period>
164
+ </xbrli:context>
165
+
166
+ <xbrli:context id="I2008Y-ADJ">
167
+ <xbrli:entity>
168
+ <xbrli:identifier scheme="http://www.sec.gov/CIK">
169
+ 0000056873
170
+ </xbrli:identifier>
171
+ <xbrli:segment>
172
+ <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
173
+ <xbrldi:explicitMember dimension="us-gaap:IndefiniteLivedIntangibleAssetsBySegmentAxis">us-gaap:AdjustableRateResidentialMortgageMember</xbrldi:explicitMember>
174
+ </xbrli:segment>
175
+ </xbrli:entity>
176
+ <xbrli:period>
177
+ <xbrli:startDate>2008-01-02</xbrli:startDate>
178
+ <xbrli:endDate>2008-12-30</xbrli:endDate>
179
+ </xbrli:period>
180
+ </xbrli:context>
181
+
182
+ <xbrli:context id="I2007Y">
183
+ <xbrli:entity>
184
+ <xbrli:identifier scheme="http://www.sec.gov/CIK">
185
+ 0000056873
186
+ </xbrli:identifier>
187
+ </xbrli:entity>
188
+ <xbrli:period>
189
+ <xbrli:startDate>2007-01-02</xbrli:startDate>
190
+ <xbrli:endDate>2007-12-30</xbrli:endDate>
191
+ </xbrli:period>
192
+ </xbrli:context>
193
+
194
+ <xbrli:context id="I2008Y">
195
+ <xbrli:entity>
196
+ <xbrli:identifier scheme="http://www.sec.gov/CIK">
197
+ 0000056873
198
+ </xbrli:identifier>
199
+ </xbrli:entity>
200
+ <xbrli:period>
201
+ <xbrli:startDate>2008-01-02</xbrli:startDate>
202
+ <xbrli:endDate>2008-12-30</xbrli:endDate>
203
+ </xbrli:period>
204
+ </xbrli:context>
205
+
206
+ <xbrli:context id="I2008">
207
+ <xbrli:entity>
208
+ <xbrli:identifier scheme="http://www.sec.gov/CIK">0000056873</xbrli:identifier>
209
+ </xbrli:entity>
210
+ <xbrli:period>
211
+ <xbrli:instant>2008-12-30</xbrli:instant>
212
+ </xbrli:period>
213
+ </xbrli:context>
214
+ <xbrli:context id="I2007">
215
+ <xbrli:entity>
216
+ <xbrli:identifier scheme="http://www.sec.gov/CIK">0000056873</xbrli:identifier>
217
+ </xbrli:entity>
218
+ <xbrli:period>
219
+ <xbrli:instant>2007-12-30</xbrli:instant>
220
+ </xbrli:period>
221
+ </xbrli:context>
222
+
223
+ <xbrli:unit id="USD">
224
+ <xbrli:measure>iso4217:USD</xbrli:measure>
225
+ </xbrli:unit>
226
+
227
+ <xbrli:unit id="AUD">
228
+ <xbrli:measure>iso4217:AUD</xbrli:measure>
229
+ </xbrli:unit>
230
+
231
+ <us-gaap:ProfitLoss contextRef="I2007Q" decimals="-6" unitRef="USD">947000000</us-gaap:ProfitLoss>
232
+ <us-gaap:ProfitLoss contextRef="I2008Q" unitRef="USD" decimals="-6">702000000</us-gaap:ProfitLoss>
233
+ <us-gaap:ProfitLoss contextRef="I2007Y-ADJ" unitRef="USD" decimals="-6">802000000</us-gaap:ProfitLoss>
234
+ <us-gaap:ProfitLoss contextRef="I2008Y-ADJ" unitRef="USD" decimals="-6">902000000</us-gaap:ProfitLoss>
235
+ <us-gaap:ProfitLoss contextRef="I2007Y" unitRef="USD" decimals="-6">805000000</us-gaap:ProfitLoss>
236
+ <us-gaap:ProfitLoss contextRef="I2008Y" unitRef="USD" decimals="-6">905000000</us-gaap:ProfitLoss>
237
+ <us-gaap:ReceivablesNetCurrent contextRef="I2007" decimals="-6" unitRef="USD">944000000</us-gaap:ReceivablesNetCurrent>
238
+ <us-gaap:ReceivablesNetCurrent contextRef="I2008" decimals="-6" unitRef="USD">945000000</us-gaap:ReceivablesNetCurrent>
239
+ <local:IncomeBeforeIncomeTaxes contextRef="I2007Q" unitRef="USD" decimals="-6">902000000</local:IncomeBeforeIncomeTaxes>
240
+ <local:Income-Before-IncomeTaxes contextRef="I2008Q" unitRef="USD" decimals="-6">902000000</local:Income-Before-IncomeTaxes>
241
+ </xbrli:xbrl>
242
+ }
243
+ @xbrl = Xbrlware::Instance.new(xbrl_content)
244
+
245
+ items=@xbrl.item("IncomeBeforeIncomeTaxes")
246
+ assert_not_nil(items)
247
+ assert_equal(1, items.size)
248
+ end
249
+
250
+ end