xbrlware-ce 1.0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/Copying.txt +13 -0
- data/License.txt +13 -0
- data/Rakefile.rb +124 -0
- data/Readme.txt +15 -0
- data/doc/classes/Edgar.html +144 -0
- data/doc/classes/Edgar/HTMLFeedDownloader.html +199 -0
- data/doc/classes/Edgar/RSSFeedDownloader.html +225 -0
- data/doc/classes/Xbrlware.html +350 -0
- data/doc/classes/Xbrlware/Context.html +429 -0
- data/doc/classes/Xbrlware/Entity.html +323 -0
- data/doc/classes/Xbrlware/Identifier.html +191 -0
- data/doc/classes/Xbrlware/Instance.html +742 -0
- data/doc/classes/Xbrlware/Item.html +278 -0
- data/doc/classes/Xbrlware/LBConstants.html +144 -0
- data/doc/classes/Xbrlware/Linkbase.html +131 -0
- data/doc/classes/Xbrlware/Linkbase/CalculationLinkbase.html +212 -0
- data/doc/classes/Xbrlware/Linkbase/CalculationLinkbase/Calculation.html +172 -0
- data/doc/classes/Xbrlware/Linkbase/CalculationLinkbase/Calculation/CalculationArc.html +166 -0
- data/doc/classes/Xbrlware/Linkbase/DefinitionLinkbase.html +210 -0
- data/doc/classes/Xbrlware/Linkbase/DefinitionLinkbase/Definition.html +204 -0
- data/doc/classes/Xbrlware/Linkbase/DefinitionLinkbase/Definition/DefinitionArc.html +160 -0
- data/doc/classes/Xbrlware/Linkbase/LabelLinkbase.html +239 -0
- data/doc/classes/Xbrlware/Linkbase/LabelLinkbase/Label.html +189 -0
- data/doc/classes/Xbrlware/Linkbase/Linkbase.html +172 -0
- data/doc/classes/Xbrlware/Linkbase/Linkbase/Link.html +217 -0
- data/doc/classes/Xbrlware/Linkbase/Linkbase/Link/Arc.html +284 -0
- data/doc/classes/Xbrlware/Linkbase/PresentationLinkbase.html +224 -0
- data/doc/classes/Xbrlware/Linkbase/PresentationLinkbase/Presentation.html +222 -0
- data/doc/classes/Xbrlware/Linkbase/PresentationLinkbase/Presentation/PresentationArc.html +160 -0
- data/doc/classes/Xbrlware/Taxonomy.html +369 -0
- data/doc/classes/Xbrlware/TaxonomyDefintion.html +177 -0
- data/doc/classes/Xbrlware/Unit.html +179 -0
- data/doc/classes/Xbrlware/Unit/Divide.html +165 -0
- data/doc/created.rid +1 -0
- data/doc/files/Readme_txt.html +124 -0
- data/doc/files/lib/edgar/edgar_data_downloader_rb.html +129 -0
- data/doc/files/lib/edgar/util_rb.html +129 -0
- data/doc/files/lib/edgar_rb.html +141 -0
- data/doc/files/lib/xbrlware/constants_rb.html +129 -0
- data/doc/files/lib/xbrlware/context_rb.html +129 -0
- data/doc/files/lib/xbrlware/date_util_rb.html +129 -0
- data/doc/files/lib/xbrlware/float_patch_rb.html +129 -0
- data/doc/files/lib/xbrlware/hash_util_rb.html +129 -0
- data/doc/files/lib/xbrlware/instance_rb.html +129 -0
- data/doc/files/lib/xbrlware/item_rb.html +129 -0
- data/doc/files/lib/xbrlware/linkbase/calculation_linkbase_rb.html +129 -0
- data/doc/files/lib/xbrlware/linkbase/definition_linkbase_rb.html +129 -0
- data/doc/files/lib/xbrlware/linkbase/label_linkbase_rb.html +129 -0
- data/doc/files/lib/xbrlware/linkbase/linkbase_rb.html +129 -0
- data/doc/files/lib/xbrlware/linkbase/presentation_linkbase_rb.html +129 -0
- data/doc/files/lib/xbrlware/meta_util_rb.html +129 -0
- data/doc/files/lib/xbrlware/taxonomy_rb.html +129 -0
- data/doc/files/lib/xbrlware/unit_rb.html +129 -0
- data/doc/files/lib/xbrlware/util_rb.html +129 -0
- data/doc/files/lib/xbrlware/xml_parser_rb.html +129 -0
- data/doc/files/lib/xbrlware_rb.html +163 -0
- data/doc/fr_class_index.html +55 -0
- data/doc/fr_file_index.html +48 -0
- data/doc/fr_method_index.html +104 -0
- data/doc/index.html +24 -0
- data/doc/rdoc-style.css +208 -0
- data/example/benchmark/instance_parser_benchmark.rb +25 -0
- data/example/case_study/buy_strategy.rb +34 -0
- data/example/case_study/c-20091230.xml +29 -0
- data/example/case_study/c_sell_strategy.rb +29 -0
- data/example/lang_integration/thrift/rating-client.py +21 -0
- data/example/lang_integration/thrift/rating-impl.rb +13 -0
- data/example/lang_integration/thrift/rating-server.rb +25 -0
- data/example/lang_integration/thrift/rating.thrift +52 -0
- data/example/quick_start/foo.rb +10 -0
- data/example/quick_start/foo.xml +29 -0
- data/example/quick_start/print_item.rb +27 -0
- data/lib/edgar.rb +30 -0
- data/lib/edgar/edgar_data_downloader.rb +126 -0
- data/lib/edgar/util.rb +30 -0
- data/lib/xbrlware.rb +65 -0
- data/lib/xbrlware/constants.rb +29 -0
- data/lib/xbrlware/context.rb +148 -0
- data/lib/xbrlware/date_util.rb +35 -0
- data/lib/xbrlware/float_patch.rb +26 -0
- data/lib/xbrlware/hash_util.rb +175 -0
- data/lib/xbrlware/instance.rb +406 -0
- data/lib/xbrlware/item.rb +115 -0
- data/lib/xbrlware/linkbase/calculation_linkbase.rb +137 -0
- data/lib/xbrlware/linkbase/definition_linkbase.rb +186 -0
- data/lib/xbrlware/linkbase/label_linkbase.rb +128 -0
- data/lib/xbrlware/linkbase/linkbase.rb +170 -0
- data/lib/xbrlware/linkbase/presentation_linkbase.rb +160 -0
- data/lib/xbrlware/meta_util.rb +45 -0
- data/lib/xbrlware/taxonomies/us_gaap_taxonomy_20090131.rb +40365 -0
- data/lib/xbrlware/taxonomy.rb +133 -0
- data/lib/xbrlware/unit.rb +42 -0
- data/lib/xbrlware/util.rb +83 -0
- data/lib/xbrlware/xml_parser.rb +122 -0
- data/setup.rb +1585 -0
- data/test/lib/edgar/edgar_data_downloader_test.rb +35 -0
- data/test/lib/edgar/resources/0000930413-09-005485-index.htm +331 -0
- data/test/lib/edgar/resources/usgaap.rss.xml +2861 -0
- data/test/lib/xbrlware/411_footnotes_test.rb +65 -0
- data/test/lib/xbrlware/42_schemaref_test.rb +20 -0
- data/test/lib/xbrlware/46_item_test.rb +253 -0
- data/test/lib/xbrlware/47_context_test.rb +129 -0
- data/test/lib/xbrlware/48_unit_test.rb +45 -0
- data/test/lib/xbrlware/49_tuple_test.rb +12 -0
- data/test/lib/xbrlware/date_util_test.rb +24 -0
- data/test/lib/xbrlware/dimension/context_explicit_dimension_test.rb +40 -0
- data/test/lib/xbrlware/dimension/resources/context_explicit_dimension.xml +84 -0
- data/test/lib/xbrlware/float_patch_test.rb +10 -0
- data/test/lib/xbrlware/hash_util_test.rb +29 -0
- data/test/lib/xbrlware/instance_test.rb +250 -0
- data/test/lib/xbrlware/linkbase/calculation_linkbase_test.rb +39 -0
- data/test/lib/xbrlware/linkbase/definition_linkbase_test.rb +35 -0
- data/test/lib/xbrlware/linkbase/label_linkbase_test.rb +22 -0
- data/test/lib/xbrlware/linkbase/linkbase_test.rb +36 -0
- data/test/lib/xbrlware/linkbase/linkbase_test_util.rb +98 -0
- data/test/lib/xbrlware/linkbase/presentation_linkbase_test.rb +33 -0
- data/test/lib/xbrlware/linkbase/report.html +62 -0
- data/test/lib/xbrlware/linkbase/resources/cal.xml +219 -0
- data/test/lib/xbrlware/linkbase/resources/def.xml +186 -0
- data/test/lib/xbrlware/linkbase/resources/def_with_multiple_dimension.xml +41 -0
- data/test/lib/xbrlware/linkbase/resources/instance.xml +5822 -0
- data/test/lib/xbrlware/linkbase/resources/lab.xml +782 -0
- data/test/lib/xbrlware/linkbase/resources/pre.xml +485 -0
- data/test/lib/xbrlware/linkbase/resources/report_10_q.htm +12327 -0
- data/test/lib/xbrlware/linkbase/resources/taxonomy.xsd +178 -0
- data/test/lib/xbrlware/linkbase/sample_html_report.html +40 -0
- data/test/lib/xbrlware/meta_util_test.rb +23 -0
- data/test/lib/xbrlware/resources/411/411_footnotes.xml +66 -0
- data/test/lib/xbrlware/resources/42/42_schema_ref_with_base.xml +7 -0
- data/test/lib/xbrlware/resources/42/42_schema_ref_without_base.xml +7 -0
- data/test/lib/xbrlware/resources/46/46_item_value.xml +61 -0
- data/test/lib/xbrlware/resources/47/472_period_forever.xml +29 -0
- data/test/lib/xbrlware/resources/47/472_period_instant.xml +24 -0
- data/test/lib/xbrlware/resources/47/472_period_start_dt_and_end_dt.xml +30 -0
- data/test/lib/xbrlware/resources/47/4731_entity_identifier.xml +29 -0
- data/test/lib/xbrlware/resources/47/4732_entity_segment_not_present.xml +24 -0
- data/test/lib/xbrlware/resources/47/4732_entity_segment_present.xml +30 -0
- data/test/lib/xbrlware/resources/47/474_scenario_not_present.xml +26 -0
- data/test/lib/xbrlware/resources/47/474_scenario_present.xml +30 -0
- data/test/lib/xbrlware/resources/47/47_multiple_contexts.xml +36 -0
- data/test/lib/xbrlware/resources/48/482_unit_measure.xml +32 -0
- data/test/lib/xbrlware/resources/48/483_unit_divide.xml +39 -0
- data/test/lib/xbrlware/resources/48/48_multiple_units.xml +43 -0
- data/test/lib/xbrlware/resources/49/49_tuple.xml +61 -0
- data/test/lib/xbrlware/resources/49_tuple.xsd +44 -0
- data/test/lib/xbrlware/resources/instance.xml +128 -0
- data/test/lib/xbrlware/resources/report_test_xbrl_files/cal.xml +219 -0
- data/test/lib/xbrlware/resources/report_test_xbrl_files/def.xml +186 -0
- data/test/lib/xbrlware/resources/report_test_xbrl_files/instance.xml +5822 -0
- data/test/lib/xbrlware/resources/report_test_xbrl_files/lab.xml +782 -0
- data/test/lib/xbrlware/resources/report_test_xbrl_files/pre.xml +485 -0
- data/test/lib/xbrlware/resources/report_test_xbrl_files/report/report_index.html +62 -0
- data/test/lib/xbrlware/resources/report_test_xbrl_files/taxonomy.xsd +178 -0
- data/test/lib/xbrlware/resources/taxonomy_test_files/1/cal.xml +223 -0
- data/test/lib/xbrlware/resources/taxonomy_test_files/1/def.xml +190 -0
- data/test/lib/xbrlware/resources/taxonomy_test_files/1/lab.xml +786 -0
- data/test/lib/xbrlware/resources/taxonomy_test_files/1/pre.xml +489 -0
- data/test/lib/xbrlware/resources/taxonomy_test_files/1/taxonomy.xsd +177 -0
- data/test/lib/xbrlware/resources/taxonomy_test_files/2/linkbases/cal.xml +223 -0
- data/test/lib/xbrlware/resources/taxonomy_test_files/2/linkbases/def.xml +190 -0
- data/test/lib/xbrlware/resources/taxonomy_test_files/2/linkbases/lab.xml +786 -0
- data/test/lib/xbrlware/resources/taxonomy_test_files/2/linkbases/pre.xml +489 -0
- data/test/lib/xbrlware/resources/taxonomy_test_files/2/taxonomy.xsd +175 -0
- data/test/lib/xbrlware/resources/taxonomy_test_files/3/taxonomy.xsd +175 -0
- data/test/lib/xbrlware/resources/us_gaap_schema.xsd +8 -0
- data/test/lib/xbrlware/resources/us_gaap_schema_local.xsd +10 -0
- data/test/lib/xbrlware/resources/util_test_xbrl_files/cal.xml +219 -0
- data/test/lib/xbrlware/resources/util_test_xbrl_files/def.xml +186 -0
- data/test/lib/xbrlware/resources/util_test_xbrl_files/instance.xml +5822 -0
- data/test/lib/xbrlware/resources/util_test_xbrl_files/lab.xml +782 -0
- data/test/lib/xbrlware/resources/util_test_xbrl_files/pre.xml +485 -0
- data/test/lib/xbrlware/resources/util_test_xbrl_files/taxonomy.xsd +178 -0
- data/test/lib/xbrlware/resources/xbrl_xsd/dei-2009-01-31.xsd +162 -0
- data/test/lib/xbrlware/resources/xbrl_xsd/dei-std-2009-01-31.xsd +23 -0
- data/test/lib/xbrlware/resources/xbrl_xsd/negated-2008-03-31.xsd +23 -0
- data/test/lib/xbrlware/resources/xbrl_xsd/ref-2006-02-27.xsd +121 -0
- data/test/lib/xbrlware/resources/xbrl_xsd/us-gaap-2009-01-31.xsd +13474 -0
- data/test/lib/xbrlware/resources/xbrl_xsd/us-roles-2009-01-31.xsd +2283 -0
- data/test/lib/xbrlware/resources/xbrl_xsd/us-types-2009-01-31.xsd +368 -0
- data/test/lib/xbrlware/resources/xbrl_xsd/xbrl-instance-2003-12-31.xsd +772 -0
- data/test/lib/xbrlware/resources/xbrl_xsd/xbrl-linkbase-2003-12-31.xsd +477 -0
- data/test/lib/xbrlware/resources/xbrl_xsd/xbrldi-2006.xsd +41 -0
- data/test/lib/xbrlware/resources/xbrl_xsd/xbrldt-2005.xsd +53 -0
- data/test/lib/xbrlware/resources/xbrl_xsd/xl-2003-12-31.xsd +246 -0
- data/test/lib/xbrlware/resources/xbrl_xsd/xlink-2003-12-31.xsd +117 -0
- data/test/lib/xbrlware/taxonomy_test.rb +124 -0
- data/test/lib/xbrlware/util_test.rb +18 -0
- data/test/lib/xbrlware/xml_parser_test.rb +142 -0
- data/test/schema_validator_jruby.rb +40 -0
- data/test/schema_validator_ruby.rb +7 -0
- data/test/scratchpad/block.rb +36 -0
- data/test/test_helper.rb +21 -0
- data/xbrlware.iml +30 -0
- 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
|