rtm 0.2.0 → 0.2.1
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.
- data/README +38 -3
- data/lib/rtm.rb +25 -47
- data/lib/rtm/axes.rb +7 -4
- data/lib/rtm/axes/association.rb +1 -1
- data/lib/rtm/axes/associations.rb +1 -1
- data/lib/rtm/axes/characteristic.rb +1 -1
- data/lib/rtm/axes/characteristics.rb +1 -1
- data/lib/rtm/axes/topic.rb +3 -3
- data/lib/rtm/axes/topics.rb +3 -3
- data/lib/rtm/engine.rb +48 -5
- data/lib/rtm/extensions.rb +58 -8
- data/lib/rtm/io.rb +2 -1
- data/lib/rtm/io/tmapix_from.rb +155 -0
- data/lib/rtm/io/tmapix_to.rb +223 -0
- data/lib/rtm/io/to_hash.rb +79 -41
- data/lib/rtm/io/to_jtm.rb +1 -1
- data/lib/rtm/io/to_rdf.rb +20 -5
- data/lib/rtm/io/to_string.rb +13 -2
- data/lib/rtm/io/to_yaml.rb +39 -11
- data/lib/rtm/navigation.rb +1 -15
- data/lib/rtm/navigation/association/players.rb +1 -1
- data/lib/rtm/navigation/name/characteristics.rb +1 -1
- data/lib/rtm/navigation/occurrence/characteristics.rb +1 -1
- data/lib/rtm/navigation/topic/characteristics.rb +1 -1
- data/lib/rtm/navigation/topic/players.rb +1 -1
- data/lib/rtm/navigation/topic/supertypes.rb +21 -17
- data/lib/rtm/navigation/topic/traverse.rb +1 -1
- data/lib/rtm/navigation/topic/types.rb +6 -4
- data/lib/rtm/psi.rb +6 -0
- data/lib/rtm/sugar.rb +42 -29
- data/lib/rtm/sugar/association/hash_access.rb +3 -3
- data/lib/rtm/sugar/occurrence/dynamic_value.rb +39 -56
- data/lib/rtm/sugar/occurrence/external.rb +53 -0
- data/lib/rtm/sugar/reifiable/reifier.rb +21 -0
- data/lib/rtm/sugar/role/counterparts.rb +12 -6
- data/lib/rtm/sugar/topic/best_name.rb +74 -0
- data/lib/rtm/sugar/topic/characteristics.rb +10 -10
- data/lib/rtm/sugar/topic/counterparts.rb +131 -119
- data/lib/rtm/sugar/topic/scoped.rb +102 -53
- data/lib/rtm/sugar/topic/topic_ref.rb +63 -12
- data/lib/rtm/sugar/topic/typed.rb +50 -2
- data/lib/rtm/sugar/topic_map/query_cache.rb +66 -0
- data/lib/rtm/sugar/topic_map/themes.rb +53 -0
- data/lib/rtm/sugar/typed/types.rb +1 -1
- data/lib/rtm/validation.rb +2 -2
- data/lib/rtm/version.rb +18 -6
- data/spec/rtm/axes/string_spec.rb +7 -7
- data/spec/rtm/axes/strings_spec.rb +10 -10
- data/spec/rtm/io/tmapix_from_spec.rb +76 -0
- data/spec/rtm/io/tmapix_to_spec.rb +159 -0
- data/spec/rtm/io/to_hash_spec.rb +90 -0
- data/spec/rtm/io/to_rdf_spec.rb +37 -0
- data/spec/rtm/io/to_string_spec.rb +122 -0
- data/spec/rtm/io/to_yaml_spec.rb +89 -0
- data/spec/rtm/sugar/occurrence/dynamic_value_spec.rb +156 -1
- data/spec/rtm/sugar/occurrence/external_spec.rb +129 -0
- data/spec/rtm/sugar/reifiable/reifier_spec.rb +41 -0
- data/spec/rtm/sugar/role/counterparts_spec.rb +174 -172
- data/spec/rtm/sugar/topic/best_name_spec.rb +25 -0
- data/spec/rtm/sugar/topic/characteristics_spec.rb +20 -5
- data/spec/rtm/sugar/topic/counterparts_spec.rb +41 -1
- data/spec/rtm/sugar/topic/hash_access_spec.rb +1 -1
- data/spec/rtm/sugar/topic/scoped_spec.rb +178 -114
- data/spec/rtm/sugar/topic/topic_ref_spec.rb +10 -10
- data/spec/rtm/sugar/topic/typed_spec.rb +196 -134
- data/spec/rtm/sugar/topic_map/themes_spec.rb +67 -0
- data/spec/rtm/sugar/typed/types_spec.rb +1 -1
- data/spec/rtm/tmapi/core/association_spec.rb +2 -2
- data/spec/rtm/tmapi/core/datatype_aware_spec.rb +236 -0
- data/spec/rtm/tmapi/core/name_spec.rb +186 -1
- data/spec/rtm/tmapi/core/occurrence_spec.rb +24 -67
- data/spec/rtm/tmapi/core/reifiable_spec.rb +2 -2
- data/spec/rtm/tmapi/core/scoped_spec.rb +40 -2
- data/spec/rtm/tmapi/core/topic_map_spec.rb +98 -30
- data/spec/rtm/tmapi/core/topic_spec.rb +558 -82
- data/spec/rtm/tmapi/core/variant_spec.rb +3 -3
- data/spec/rtm_spec.rb +0 -1
- data/spec/spec_helper.rb +7 -2
- data/test/javalibs/junit-4.5.jar +0 -0
- data/test/javalibs/tmapi-2.0-tests.jar +0 -0
- data/test/tmapi_tests.rb +25 -0
- metadata +66 -11
- data/lib/rtm/io/ontopia_io.rb +0 -25
- data/lib/rtm/io/tmapix.rb +0 -234
- data/lib/rtm/sugar/occurrence/externalize.rb +0 -31
- data/spec/rtm/io/tmapix_spec.rb +0 -85
- data/test/base_unit_test.rb +0 -161
- data/test/base_unit_test_tmapi.rb +0 -165
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# Copyright: Copyright 2009 Topic Maps Lab, University of Leipzig.
|
|
2
|
+
# License: Apache License, Version 2.0
|
|
3
|
+
|
|
4
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
|
5
|
+
|
|
6
|
+
module RTM::IO::ToRDF::TopicMap
|
|
7
|
+
|
|
8
|
+
describe self do
|
|
9
|
+
before(:each) do
|
|
10
|
+
@tm = get_used_tm_sys_tm
|
|
11
|
+
@tm.from_ctm(File.dirname(__FILE__) + "/../../resources/toyTM.ctm")
|
|
12
|
+
end
|
|
13
|
+
after(:each) do
|
|
14
|
+
@tm.close
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
describe "#to_rdf" do
|
|
18
|
+
it "should be callable on an Ontopia topic map" do
|
|
19
|
+
if implementation_for_spec == :ontopia
|
|
20
|
+
lambda{@tm.to_rdf}.should_not raise_error
|
|
21
|
+
@tm.to_rdf.should be_a_kind_of String
|
|
22
|
+
else
|
|
23
|
+
lambda{@tm.to_rdf}.should raise_error
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
describe "#to_rdf_ontopia" do
|
|
29
|
+
it "should be callable on an Ontopia topic map" do
|
|
30
|
+
if implementation_for_spec == :ontopia
|
|
31
|
+
@tm.to_rdf_ontopia.should be_a_kind_of String
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
end
|
|
37
|
+
end
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
# Copyright: Copyright 2009 Topic Maps Lab, University of Leipzig.
|
|
2
|
+
# License: Apache License, Version 2.0
|
|
3
|
+
|
|
4
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
|
5
|
+
|
|
6
|
+
module RTM::IO::ToString
|
|
7
|
+
|
|
8
|
+
describe self do
|
|
9
|
+
before(:each) do
|
|
10
|
+
@tm = get_used_tm_sys_tm
|
|
11
|
+
@tm.reifier!
|
|
12
|
+
@topic = @tm.get!("a:b")
|
|
13
|
+
@name = @topic.create_name("name type", "name value", ["theme1", "theme2"])
|
|
14
|
+
@name.reifier!
|
|
15
|
+
@var = @name.create_variant(1234, RTM::PSI[:String], ["theme5"])
|
|
16
|
+
@var.reifier!
|
|
17
|
+
@occ = @topic.create_occurrence("occ type", "occ value", :datatype => RTM::PSI[:IRI], :scope => ["theme3", "theme4"])
|
|
18
|
+
@occ.reifier!
|
|
19
|
+
@assoc = @tm.create_association("assoc type", ["theme6", "theme7"])
|
|
20
|
+
@assoc.reifier!
|
|
21
|
+
@role = @assoc.create_role("role type", "role player")
|
|
22
|
+
@role.reifier!
|
|
23
|
+
@locator = @tm.create_locator("http://www.example.org/test this locator")
|
|
24
|
+
end
|
|
25
|
+
after(:each) do
|
|
26
|
+
@output.should be_a_kind_of String
|
|
27
|
+
@tm.close
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
describe "#to_s" do
|
|
31
|
+
describe "for TopicMap" do
|
|
32
|
+
before(:each) do
|
|
33
|
+
@tm.should be_a_kind_of RTM::TopicMap
|
|
34
|
+
end
|
|
35
|
+
it "should give back a String using the short version" do
|
|
36
|
+
@output = @tm.to_s(:short)
|
|
37
|
+
end
|
|
38
|
+
it "should give back a String using the long version" do
|
|
39
|
+
@output = @tm.to_s(:long)
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
describe "for Topic" do
|
|
43
|
+
before(:each) do
|
|
44
|
+
@topic.should be_a_kind_of RTM::Topic
|
|
45
|
+
end
|
|
46
|
+
it "should give back a String using the short version" do
|
|
47
|
+
@output = @topic.to_s(:short)
|
|
48
|
+
end
|
|
49
|
+
it "should give back a String using the long version" do
|
|
50
|
+
@output = @topic.to_s(:long)
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
describe "for Association" do
|
|
54
|
+
before(:each) do
|
|
55
|
+
@assoc.should be_a_kind_of RTM::Association
|
|
56
|
+
end
|
|
57
|
+
it "should give back a String using the short version" do
|
|
58
|
+
@output = @assoc.to_s(:short)
|
|
59
|
+
end
|
|
60
|
+
it "should give back a String using the long version" do
|
|
61
|
+
@output = @assoc.to_s(:long)
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
describe "for Role" do
|
|
65
|
+
before(:each) do
|
|
66
|
+
@role.should be_a_kind_of RTM::Role
|
|
67
|
+
end
|
|
68
|
+
it "should give back a String using the short version" do
|
|
69
|
+
@output = @role.to_s(:short)
|
|
70
|
+
end
|
|
71
|
+
it "should give back a String using the long version" do
|
|
72
|
+
@output = @role.to_s(:long)
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
describe "for Name" do
|
|
76
|
+
before(:each) do
|
|
77
|
+
@name.should be_a_kind_of RTM::Name
|
|
78
|
+
end
|
|
79
|
+
it "should give back a String using the short version" do
|
|
80
|
+
@output = @name.to_s(:short)
|
|
81
|
+
end
|
|
82
|
+
it "should give back a String using the long version" do
|
|
83
|
+
@output = @name.to_s(:long)
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
describe "for Occurrence" do
|
|
87
|
+
before(:each) do
|
|
88
|
+
@occ.should be_a_kind_of RTM::Occurrence
|
|
89
|
+
end
|
|
90
|
+
it "should give back a String using the short version" do
|
|
91
|
+
@output = @occ.to_s(:short)
|
|
92
|
+
end
|
|
93
|
+
it "should give back a String using the long version" do
|
|
94
|
+
@output = @occ.to_s(:long)
|
|
95
|
+
end
|
|
96
|
+
end
|
|
97
|
+
describe "for Variant" do
|
|
98
|
+
before(:each) do
|
|
99
|
+
@var.should be_a_kind_of RTM::Variant
|
|
100
|
+
end
|
|
101
|
+
it "should give back a String using the short version" do
|
|
102
|
+
@output = @var.to_s(:short)
|
|
103
|
+
end
|
|
104
|
+
it "should give back a String using the short version" do
|
|
105
|
+
@output = @var.to_s(:long)
|
|
106
|
+
end
|
|
107
|
+
end
|
|
108
|
+
describe "for Locator" do
|
|
109
|
+
before(:each) do
|
|
110
|
+
@locator.should be_a_kind_of RTM::Locator
|
|
111
|
+
end
|
|
112
|
+
it "should give back a String using the short version" do
|
|
113
|
+
@output = @locator.to_s(:short)
|
|
114
|
+
end
|
|
115
|
+
it "should give back a String using the long version" do
|
|
116
|
+
@output = @locator.to_s(:long)
|
|
117
|
+
end
|
|
118
|
+
end
|
|
119
|
+
end
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
end
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
# Copyright: Copyright 2009 Topic Maps Lab, University of Leipzig.
|
|
2
|
+
# License: Apache License, Version 2.0
|
|
3
|
+
|
|
4
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
|
5
|
+
|
|
6
|
+
module RTM::IO::ToYAML
|
|
7
|
+
|
|
8
|
+
describe self do
|
|
9
|
+
before(:each) do
|
|
10
|
+
@tm = get_used_tm_sys_tm
|
|
11
|
+
@tm.reifier!
|
|
12
|
+
@topic = @tm.get!("a:b")
|
|
13
|
+
@name = @topic.create_name("name type", "name value", ["theme1", "theme2"])
|
|
14
|
+
@name.reifier!
|
|
15
|
+
@var = @name.create_variant(1234, RTM::PSI[:String], ["theme5"])
|
|
16
|
+
@var.reifier!
|
|
17
|
+
@occ = @topic.create_occurrence("occ type", "occ value", :datatype => RTM::PSI[:IRI], :scope => ["theme3", "theme4"])
|
|
18
|
+
@occ.reifier!
|
|
19
|
+
@assoc = @tm.create_association("assoc type", ["theme6", "theme7"])
|
|
20
|
+
@assoc.reifier!
|
|
21
|
+
@role = @assoc.create_role("role type", "role player")
|
|
22
|
+
@role.reifier!
|
|
23
|
+
@locator = @tm.create_locator("http://www.example.org/test this locator")
|
|
24
|
+
end
|
|
25
|
+
after(:each) do
|
|
26
|
+
@output.should be_a_kind_of String
|
|
27
|
+
@tm.close
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
describe "#to_yaml" do
|
|
31
|
+
describe "for TopicMap" do
|
|
32
|
+
before(:each) do
|
|
33
|
+
@tm.should be_a_kind_of RTM::TopicMap
|
|
34
|
+
end
|
|
35
|
+
it "should give back a String" do
|
|
36
|
+
@output = @tm.to_yaml
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
describe "for Topic" do
|
|
40
|
+
before(:each) do
|
|
41
|
+
@topic.should be_a_kind_of RTM::Topic
|
|
42
|
+
end
|
|
43
|
+
it "should give back a String" do
|
|
44
|
+
@output = @topic.to_yaml
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
describe "for Association" do
|
|
48
|
+
before(:each) do
|
|
49
|
+
@assoc.should be_a_kind_of RTM::Association
|
|
50
|
+
end
|
|
51
|
+
it "should give back a String" do
|
|
52
|
+
@output = @assoc.to_yaml
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
describe "for Role" do
|
|
56
|
+
before(:each) do
|
|
57
|
+
@role.should be_a_kind_of RTM::Role
|
|
58
|
+
end
|
|
59
|
+
it "should give back a String" do
|
|
60
|
+
@output = @role.to_yaml
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
describe "for Name" do
|
|
64
|
+
before(:each) do
|
|
65
|
+
@name.should be_a_kind_of RTM::Name
|
|
66
|
+
end
|
|
67
|
+
it "should give back a String" do
|
|
68
|
+
@output = @name.to_yaml
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
describe "for Occurrence" do
|
|
72
|
+
before(:each) do
|
|
73
|
+
@occ.should be_a_kind_of RTM::Occurrence
|
|
74
|
+
end
|
|
75
|
+
it "should give back a String" do
|
|
76
|
+
@output = @occ.to_yaml
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
describe "for Variant" do
|
|
80
|
+
before(:each) do
|
|
81
|
+
@var.should be_a_kind_of RTM::Variant
|
|
82
|
+
end
|
|
83
|
+
it "should give back a String" do
|
|
84
|
+
@output = @var.to_yaml
|
|
85
|
+
end
|
|
86
|
+
end
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
end
|
|
@@ -3,14 +3,169 @@
|
|
|
3
3
|
|
|
4
4
|
require File.dirname(__FILE__) + '/../../../spec_helper'
|
|
5
5
|
|
|
6
|
-
module Sugar::Occurrence::DynamicValue
|
|
6
|
+
module RTM::Sugar::Occurrence::DynamicValue
|
|
7
7
|
describe self do
|
|
8
8
|
before(:each) do
|
|
9
9
|
@tm = get_used_tm_sys_tm
|
|
10
|
+
@topic = @tm.get!("Leipzig")
|
|
10
11
|
end
|
|
11
12
|
after(:each) do
|
|
12
13
|
@tm.close
|
|
13
14
|
end
|
|
14
15
|
|
|
16
|
+
describe "#dynamic value" do
|
|
17
|
+
it "should return a Locator if the datatype is xsd:anyURI" do
|
|
18
|
+
@occ = @topic.create_occurrence("Website", "http://www.example.org/Leipzig", :datatype => RTM::PSI[:IRI])
|
|
19
|
+
@occ.datatype.reference.should == RTM::PSI[:IRI]
|
|
20
|
+
@occ.value.should == "http://www.example.org/Leipzig"
|
|
21
|
+
@occ.dynamic_value.should == @tm.create_locator("http://www.example.org/Leipzig")
|
|
22
|
+
###
|
|
23
|
+
@occ = @topic.create_occurrence("Website", "Leipzig", :datatype => RTM::PSI[:IRI])
|
|
24
|
+
@occ.datatype.reference.should == RTM::PSI[:IRI]
|
|
25
|
+
@occ.value.should == "http://www.topicmapslab.de/Leipzig"
|
|
26
|
+
@occ.dynamic_value.should == @tm.create_locator("http://www.topicmapslab.de/Leipzig")
|
|
27
|
+
end
|
|
28
|
+
it "should return a String if the datatype is xsd:string" do
|
|
29
|
+
@occ = @topic.create_occurrence("Website", "http://www.example.org/Leipzig", :datatype => RTM::PSI[:String])
|
|
30
|
+
@occ.datatype.reference.should == RTM::PSI[:String]
|
|
31
|
+
@occ.value.should == "http://www.example.org/Leipzig"
|
|
32
|
+
@occ.dynamic_value.should == "http://www.example.org/Leipzig"
|
|
33
|
+
end
|
|
34
|
+
it "should return a Float if the datatype is xsd:float" do
|
|
35
|
+
3.5.class.should == Float
|
|
36
|
+
@occ = @topic.create_occurrence("Number", "3.5", :datatype => RTM::PSI[:Float])
|
|
37
|
+
@occ.datatype.reference.should == RTM::PSI[:Float]
|
|
38
|
+
@occ.value.should == "3.5"
|
|
39
|
+
@occ.dynamic_value.should == 3.5
|
|
40
|
+
@occ.dynamic_value.class.should == Float
|
|
41
|
+
###
|
|
42
|
+
@occ = @topic.create_occurrence("Number", "1", :datatype => RTM::PSI[:Float])
|
|
43
|
+
@occ.datatype.reference.should == RTM::PSI[:Float]
|
|
44
|
+
@occ.value.should == "1"
|
|
45
|
+
@occ.dynamic_value.should == 1.0
|
|
46
|
+
@occ.dynamic_value.class.should == Float
|
|
47
|
+
end
|
|
48
|
+
it "should return a Float if the datatype is xsd:double" do
|
|
49
|
+
3.5.class.should == Float
|
|
50
|
+
@occ = @topic.create_occurrence("Number", "3.5", :datatype => RTM::PSI[:Double])
|
|
51
|
+
@occ.datatype.reference.should == RTM::PSI[:Double]
|
|
52
|
+
@occ.value.should == "3.5"
|
|
53
|
+
@occ.dynamic_value.should == 3.5
|
|
54
|
+
@occ.dynamic_value.class.should == Float
|
|
55
|
+
###
|
|
56
|
+
@occ = @topic.create_occurrence("Number", "1", :datatype => RTM::PSI[:Double])
|
|
57
|
+
@occ.datatype.reference.should == RTM::PSI[:Double]
|
|
58
|
+
@occ.value.should == "1"
|
|
59
|
+
@occ.dynamic_value.should == 1.0
|
|
60
|
+
@occ.dynamic_value.class.should == Float
|
|
61
|
+
end
|
|
62
|
+
it "should return a Float if the datatype is xsd:decimal" do
|
|
63
|
+
3.5.class.should == Float
|
|
64
|
+
@occ = @topic.create_occurrence("Number", "3.5", :datatype => RTM::PSI[:Decimal])
|
|
65
|
+
@occ.datatype.reference.should == RTM::PSI[:Decimal]
|
|
66
|
+
@occ.value.should == "3.5"
|
|
67
|
+
@occ.dynamic_value.should == 3.5
|
|
68
|
+
@occ.dynamic_value.class.should == Float
|
|
69
|
+
###
|
|
70
|
+
@occ = @topic.create_occurrence("Number", "1", :datatype => RTM::PSI[:Decimal])
|
|
71
|
+
@occ.datatype.reference.should == RTM::PSI[:Decimal]
|
|
72
|
+
@occ.value.should == "1" unless implementation_for_spec == :tinytim
|
|
73
|
+
@occ.dynamic_value.should == 1.0
|
|
74
|
+
@occ.dynamic_value.class.should == Float
|
|
75
|
+
end
|
|
76
|
+
it "should return a Fixnum/Bignum if the datatype is xsd:int" do
|
|
77
|
+
3.5.class.should == Float
|
|
78
|
+
@occ = @topic.create_occurrence("Number", "3.5", :datatype => RTM::PSI[:Int])
|
|
79
|
+
@occ.datatype.reference.should == RTM::PSI[:Int]
|
|
80
|
+
@occ.value.should == "3.5"
|
|
81
|
+
@occ.dynamic_value.should == 3
|
|
82
|
+
@occ.dynamic_value.class.should == Fixnum
|
|
83
|
+
###
|
|
84
|
+
@occ = @topic.create_occurrence("Number", "1", :datatype => RTM::PSI[:Int])
|
|
85
|
+
@occ.datatype.reference.should == RTM::PSI[:Int]
|
|
86
|
+
@occ.value.should == "1"
|
|
87
|
+
@occ.dynamic_value.should == 1
|
|
88
|
+
@occ.dynamic_value.class.should == Fixnum
|
|
89
|
+
####
|
|
90
|
+
number = 9999999999999999999
|
|
91
|
+
number.class.should == Bignum
|
|
92
|
+
@occ = @topic.create_occurrence("Number", number.to_s, :datatype => RTM::PSI[:Int])
|
|
93
|
+
@occ.datatype.reference.should == RTM::PSI[:Int]
|
|
94
|
+
@occ.value.should == number.to_s
|
|
95
|
+
@occ.dynamic_value.should == number
|
|
96
|
+
@occ.dynamic_value.class.should == Bignum
|
|
97
|
+
end
|
|
98
|
+
it "should return a Fixnum/Bignum if the datatype is xsd:integer" do
|
|
99
|
+
unless implementation_for_spec == :tinytim
|
|
100
|
+
3.5.class.should == Float
|
|
101
|
+
@occ = @topic.create_occurrence("Number", "3.5", :datatype => RTM::PSI[:Integer])
|
|
102
|
+
@occ.datatype.reference.should == RTM::PSI[:Integer]
|
|
103
|
+
@occ.value.should == "3.5"
|
|
104
|
+
@occ.dynamic_value.should == 3
|
|
105
|
+
@occ.dynamic_value.class.should == Fixnum
|
|
106
|
+
end
|
|
107
|
+
###
|
|
108
|
+
@occ = @topic.create_occurrence("Number", "1", :datatype => RTM::PSI[:Integer])
|
|
109
|
+
@occ.datatype.reference.should == RTM::PSI[:Integer]
|
|
110
|
+
@occ.value.should == "1"
|
|
111
|
+
@occ.dynamic_value.should == 1
|
|
112
|
+
@occ.dynamic_value.class.should == Fixnum
|
|
113
|
+
####
|
|
114
|
+
number = 9999999999999999999
|
|
115
|
+
number.class.should == Bignum
|
|
116
|
+
@occ = @topic.create_occurrence("Number", number.to_s, :datatype => RTM::PSI[:Integer])
|
|
117
|
+
@occ.datatype.reference.should == RTM::PSI[:Integer]
|
|
118
|
+
@occ.value.should == number.to_s
|
|
119
|
+
@occ.dynamic_value.should == number
|
|
120
|
+
@occ.dynamic_value.class.should == Bignum
|
|
121
|
+
end
|
|
122
|
+
it "should return a Fixnum/Bignum if the datatype is xsd:integer" do
|
|
123
|
+
3.5.class.should == Float
|
|
124
|
+
@occ = @topic.create_occurrence("Number", "3.5", :datatype => RTM::PSI[:Long])
|
|
125
|
+
@occ.datatype.reference.should == RTM::PSI[:Long]
|
|
126
|
+
@occ.value.should == "3.5"
|
|
127
|
+
@occ.dynamic_value.should == 3
|
|
128
|
+
@occ.dynamic_value.class.should == Fixnum
|
|
129
|
+
###
|
|
130
|
+
@occ = @topic.create_occurrence("Number", "1", :datatype => RTM::PSI[:Long])
|
|
131
|
+
@occ.datatype.reference.should == RTM::PSI[:Long]
|
|
132
|
+
@occ.value.should == "1"
|
|
133
|
+
@occ.dynamic_value.should == 1
|
|
134
|
+
@occ.dynamic_value.class.should == Fixnum
|
|
135
|
+
####
|
|
136
|
+
number = 9999999999999999999
|
|
137
|
+
number.class.should == Bignum
|
|
138
|
+
@occ = @topic.create_occurrence("Number", number.to_s, :datatype => RTM::PSI[:Long])
|
|
139
|
+
@occ.datatype.reference.should == RTM::PSI[:Long]
|
|
140
|
+
@occ.value.should == number.to_s
|
|
141
|
+
@occ.dynamic_value.should == number
|
|
142
|
+
@occ.dynamic_value.class.should == Bignum
|
|
143
|
+
end
|
|
144
|
+
it "should return a Time if the datatype is xsd:time" do
|
|
145
|
+
time = Time.new
|
|
146
|
+
@occ = @topic.create_occurrence("Number", time)
|
|
147
|
+
@occ.datatype.reference.should == RTM::PSI[:Time]
|
|
148
|
+
@occ.value.should == time.to_s
|
|
149
|
+
#@occ.dynamic_value.should == time # cannot be tested this way
|
|
150
|
+
@occ.dynamic_value.class.should == Time
|
|
151
|
+
end
|
|
152
|
+
it "should return a Date if the datatype is xsd:date" do
|
|
153
|
+
date = Date.new
|
|
154
|
+
@occ = @topic.create_occurrence("Number", date)
|
|
155
|
+
@occ.datatype.reference.should == RTM::PSI[:Date]
|
|
156
|
+
@occ.value.should == date.to_s
|
|
157
|
+
@occ.dynamic_value.should == date
|
|
158
|
+
@occ.dynamic_value.class.should == Date
|
|
159
|
+
end
|
|
160
|
+
it "should return a DateTime if the datatype is xsd:dateTime" do
|
|
161
|
+
dateTime = DateTime.new
|
|
162
|
+
@occ = @topic.create_occurrence("Number", dateTime)
|
|
163
|
+
@occ.datatype.reference.should == RTM::PSI[:DateTime]
|
|
164
|
+
@occ.value.should == dateTime.to_s
|
|
165
|
+
@occ.dynamic_value.should == dateTime
|
|
166
|
+
@occ.dynamic_value.class.should == DateTime
|
|
167
|
+
end
|
|
168
|
+
end
|
|
169
|
+
|
|
15
170
|
end
|
|
16
171
|
end
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
# Copyright: Copyright 2009 Topic Maps Lab, University of Leipzig.
|
|
2
|
+
# License: Apache License, Version 2.0
|
|
3
|
+
|
|
4
|
+
require File.dirname(__FILE__) + '/../../../spec_helper'
|
|
5
|
+
|
|
6
|
+
module RTM::Sugar::Occurrence::DynamicValue
|
|
7
|
+
describe self do
|
|
8
|
+
before(:each) do
|
|
9
|
+
@tm = get_used_tm_sys_tm
|
|
10
|
+
end
|
|
11
|
+
after(:each) do
|
|
12
|
+
@tm.close
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
describe "#externalize" do
|
|
16
|
+
before(:each) do
|
|
17
|
+
@leipzig = @tm.get!("http://en.wikipedia.org/wiki/Leipzig")
|
|
18
|
+
end
|
|
19
|
+
it "should create an association and two roles out of the occurrence if the value is of type xsd:String" do
|
|
20
|
+
occ = @leipzig.create_occurrence("Webpage", "http://www.leipzig.de/")
|
|
21
|
+
occ.value.should be_a_kind_of String
|
|
22
|
+
occ.value.should == "http://www.leipzig.de/"
|
|
23
|
+
occ.datatype.value.should == RTM::PSI[:String]
|
|
24
|
+
### now create the association
|
|
25
|
+
association = occ.externalize
|
|
26
|
+
### type must be RTM::PSI[:subject_representation]
|
|
27
|
+
assoc_type = @tm.get(RTM::PSI[:subject_representation])
|
|
28
|
+
assoc_type.should_not be_nil
|
|
29
|
+
association.type.should == assoc_type
|
|
30
|
+
### 2 roles
|
|
31
|
+
association.should have(2).roles
|
|
32
|
+
### one role of type RTM::PSI[:represented_subject] with player occ.parent (the topic)
|
|
33
|
+
association.roles(RTM::PSI[:represented_subject]).size.should == 1
|
|
34
|
+
role1 = association.roles(RTM::PSI[:represented_subject]).first
|
|
35
|
+
role1.player.should == @leipzig
|
|
36
|
+
### the other role of type occ_type and player: topic with subject locator occ_value
|
|
37
|
+
association.roles("Webpage").size.should == 1
|
|
38
|
+
role2 = association.roles("Webpage").first
|
|
39
|
+
r2player = @tm.get("=http://www.leipzig.de/")
|
|
40
|
+
r2player.should_not be_nil
|
|
41
|
+
role2.player.should == r2player
|
|
42
|
+
end
|
|
43
|
+
it "should create an association and two roles out of the occurrence if the value is of type xsd:anyURI" do
|
|
44
|
+
occ = @leipzig.create_occurrence("Webpage", @tm.create_locator("http://www.leipzig.de/"))
|
|
45
|
+
occ.value.should be_a_kind_of String
|
|
46
|
+
occ.value.should == "http://www.leipzig.de/"
|
|
47
|
+
occ.datatype.value.should == RTM::PSI[:IRI]
|
|
48
|
+
### now create the association
|
|
49
|
+
association = occ.externalize
|
|
50
|
+
### type must be RTM::PSI[:subject_representation]
|
|
51
|
+
assoc_type = @tm.get(RTM::PSI[:subject_representation])
|
|
52
|
+
assoc_type.should_not be_nil
|
|
53
|
+
association.type.should == assoc_type
|
|
54
|
+
### 2 roles
|
|
55
|
+
association.should have(2).roles
|
|
56
|
+
### one role of type RTM::PSI[:represented_subject] with player occ.parent (the topic)
|
|
57
|
+
association.roles(RTM::PSI[:represented_subject]).size.should == 1
|
|
58
|
+
role1 = association.roles(RTM::PSI[:represented_subject]).first
|
|
59
|
+
role1.player.should == @leipzig
|
|
60
|
+
### the other role of type occ_type and player: topic with subject locator occ_value
|
|
61
|
+
association.roles("Webpage").size.should == 1
|
|
62
|
+
role2 = association.roles("Webpage").first
|
|
63
|
+
r2player = @tm.get("=http://www.leipzig.de/")
|
|
64
|
+
r2player.should_not be_nil
|
|
65
|
+
role2.player.should == r2player
|
|
66
|
+
end
|
|
67
|
+
it "should resolve relative identifiers = occ values" do
|
|
68
|
+
occ = @leipzig.create_occurrence(@tm.get!("Webpage"), "foobar")
|
|
69
|
+
occ.value.should be_a_kind_of String
|
|
70
|
+
occ.value.should == "foobar"
|
|
71
|
+
occ.datatype.value.should == RTM::PSI[:String]
|
|
72
|
+
### now create the association
|
|
73
|
+
association = occ.externalize
|
|
74
|
+
### type must be RTM::PSI[:subject_representation]
|
|
75
|
+
assoc_type = @tm.get(RTM::PSI[:subject_representation])
|
|
76
|
+
assoc_type.should_not be_nil
|
|
77
|
+
association.type.should == assoc_type
|
|
78
|
+
### 2 roles
|
|
79
|
+
association.should have(2).roles
|
|
80
|
+
### one role of type RTM::PSI[:represented_subject] with player occ.parent (the topic)
|
|
81
|
+
association.roles(RTM::PSI[:represented_subject]).size.should == 1
|
|
82
|
+
role1 = association.roles(RTM::PSI[:represented_subject]).first
|
|
83
|
+
role1.player.should == @leipzig
|
|
84
|
+
### the other role of type occ_type and player: topic with subject locator occ_value
|
|
85
|
+
association.roles("Webpage").size.should == 1
|
|
86
|
+
role2 = association.roles("Webpage").first
|
|
87
|
+
r2player = @tm.get("=http://www.topicmapslab.de/foobar")
|
|
88
|
+
r2player.should_not be_nil
|
|
89
|
+
role2.player.should == r2player
|
|
90
|
+
end
|
|
91
|
+
it "should perhaps be tested for other datatypes"
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
describe "#externalize!" do
|
|
95
|
+
before(:each) do
|
|
96
|
+
@leipzig = @tm.get!("http://en.wikipedia.org/wiki/Leipzig")
|
|
97
|
+
end
|
|
98
|
+
it "should remove the occurrence also" do
|
|
99
|
+
occ = @leipzig.create_occurrence("Webpage", "http://www.leipzig.de/", :scope => ["theme1", "theme2"])
|
|
100
|
+
@leipzig.should have(1).occurrences
|
|
101
|
+
association = occ.externalize!
|
|
102
|
+
@leipzig.occurrences.should be_empty
|
|
103
|
+
end
|
|
104
|
+
it "should remove the occurrence also, even if it has a reifier" do
|
|
105
|
+
occ = @leipzig.create_occurrence("Webpage", "http://www.leipzig.de/", :scope => ["theme1", "theme2"])
|
|
106
|
+
occ.reifier = "a_reifier"
|
|
107
|
+
occ.reifier.should_not be_nil
|
|
108
|
+
@leipzig.should have(1).occurrences
|
|
109
|
+
association = occ.externalize!
|
|
110
|
+
@leipzig.occurrences.should be_empty
|
|
111
|
+
end
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
describe "#external?" do
|
|
115
|
+
before(:each) do
|
|
116
|
+
@leipzig = @tm.get!("http://en.wikipedia.org/wiki/Leipzig")
|
|
117
|
+
end
|
|
118
|
+
it "should return true if this occurrence is an external occurrence" do
|
|
119
|
+
occ = @leipzig.create_occurrence("Webpage", @tm.create_locator("http://www.leipzig.de/"))
|
|
120
|
+
occ.external?.should be_true
|
|
121
|
+
end
|
|
122
|
+
it "should return false if this occurrence is not an external occurrence" do
|
|
123
|
+
occ = @leipzig.create_occurrence("Webpage", "http://www.leipzig.de/")
|
|
124
|
+
occ.external?.should be_false
|
|
125
|
+
end
|
|
126
|
+
end
|
|
127
|
+
|
|
128
|
+
end
|
|
129
|
+
end
|