xbrlware-ce 1.0.2

Sign up to get free protection for your applications and to get access to all the features.
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,65 @@
1
+ require File.dirname(__FILE__) + '/../../test_helper.rb'
2
+ class TestFootNotes < Test::Unit::TestCase
3
+ @@xsd_file=File.dirname(__FILE__)+"/resources/us_gaap_schema_local.xsd"
4
+
5
+ def setup
6
+ xml_file=File.dirname(__FILE__)+"/resources/411/411_footnotes.xml"
7
+ XbrlTest::SchemaValidator.validate(xml_file, @@xsd_file)
8
+ @xbrl = Xbrlware::Instance.new(xml_file)
9
+ end
10
+
11
+ def test_get_all_notes
12
+ itemid_notes=@xbrl.footnotes
13
+ expected_items=["fnid_667467_1005_80000001", "fnid_667467_9004_70000023", "fnid_667467_4005_80000003"]
14
+ assert_equal(expected_items.sort, itemid_notes.keys.sort)
15
+
16
+ assert_equal(2, itemid_notes["fnid_667467_1005_80000001"]["en-US"].size)
17
+ assert_equal(1, itemid_notes["fnid_667467_1005_80000001"]["de"].size)
18
+
19
+ assert_equal(1, itemid_notes["fnid_667467_4005_80000003"]["en-US"].size)
20
+
21
+ assert_equal(2, itemid_notes["fnid_667467_9004_70000023"]["en-US"].size)
22
+ end
23
+
24
+ def test_get_notes_for_a_item
25
+ lang_notes=@xbrl.footnotes("fnid_667467_1005_80000001")
26
+ assert_equal(2, lang_notes.keys.size)
27
+
28
+ assert_equal(2, lang_notes["en-US"].size)
29
+ assert_equal(1, lang_notes["de"].size)
30
+
31
+ lang_notes=@xbrl.footnotes("not_exist")
32
+ assert_nil(lang_notes)
33
+
34
+ end
35
+
36
+ def test_get_notes_for_a_item_and_lang
37
+ notes=@xbrl.footnotes("fnid_667467_1005_80000001", "en-US")
38
+ assert_equal(2, notes.size)
39
+
40
+ notes=@xbrl.footnotes("fnid_667467_1005_80000001", "de")
41
+ assert_equal(1, notes.size)
42
+
43
+ notes=@xbrl.footnotes("fnid_667467_1005_80000001", "fr")
44
+ assert_nil(notes)
45
+ end
46
+
47
+ def test_exception_when_item_id_is_nil_and_lang_is_not_nil
48
+ begin
49
+ @xbrl.footnotes(nil, "en-US")
50
+ fail
51
+ rescue Exception=> e
52
+ end
53
+ end
54
+
55
+ def test_xbrl_item_has_footnotes
56
+ items=@xbrl.item("StockholdersEquity")
57
+ assert_equal(1, items.size)
58
+ assert_equal(2, items[0].footnotes["en-US"].size)
59
+
60
+ items=@xbrl.item("SalesRevenueGoodsNet")
61
+ assert_equal(1, items.size)
62
+ assert_nil(items[0].footnotes)
63
+
64
+ end
65
+ end
@@ -0,0 +1,20 @@
1
+ require File.dirname(__FILE__) + '/../../test_helper.rb'
2
+
3
+ class TestSchemaRefContext < Test::Unit::TestCase
4
+
5
+ @@xsd_file=File.dirname(__FILE__)+"/resources/us_gaap_schema_local.xsd"
6
+
7
+ def test_42_schema_ref_with_base
8
+ xml_file=File.dirname(__FILE__)+"/resources/42/42_schema_ref_with_base.xml"
9
+ XbrlTest::SchemaValidator.validate(xml_file, @@xsd_file)
10
+ xbrl = Xbrlware::Instance.new(xml_file)
11
+ assert_equal("http://www.a.com/schema.xsd", xbrl.schema_ref)
12
+ end
13
+
14
+ def test_42_schema_ref_without_base
15
+ xml_file=File.dirname(__FILE__)+"/resources/42/42_schema_ref_without_base.xml"
16
+ XbrlTest::SchemaValidator.validate(xml_file, @@xsd_file)
17
+ xbrl = Xbrlware::Instance.new(xml_file)
18
+ assert_equal("schema.xsd", xbrl.schema_ref)
19
+ end
20
+ end
@@ -0,0 +1,253 @@
1
+ require File.dirname(__FILE__) + '/../../test_helper.rb'
2
+
3
+ class TestItem < Test::Unit::TestCase
4
+ @@xsd_file=File.dirname(__FILE__)+"/resources/us_gaap_schema_local.xsd"
5
+
6
+ def test_464_precision
7
+ value=Xbrlware::Item::ItemValue.new("476.334", "INF")
8
+ assert_equal("476.334", value.precision)
9
+
10
+ value=Xbrlware::Item::ItemValue.new("205", "3")
11
+ assert_equal("205.0", value.precision)
12
+
13
+ value=Xbrlware::Item::ItemValue.new("2002000", "4")
14
+ assert_equal("2002000.0", value.precision)
15
+
16
+ value=Xbrlware::Item::ItemValue.new("-2002000", "4")
17
+ assert_equal("-2002000.0", value.precision)
18
+
19
+ value=Xbrlware::Item::ItemValue.new("123.456", "5")
20
+ assert_equal("123.46", value.precision)
21
+
22
+ value=Xbrlware::Item::ItemValue.new("-123.456", "5")
23
+ assert_equal("-123.46", value.precision)
24
+
25
+ value=Xbrlware::Item::ItemValue.new("123.456", "2")
26
+ assert_equal("120.0", value.precision)
27
+
28
+ value=Xbrlware::Item::ItemValue.new("-123.456", "2")
29
+ assert_equal("-120.0", value.precision)
30
+
31
+ value=Xbrlware::Item::ItemValue.new("123.456", "7")
32
+ assert_equal("123.456", value.precision)
33
+
34
+ value=Xbrlware::Item::ItemValue.new("-123.456", "7")
35
+ assert_equal("-123.456", value.precision)
36
+
37
+ value=Xbrlware::Item::ItemValue.new("123.416", "4")
38
+ assert_equal("123.4", value.precision)
39
+
40
+ value=Xbrlware::Item::ItemValue.new("-123.416", "4")
41
+ assert_equal("-123.4", value.precision)
42
+
43
+ value=Xbrlware::Item::ItemValue.new("-123.000000000416", "14")
44
+ assert_equal("-123.00000000042", value.precision)
45
+
46
+ value=Xbrlware::Item::ItemValue.new("0.000256", "3")
47
+ assert_equal("0.000256", value.precision)
48
+
49
+ value=Xbrlware::Item::ItemValue.new("-0.000256", "3")
50
+ assert_equal("-0.000256", value.precision)
51
+
52
+ value=Xbrlware::Item::ItemValue.new("0.000256", "2")
53
+ assert_equal("0.00026", value.precision)
54
+
55
+ value=Xbrlware::Item::ItemValue.new("-0.000256", "2")
56
+ assert_equal("-0.00026", value.precision)
57
+
58
+ value=Xbrlware::Item::ItemValue.new("0.1", "2")
59
+ assert_equal("0.1", value.precision)
60
+
61
+ value=Xbrlware::Item::ItemValue.new("-0.1", "2")
62
+ assert_equal("-0.1", value.precision)
63
+
64
+ value=Xbrlware::Item::ItemValue.new("0.49787", "2")
65
+ assert_equal("0.5", value.precision)
66
+
67
+ value=Xbrlware::Item::ItemValue.new("0.49787", "3")
68
+ assert_equal("0.498", value.precision)
69
+
70
+ value=Xbrlware::Item::ItemValue.new("9.999991", "2")
71
+ assert_equal("10.0", value.precision)
72
+
73
+ value=Xbrlware::Item::ItemValue.new("9.999991", "3")
74
+ assert_equal("10.0", value.precision)
75
+
76
+ value=Xbrlware::Item::ItemValue.new("0.00000000000000049787", "3")
77
+ assert_equal("0.000000000000000498", value.precision)
78
+
79
+ value=Xbrlware::Item::ItemValue.new("-0.00000000000000049787", "3")
80
+ assert_equal("-0.000000000000000498", value.precision)
81
+
82
+ value=Xbrlware::Item::ItemValue.new("12345678901234567890.00000000000000049787", "38")
83
+ assert_equal("12345678901234567890.000000000000000498", value.precision)
84
+
85
+ value=Xbrlware::Item::ItemValue.new("-12345678901234567890.00000000000000049787", "38")
86
+ assert_equal("-12345678901234567890.000000000000000498", value.precision)
87
+
88
+ value=Xbrlware::Item::ItemValue.new("12345678901234567890", "19")
89
+ assert_equal("12345678901234567890.0", value.precision)
90
+
91
+ value=Xbrlware::Item::ItemValue.new("-12345678901234567890", "19")
92
+ assert_equal("-12345678901234567890.0", value.precision)
93
+
94
+ value=Xbrlware::Item::ItemValue.new("12345678901234567890", "18")
95
+ assert_equal("12345678901234567800.0", value.precision)
96
+
97
+ value=Xbrlware::Item::ItemValue.new("-12345678901234567890", "18")
98
+ assert_equal("-12345678901234567800.0", value.precision)
99
+
100
+ value=Xbrlware::Item::ItemValue.new("123.45e5", "3")
101
+ assert_equal("12300000.0", value.precision)
102
+
103
+ value=Xbrlware::Item::ItemValue.new("-123.45e5", "3")
104
+ assert_equal("-12300000.0", value.precision)
105
+ end
106
+
107
+ def test_465_decimals
108
+ value=Xbrlware::Item::ItemValue.new("2002000", nil, "-4")
109
+ assert_equal("2000000.0", value.decimals)
110
+
111
+ value=Xbrlware::Item::ItemValue.new("-2002000", nil, "-4")
112
+ assert_equal("-2000000.0", value.decimals)
113
+
114
+ value=Xbrlware::Item::ItemValue.new("10", nil, "0")
115
+ assert_equal("10.0", value.decimals)
116
+
117
+ value=Xbrlware::Item::ItemValue.new("-10", nil, "0")
118
+ assert_equal("-10.0", value.decimals)
119
+
120
+ value=Xbrlware::Item::ItemValue.new("-2002000", nil, "-4")
121
+ assert_equal("-2000000.0", value.decimals)
122
+
123
+ value=Xbrlware::Item::ItemValue.new("123.45e5", nil, "-3")
124
+ assert_equal("12345000.0", value.decimals)
125
+
126
+ value=Xbrlware::Item::ItemValue.new("-123.45e5", nil, "-3")
127
+ assert_equal("-12345000.0", value.decimals)
128
+
129
+ value=Xbrlware::Item::ItemValue.new("123.45e5", nil, "-5")
130
+ assert_equal("12300000.0", value.decimals)
131
+
132
+ value=Xbrlware::Item::ItemValue.new("-123.45e5", nil, "-5")
133
+ assert_equal("-12300000.0", value.decimals)
134
+
135
+ value=Xbrlware::Item::ItemValue.new("123.45", nil, "-2")
136
+ assert_equal("100.0", value.decimals)
137
+
138
+ value=Xbrlware::Item::ItemValue.new("-123.45", nil, "-2")
139
+ assert_equal("-100.0", value.decimals)
140
+
141
+ value=Xbrlware::Item::ItemValue.new("123.45", nil, "-3")
142
+ assert_equal("0.0", value.decimals)
143
+
144
+ value=Xbrlware::Item::ItemValue.new("-123.45", nil, "-3")
145
+ # JRUBY returns 0.0, where as MRI returns -0.0
146
+ assert_equal(0, value.decimals.to_i)
147
+
148
+ value=Xbrlware::Item::ItemValue.new("123.4567", nil, "2")
149
+ assert_equal("123.46", value.decimals)
150
+
151
+ value=Xbrlware::Item::ItemValue.new("-123.4567", nil, "2")
152
+ assert_equal("-123.46", value.decimals)
153
+
154
+ value=Xbrlware::Item::ItemValue.new("123.45678999e5", nil, "2")
155
+ assert_equal("12345679.0", value.decimals)
156
+
157
+ value=Xbrlware::Item::ItemValue.new("-123.45678999e5", nil, "2")
158
+ assert_equal("-12345679.0", value.decimals)
159
+
160
+ value=Xbrlware::Item::ItemValue.new("0.001E-2", nil, "5")
161
+ assert_equal("0.00001", value.decimals)
162
+
163
+ value=Xbrlware::Item::ItemValue.new("-0.001E-2", nil, "5")
164
+ assert_equal("-0.00001", value.decimals)
165
+
166
+ value=Xbrlware::Item::ItemValue.new("0.0015E-2", nil, "5")
167
+ assert_equal("0.00002", value.decimals)
168
+
169
+ value=Xbrlware::Item::ItemValue.new("-0.0015E-2", nil, "5")
170
+ assert_equal("-0.00002", value.decimals)
171
+ end
172
+
173
+ def test_single_item
174
+ xml_file=File.dirname(__FILE__)+"/resources/46/46_item_value.xml"
175
+ XbrlTest::SchemaValidator.validate(xml_file, @@xsd_file)
176
+ xbrl = Xbrlware::Instance.new(xml_file)
177
+ items = xbrl.item("StockholdersEquityIncludingPortionAttributableToNoncontrollingInterest")
178
+ assert_equal(1, items.size)
179
+ assert_equal("947000000.0", items[0].value)
180
+ end
181
+
182
+ def test_multiple_item_for_given_itemname
183
+ xml_file=File.dirname(__FILE__)+"/resources/46/46_item_value.xml"
184
+ XbrlTest::SchemaValidator.validate(xml_file, @@xsd_file)
185
+ xbrl = Xbrlware::Instance.new(xml_file)
186
+ items = xbrl.item("SalesRevenueGoodsNet")
187
+ assert_equal(4, items.size)
188
+ assert_equal("18094000000.0", items[0].value)
189
+ assert_equal("15094000000.0", items[1].value)
190
+ end
191
+
192
+
193
+ def test_context_present
194
+ xml_file=File.dirname(__FILE__)+"/resources/46/46_item_value.xml"
195
+ XbrlTest::SchemaValidator.validate(xml_file, @@xsd_file)
196
+ xbrl = Xbrlware::Instance.new(xml_file)
197
+ item = xbrl.item("StockholdersEquityIncludingPortionAttributableToNoncontrollingInterest")[0]
198
+ assert_equal("0000056873", item.context.entity.identifier.value )
199
+ end
200
+
201
+ def test_unit_present
202
+ xml_file=File.dirname(__FILE__)+"/resources/46/46_item_value.xml"
203
+ XbrlTest::SchemaValidator.validate(xml_file, @@xsd_file)
204
+ xbrl = Xbrlware::Instance.new(xml_file)
205
+ item = xbrl.item("StockholdersEquityIncludingPortionAttributableToNoncontrollingInterest")[0]
206
+ assert_equal("iso4217:USD", item.unit.measure[0])
207
+ end
208
+
209
+ def test_item_for_itemname_and_contextref
210
+ xml_file=File.dirname(__FILE__)+"/resources/46/46_item_value.xml"
211
+ XbrlTest::SchemaValidator.validate(xml_file, @@xsd_file)
212
+ xbrl = Xbrlware::Instance.new(xml_file)
213
+ items = xbrl.item("SalesRevenueGoodsNet", "D2008Q4")
214
+ assert_equal("18094000000.0", items[0].value)
215
+ end
216
+
217
+ def test_item_for_itemname_and_unitref
218
+ xml_file=File.dirname(__FILE__)+"/resources/46/46_item_value.xml"
219
+ XbrlTest::SchemaValidator.validate(xml_file, @@xsd_file)
220
+ xbrl = Xbrlware::Instance.new(xml_file)
221
+ items = xbrl.item("SalesRevenueGoodsNet", nil, "AUD")
222
+ assert_equal("9047000000.0", items[0].value)
223
+ assert_equal("7547000000.0", items[1].value)
224
+ end
225
+
226
+ def test_item_for_itemname_and_contextref_and_unitref
227
+ xml_file=File.dirname(__FILE__)+"/resources/46/46_item_value.xml"
228
+ XbrlTest::SchemaValidator.validate(xml_file, @@xsd_file)
229
+ xbrl = Xbrlware::Instance.new(xml_file)
230
+ items = xbrl.item("SalesRevenueGoodsNet", "D2008Q4", "AUD")
231
+ assert_equal(1, items.size)
232
+ assert_equal("9047000000.0", items[0].value)
233
+ end
234
+
235
+ def test_item_formatting
236
+ xml_file=File.dirname(__FILE__)+"/resources/46/46_item_value.xml"
237
+ XbrlTest::SchemaValidator.validate(xml_file, @@xsd_file)
238
+ xbrl = Xbrlware::Instance.new(xml_file)
239
+ items = xbrl.item("SalesRevenueGoodsNet", "D2008Q4", "AUD")
240
+ assert_equal(1, items.size)
241
+ assert_equal("9047.0", items[0].value{|value| (BigDecimal(value)/1000000).round(2).to_s("F")})
242
+ end
243
+
244
+ def test_empty_item
245
+ xml_file=File.dirname(__FILE__)+"/resources/46/46_item_value.xml"
246
+ XbrlTest::SchemaValidator.validate(xml_file, @@xsd_file)
247
+ xbrl = Xbrlware::Instance.new(xml_file)
248
+ items = xbrl.item("CommitmentsAndContingencies2009")
249
+ assert_equal(1, items.size)
250
+ assert_nil(items[0].value)
251
+ end
252
+
253
+ end
@@ -0,0 +1,129 @@
1
+ require File.dirname(__FILE__) + '/../../test_helper.rb'
2
+
3
+ class TestContext < Test::Unit::TestCase
4
+
5
+ @@xsd_file=File.dirname(__FILE__)+"/resources/us_gaap_schema_local.xsd"
6
+
7
+ def test_472_period_start_dt_and_end_dt
8
+ xml_file=File.dirname(__FILE__)+"/resources/47/472_period_start_dt_and_end_dt.xml"
9
+ XbrlTest::SchemaValidator.validate(xml_file, @@xsd_file)
10
+ xbrl = Xbrlware::Instance.new(xml_file)
11
+ p=xbrl.context("I2007_CommonStockMember").period
12
+ assert_equal("2008-02-02", p["start_date"])
13
+ assert_equal("2008-03-02", p["end_date"])
14
+ end
15
+
16
+ def test_472_period_instant
17
+ xml_file=File.dirname(__FILE__)+"/resources/47/472_period_instant.xml"
18
+ XbrlTest::SchemaValidator.validate(xml_file, @@xsd_file)
19
+ xbrl = Xbrlware::Instance.new(xml_file)
20
+ ctx=xbrl.context("I2007_CommonStockMember")
21
+ p=ctx.period
22
+ assert_equal("2008-02-02", p)
23
+ end
24
+
25
+ def test_472_period_forever
26
+ xml_file=File.dirname(__FILE__)+"/resources/47/472_period_forever.xml"
27
+ XbrlTest::SchemaValidator.validate(xml_file, @@xsd_file)
28
+ xbrl = Xbrlware::Instance.new(xml_file)
29
+ p=xbrl.context("I2007_CommonStockMember").period
30
+ assert_equal(Xbrlware::Context::PERIOD_FOREVER, p)
31
+ end
32
+
33
+ def test_4731_entity_identifier
34
+ xml_file=File.dirname(__FILE__)+"/resources/47/4731_entity_identifier.xml"
35
+ XbrlTest::SchemaValidator.validate(xml_file, @@xsd_file)
36
+ xbrl = Xbrlware::Instance.new(xml_file)
37
+ entity =xbrl.context("I2007_CommonStockMember").entity
38
+ assert_equal("0000056873", entity.identifier.value)
39
+ assert_equal("http://www.sec.gov/CIK", entity.identifier.scheme)
40
+ end
41
+
42
+ def test_4732_entity_segment_present
43
+ xml_file=File.dirname(__FILE__)+"/resources/47/4732_entity_segment_present.xml"
44
+ XbrlTest::SchemaValidator.validate(xml_file, @@xsd_file)
45
+ xbrl = Xbrlware::Instance.new(xml_file)
46
+ ctx=xbrl.context("I2007_CommonStockMember")
47
+ entity =ctx.entity
48
+ explicitmember0 = {"dimension" => "us-gaap:StatementEquityComponentsAxis", "content"=> "us-gaap:CommonStockMember"}
49
+ explicitmember1 = {"dimension" => "us-gaap:StatementEquityComponentsAxis", "content"=> "us-gaap:PreferredStockMember"}
50
+ expected = {"explicitMember" => [explicitmember0, explicitmember1] }
51
+ assert_equal(expected, entity.segment)
52
+ end
53
+
54
+ def test_4732_entity_segment_not_present
55
+ xml_file=File.dirname(__FILE__)+"/resources/47/4732_entity_segment_not_present.xml"
56
+ XbrlTest::SchemaValidator.validate(xml_file, @@xsd_file)
57
+ xbrl = Xbrlware::Instance.new(xml_file)
58
+ ctx=xbrl.context("I2007_CommonStockMember")
59
+ entity =ctx.entity
60
+ assert_equal(nil, entity.segment)
61
+ end
62
+
63
+
64
+ def test_474_scenario_present
65
+ xml_file=File.dirname(__FILE__)+"/resources/47/474_scenario_present.xml"
66
+ XbrlTest::SchemaValidator.validate(xml_file, @@xsd_file)
67
+ xbrl = Xbrlware::Instance.new(xml_file)
68
+ scenario =xbrl.context("I2007_CommonStockMember").scenario
69
+ explicitmember0 = {"dimension" => "us-gaap:StatementEquityComponentsAxis", "content"=> "us-gaap:CommonStockMember"}
70
+ explicitmember1 = {"dimension" => "us-gaap:StatementEquityComponentsAxis", "content"=> "us-gaap:CommonStockMember another instance"}
71
+ expected = {"explicitMember" => [explicitmember0, explicitmember1] }
72
+ assert_equal(expected, scenario)
73
+ end
74
+
75
+ def test_474_scenario_not_present
76
+ xml_file=File.dirname(__FILE__)+"/resources/47/474_scenario_not_present.xml"
77
+ XbrlTest::SchemaValidator.validate(xml_file, @@xsd_file)
78
+ xbrl = Xbrlware::Instance.new(xml_file)
79
+ scenario =xbrl.context("I2007_CommonStockMember").scenario
80
+ assert_equal(nil, scenario)
81
+ end
82
+
83
+ def test_get_all_contexts
84
+ xml_file=File.dirname(__FILE__)+"/resources/47/47_multiple_contexts.xml"
85
+ XbrlTest::SchemaValidator.validate(xml_file, @@xsd_file)
86
+ xbrl = Xbrlware::Instance.new(xml_file)
87
+ ctx =xbrl.context
88
+ assert_equal(2, ctx.size)
89
+ end
90
+
91
+ def test_context_dimensions
92
+ xml_file=File.dirname(__FILE__)+"/resources/instance.xml"
93
+ XbrlTest::SchemaValidator.validate(xml_file, @@xsd_file)
94
+ xbrl = Xbrlware::Instance.new(xml_file)
95
+ ctx=xbrl.context("I2007Q")
96
+ assert_equal(["us-gaap:StatementEquityComponentsAxis"], ctx.explicit_dimensions)
97
+
98
+ ctx=xbrl.context("I2007Y-ADJ")
99
+ assert_equal(["us-gaap:StatementEquityComponentsAxis", "us-gaap:IndefiniteLivedIntangibleAssetsBySegmentAxis"], ctx.explicit_dimensions)
100
+ end
101
+
102
+ def test_context_domains
103
+ xml_file=File.dirname(__FILE__)+"/resources/instance.xml"
104
+ XbrlTest::SchemaValidator.validate(xml_file, @@xsd_file)
105
+ xbrl = Xbrlware::Instance.new(xml_file)
106
+ ctx=xbrl.context("I2007Q")
107
+ assert_equal(["us-gaap:CommonStockMember"], ctx.explicit_domains)
108
+
109
+ ctx=xbrl.context("I2007Y-ADJ")
110
+ assert_equal(["us-gaap:CommonStockMember", "us-gaap:AdjustableRateResidentialMortgageMember"], ctx.explicit_domains)
111
+ end
112
+
113
+ def test_context_dimension_domain
114
+ xml_file=File.dirname(__FILE__)+"/resources/instance.xml"
115
+ XbrlTest::SchemaValidator.validate(xml_file, @@xsd_file)
116
+ xbrl = Xbrlware::Instance.new(xml_file)
117
+ ctx=xbrl.context("I2007Y-ADJ")
118
+ assert_equal(1, ctx.explicit_dimensions_domains["us-gaap:StatementEquityComponentsAxis"].size)
119
+ assert_equal(1, ctx.explicit_dimensions_domains["us-gaap:IndefiniteLivedIntangibleAssetsBySegmentAxis"].size)
120
+ end
121
+
122
+ def test_context_not_exist
123
+ xml_file=File.dirname(__FILE__)+"/resources/instance.xml"
124
+ XbrlTest::SchemaValidator.validate(xml_file, @@xsd_file)
125
+ xbrl = Xbrlware::Instance.new(xml_file)
126
+ ctx=xbrl.context("not-exist")
127
+ assert_nil(ctx)
128
+ end
129
+ end