mexico 0.0.9
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.
- checksums.yaml +15 -0
- data/.document +5 -0
- data/.gitmodules +3 -0
- data/.project +14 -0
- data/.rspec +2 -0
- data/Gemfile +31 -0
- data/LICENSE.txt +165 -0
- data/README.md +116 -0
- data/Rakefile +66 -0
- data/VERSION +1 -0
- data/assets/TESTCORPUS/Corpus.xml +26 -0
- data/assets/fiesta/b6/layer_connectors.fst +16 -0
- data/assets/fiesta/b6/match_jones_161_CM_neu_checked.parsed.xml +1225 -0
- data/assets/fiesta/elan/ElanFileFormat.eaf +76 -0
- data/assets/fiesta/elan/ElanFileFormat.pfsx +8 -0
- data/assets/fiesta/elan/ElanFileFormatComplexInterLayerLinks.eaf +107 -0
- data/assets/fiesta/elan/reflinks_example.eaf +270 -0
- data/assets/fiesta/elan/test_all_interlayerrelations.fst +43 -0
- data/assets/fiesta/head/head.fst +24 -0
- data/assets/fiesta/praat/mexico.ShortTextGrid +81 -0
- data/assets/fiesta/praat/mexico.TextGrid +104 -0
- data/assets/helpers/collection_ref_handler.rb +29 -0
- data/assets/helpers/id_ref_handler.rb +29 -0
- data/assets/helpers/roxml_attribute_handler.rb +57 -0
- data/assets/out_only/construct_and_write_spec.toe +99 -0
- data/assets/spec.html +554 -0
- data/bin/mexico +5 -0
- data/features/mexico.feature +9 -0
- data/features/step_definitions/mexico_steps.rb +0 -0
- data/features/support/env.rb +15 -0
- data/info/releasenotes/0.0.1.md +5 -0
- data/info/releasenotes/0.0.2.md +5 -0
- data/info/releasenotes/0.0.3.md +5 -0
- data/info/releasenotes/0.0.4.md +5 -0
- data/info/releasenotes/0.0.5.md +8 -0
- data/info/releasenotes/0.0.6.md +3 -0
- data/info/releasenotes/0.0.7.md +4 -0
- data/info/releasenotes/0.0.8.md +9 -0
- data/info/releasenotes/0.0.9.md +7 -0
- data/lib/mexico/cmd.rb +210 -0
- data/lib/mexico/constants.rb +82 -0
- data/lib/mexico/constraints/constraint.rb +85 -0
- data/lib/mexico/constraints/fiesta_constraints.rb +209 -0
- data/lib/mexico/constraints.rb +27 -0
- data/lib/mexico/core/corpus_core.rb +39 -0
- data/lib/mexico/core/design_core.rb +31 -0
- data/lib/mexico/core/media_type.rb +61 -0
- data/lib/mexico/core.rb +36 -0
- data/lib/mexico/fiesta/interfaces/b6_chat_game_interface.rb +222 -0
- data/lib/mexico/fiesta/interfaces/elan_interface.rb +143 -0
- data/lib/mexico/fiesta/interfaces/short_text_grid_interface.rb +99 -0
- data/lib/mexico/fiesta/interfaces/text_grid_interface.rb +103 -0
- data/lib/mexico/fiesta/interfaces.rb +31 -0
- data/lib/mexico/fiesta.rb +27 -0
- data/lib/mexico/file_system/bound_to_corpus.rb +37 -0
- data/lib/mexico/file_system/corpus.rb +207 -0
- data/lib/mexico/file_system/data.rb +96 -0
- data/lib/mexico/file_system/design.rb +75 -0
- data/lib/mexico/file_system/design_component.rb +78 -0
- data/lib/mexico/file_system/entry.rb +59 -0
- data/lib/mexico/file_system/fiesta_document.rb +344 -0
- data/lib/mexico/file_system/fiesta_map.rb +112 -0
- data/lib/mexico/file_system/head.rb +33 -0
- data/lib/mexico/file_system/id_ref.rb +46 -0
- data/lib/mexico/file_system/implicit_item_link.rb +19 -0
- data/lib/mexico/file_system/interval_link.rb +84 -0
- data/lib/mexico/file_system/item.rb +166 -0
- data/lib/mexico/file_system/item_link.rb +98 -0
- data/lib/mexico/file_system/item_links_proxy.rb +13 -0
- data/lib/mexico/file_system/layer.rb +89 -0
- data/lib/mexico/file_system/layer_connector.rb +74 -0
- data/lib/mexico/file_system/layer_link.rb +75 -0
- data/lib/mexico/file_system/local_file.rb +101 -0
- data/lib/mexico/file_system/participant.rb +69 -0
- data/lib/mexico/file_system/participant_role.rb +43 -0
- data/lib/mexico/file_system/point_link.rb +79 -0
- data/lib/mexico/file_system/property.rb +35 -0
- data/lib/mexico/file_system/property_map.rb +37 -0
- data/lib/mexico/file_system/resource.rb +174 -0
- data/lib/mexico/file_system/scale.rb +125 -0
- data/lib/mexico/file_system/section.rb +41 -0
- data/lib/mexico/file_system/static_collection_ref.rb +64 -0
- data/lib/mexico/file_system/template.rb +23 -0
- data/lib/mexico/file_system/trial.rb +87 -0
- data/lib/mexico/file_system/url.rb +65 -0
- data/lib/mexico/file_system.rb +62 -0
- data/lib/mexico/not_yet_implemented_error.rb +28 -0
- data/lib/mexico/util/fancy_container.rb +57 -0
- data/lib/mexico/util.rb +51 -0
- data/lib/mexico.rb +36 -0
- data/spec/constraints/constraints_spec.rb +306 -0
- data/spec/core/media_type_spec.rb +50 -0
- data/spec/fiesta/b6_spec.rb +43 -0
- data/spec/fiesta/elan_spec.rb +43 -0
- data/spec/fiesta/head_spec.rb +54 -0
- data/spec/fiesta/praat_spec.rb +54 -0
- data/spec/fiesta/read_spec.rb +76 -0
- data/spec/file_system_based/better_collection_spec.rb +142 -0
- data/spec/file_system_based/corpus_spec.rb +194 -0
- data/spec/file_system_based/design_spec.rb +100 -0
- data/spec/file_system_based/inter_links_spec.rb +100 -0
- data/spec/file_system_based/item_links_spec.rb +76 -0
- data/spec/file_system_based/rdf_spec.rb +177 -0
- data/spec/file_system_based/resource_spec.rb +111 -0
- data/spec/file_system_based/trial_spec.rb +129 -0
- data/spec/spec_helper.rb +14 -0
- data/spec/toe/construct_and_write_spec.rb +82 -0
- data/spec/toe/construction_spec.rb +110 -0
- data/spec/toe/item_spec.rb +58 -0
- data/spec/toe/layer_spec.rb +63 -0
- data/spec/toe/scale_spec.rb +89 -0
- data/spec/toe/toe_document_spec.rb +39 -0
- data/test/helper.rb +19 -0
- data/test/test_mexico.rb +7 -0
- metadata +357 -0
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
# This file is part of the MExiCo gem.
|
|
2
|
+
# Copyright (c) 2012-2014 Peter Menke, SFB 673, Universität Bielefeld
|
|
3
|
+
# http://www.sfb673.org
|
|
4
|
+
#
|
|
5
|
+
# MExiCo is free software: you can redistribute it and/or modify
|
|
6
|
+
# it under the terms of the GNU Lesser General Public License as
|
|
7
|
+
# published by the Free Software Foundation, either version 3 of
|
|
8
|
+
# the License, or (at your option) any later version.
|
|
9
|
+
#
|
|
10
|
+
# MExiCo is distributed in the hope that it will be useful,
|
|
11
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
12
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
13
|
+
# GNU Lesser General Public License for more details.
|
|
14
|
+
#
|
|
15
|
+
# You should have received a copy of the GNU Lesser General Public
|
|
16
|
+
# License along with MExiCo. If not, see
|
|
17
|
+
# <http://www.gnu.org/licenses/>.
|
|
18
|
+
|
|
19
|
+
require 'spec_helper'
|
|
20
|
+
include Mexico::FileSystem
|
|
21
|
+
|
|
22
|
+
describe Mexico::FileSystem::FiestaDocument do
|
|
23
|
+
|
|
24
|
+
# set up an initial corpus representation from the example file
|
|
25
|
+
before(:each) do
|
|
26
|
+
#@basepath = File.join(File.dirname(__FILE__), '..','..','assets','TESTCORPUS')
|
|
27
|
+
#@corpus = Mexico::FileSystem::Corpus.open(@basepath)
|
|
28
|
+
|
|
29
|
+
@fiesta_document = FiestaDocument.new
|
|
30
|
+
|
|
31
|
+
@scale = @fiesta_document.add_standard_timeline("s")
|
|
32
|
+
|
|
33
|
+
@foo_layer = @fiesta_document.add_layer Layer.new identifier: 'foo', name: 'lily'
|
|
34
|
+
@bar_layer = @fiesta_document.add_layer Layer.new identifier: 'bar', name: 'lotus'
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
@item1 = @fiesta_document.add_item(identifier: 'i1') do |i|
|
|
38
|
+
i.data = Mexico::FileSystem::Data.new(string_value: 'lion')
|
|
39
|
+
i.add_layer_link(Mexico::FileSystem::LayerLink.new(target_object: @foo_layer))
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
@item2 = @fiesta_document.add_item(identifier: 'i2') do |i|
|
|
44
|
+
i.data = Mexico::FileSystem::Data.new(string_value: 'tiger')
|
|
45
|
+
i.add_layer_link(Mexico::FileSystem::LayerLink.new(target_object: @bar_layer))
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
@item3 = @fiesta_document.add_item(identifier: 'i1') do |i|
|
|
49
|
+
i.data = Mexico::FileSystem::Data.new(string_value: 'bear')
|
|
50
|
+
i.add_layer_link(Mexico::FileSystem::LayerLink.new(target_object: @bar_layer))
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
context 'ActiveRecord-like collections' do
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
it 'should detect the helper modules' do
|
|
59
|
+
|
|
60
|
+
expect do
|
|
61
|
+
::Mexico
|
|
62
|
+
::Mexico::Util
|
|
63
|
+
end.to_not raise_error
|
|
64
|
+
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
context 'Scales' do
|
|
68
|
+
|
|
69
|
+
it 'should return the correct scale when asked for a string-based identifier' do
|
|
70
|
+
@fiesta_document.scales(@scale.identifier).should eq @scale
|
|
71
|
+
@fiesta_document.scales('other').should be nil
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
it 'should filter scales correctly by unit' do
|
|
75
|
+
@fiesta_document.scales(unit: 's').should include(@scale)
|
|
76
|
+
@fiesta_document.scales(unit: 'ms').should be_empty
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
it 'should filter scales correctly by dimension' do
|
|
80
|
+
@fiesta_document.scales(dimension: Mexico::FileSystem::Scale::DIM_TIME).should include(@scale)
|
|
81
|
+
@fiesta_document.scales(dimension: Mexico::FileSystem::Scale::DIM_SPACE).should be_empty
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
it 'should filter scales correctly by regexp id' do
|
|
85
|
+
@fiesta_document.scales(identifier: /time/).should include(@scale)
|
|
86
|
+
@fiesta_document.scales(identifier: /cauliflower/).should be_empty
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
it 'should select scales correctly by index' do
|
|
90
|
+
@fiesta_document.scales(0).should eq @scale
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
context 'Layers' do
|
|
97
|
+
|
|
98
|
+
it 'should return the correct layer when asked for a string-based identifier' do
|
|
99
|
+
@fiesta_document.layers(@foo_layer.identifier).should eq @foo_layer
|
|
100
|
+
@fiesta_document.layers(@bar_layer.identifier).should eq @bar_layer
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
context 'hash-based filtering' do
|
|
104
|
+
|
|
105
|
+
it 'should return the correct layers when given a hash with string values' do
|
|
106
|
+
@fiesta_document.layers(name: @foo_layer.name).should eq [@foo_layer]
|
|
107
|
+
@fiesta_document.layers(name: @bar_layer.name).should eq [@bar_layer]
|
|
108
|
+
@fiesta_document.layers(identifier: @foo_layer.identifier).should eq [@foo_layer]
|
|
109
|
+
@fiesta_document.layers(identifier: @bar_layer.identifier).should eq [@bar_layer]
|
|
110
|
+
@fiesta_document.layers(identifier: @foo_layer.identifier, name: @foo_layer.name).should eq [@foo_layer]
|
|
111
|
+
@fiesta_document.layers(identifier: @bar_layer.identifier, name: @bar_layer.name).should eq [@bar_layer]
|
|
112
|
+
@fiesta_document.layers(identifier: @foo_layer.identifier, name: @bar_layer.name).should eq []
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
it 'should return the correct layers when given a hash with regexp values' do
|
|
116
|
+
@fiesta_document.layers(name: /lil.*/).should eq [@foo_layer]
|
|
117
|
+
@fiesta_document.layers(name: /lot.*/).should eq [@bar_layer]
|
|
118
|
+
@fiesta_document.layers(name: /l.*/).should include(@foo_layer, @bar_layer)
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
context 'Items' do
|
|
128
|
+
|
|
129
|
+
it 'should return the correct item when asked for a string-based identifier' do
|
|
130
|
+
@fiesta_document.items(@item1.identifier).should eq @item1
|
|
131
|
+
@fiesta_document.items(@item2.identifier).should eq @item2
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
it 'should return the correct layers when given a hash with string values' do
|
|
135
|
+
@fiesta_document.items(identifier: 'i1').should include(@item1)
|
|
136
|
+
@fiesta_document.items(data: 'tiger').should include(@item2)
|
|
137
|
+
end
|
|
138
|
+
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
|
|
142
|
+
end
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
# This file is part of the MExiCo gem.
|
|
2
|
+
# Copyright (c) 2012-2014 Peter Menke, SFB 673, Universität Bielefeld
|
|
3
|
+
# http://www.sfb673.org
|
|
4
|
+
#
|
|
5
|
+
# MExiCo is free software: you can redistribute it and/or modify
|
|
6
|
+
# it under the terms of the GNU Lesser General Public License as
|
|
7
|
+
# published by the Free Software Foundation, either version 3 of
|
|
8
|
+
# the License, or (at your option) any later version.
|
|
9
|
+
#
|
|
10
|
+
# MExiCo is distributed in the hope that it will be useful,
|
|
11
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
12
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
13
|
+
# GNU Lesser General Public License for more details.
|
|
14
|
+
#
|
|
15
|
+
# You should have received a copy of the GNU Lesser General Public
|
|
16
|
+
# License along with MExiCo. If not, see
|
|
17
|
+
# <http://www.gnu.org/licenses/>.
|
|
18
|
+
|
|
19
|
+
require 'spec_helper'
|
|
20
|
+
|
|
21
|
+
describe Mexico::FileSystem::Corpus do
|
|
22
|
+
|
|
23
|
+
def write_corpus
|
|
24
|
+
|
|
25
|
+
doc = Nokogiri::XML::Document.new
|
|
26
|
+
doc.root = @corpus.to_xml
|
|
27
|
+
open(File.join(@basepath, "Corpus.OUT.xml"), 'w') do |file|
|
|
28
|
+
file << doc.serialize
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
# set up an initial corpus representation from the example file
|
|
34
|
+
before(:each) do
|
|
35
|
+
@basepath = File.join(File.dirname(__FILE__), '..','..','assets','TESTCORPUS')
|
|
36
|
+
@corpus = Mexico::FileSystem::Corpus.open(@basepath)
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
context 'Attributes' do
|
|
40
|
+
|
|
41
|
+
it 'should include the CorpusCore module' do
|
|
42
|
+
@corpus.should respond_to('core_included?')
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
context "identifier" do
|
|
46
|
+
|
|
47
|
+
it "should have accessor methods" do
|
|
48
|
+
@corpus.should respond_to(:identifier, :identifier=)
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
it "should have the right type" do
|
|
52
|
+
@corpus.identifier.kind_of?(String).should be true
|
|
53
|
+
@corpus.identifier.should match /^\w[-\w\d_]*$/
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
it "should have the correct value" do
|
|
57
|
+
@corpus.identifier.should eq "example-corpus"
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
context "name" do
|
|
63
|
+
|
|
64
|
+
it "should have accessor methods" do
|
|
65
|
+
@corpus.should respond_to(:name, :name=)
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
it "should have the right type" do
|
|
69
|
+
@corpus.name.kind_of?(String).should be true
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
it "should have the correct value" do
|
|
73
|
+
@corpus.name.should eq "Example Corpus"
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
context "description" do
|
|
79
|
+
|
|
80
|
+
it "should have accessor methods" do
|
|
81
|
+
@corpus.should respond_to(:description, :description=)
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
it "should have the right type" do
|
|
85
|
+
@corpus.description.kind_of?(String).should be true
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
it "should have the correct value" do
|
|
89
|
+
@corpus.description.should eq "This is an example corpus."
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
context "Aggregated components" do
|
|
98
|
+
|
|
99
|
+
context "Participants: " do
|
|
100
|
+
|
|
101
|
+
it 'should respond to participant methods' do
|
|
102
|
+
@corpus.should respond_to(:participants)
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
it 'collection accessor returns collection' do
|
|
106
|
+
@corpus.participants.should be_kind_of(Array)
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
it 'should have one member' do
|
|
110
|
+
@corpus.participants.should_not be nil
|
|
111
|
+
@corpus.participants.size.should be 1
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
it 'should have a first member with the correct data' do
|
|
115
|
+
@corpus.participants[0].identifier.should eq "vp01"
|
|
116
|
+
@corpus.participants[0].should respond_to("corpus")
|
|
117
|
+
@corpus.participants[0].corpus.identifier.should eq "example-corpus"
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
it 'should have a first member with the correct participant role' do
|
|
121
|
+
@corpus.participants[0].participant_role.should eq(::Mexico::Constants::ParticipantRoles::NAIVE)
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
it 'should reflect addition of a new participant' do
|
|
126
|
+
@corpus.participants << ::Mexico::FileSystem::Participant.new(:identifier=>"vp02",:participant_role=>"confederate")
|
|
127
|
+
@corpus.participants.size.should be 2
|
|
128
|
+
write_corpus
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
end
|
|
132
|
+
|
|
133
|
+
context "Designs: " do
|
|
134
|
+
|
|
135
|
+
it 'should respond to design methods' do
|
|
136
|
+
@corpus.should respond_to(:designs)
|
|
137
|
+
end
|
|
138
|
+
|
|
139
|
+
it 'collection accessor returns collection' do
|
|
140
|
+
@corpus.designs.should be_kind_of(Array)
|
|
141
|
+
end
|
|
142
|
+
|
|
143
|
+
it 'should have one design' do
|
|
144
|
+
@corpus.designs.should_not be nil
|
|
145
|
+
@corpus.designs.size.should be 2
|
|
146
|
+
end
|
|
147
|
+
|
|
148
|
+
it 'should have a first design with the correct data' do
|
|
149
|
+
@corpus.designs[0].identifier.should eq "example-design"
|
|
150
|
+
@corpus.designs[0].should respond_to("corpus")
|
|
151
|
+
@corpus.designs[0].corpus.identifier.should eq "example-corpus"
|
|
152
|
+
end
|
|
153
|
+
|
|
154
|
+
end
|
|
155
|
+
|
|
156
|
+
|
|
157
|
+
context "Trials: " do
|
|
158
|
+
it 'should respond to trials methods' do
|
|
159
|
+
@corpus.should respond_to(:trials)
|
|
160
|
+
end
|
|
161
|
+
|
|
162
|
+
it 'should have one trial' do
|
|
163
|
+
@corpus.trials.should_not be nil
|
|
164
|
+
@corpus.trials.size.should be 1
|
|
165
|
+
end
|
|
166
|
+
|
|
167
|
+
it 'after adding a trial, it should have two trials' do
|
|
168
|
+
@corpus.trials.size.should be 1
|
|
169
|
+
@corpus.trials << Mexico::FileSystem::Trial.new(:identifier=>"second-example-trial", :name=>"Second Example Trial", :description=>"This is an example trial.",:cue=>"V0?2",:running_number=>2)
|
|
170
|
+
@corpus.trials.size.should be 2
|
|
171
|
+
end
|
|
172
|
+
end
|
|
173
|
+
|
|
174
|
+
|
|
175
|
+
context "Resources: " do
|
|
176
|
+
it 'should respond to resources methods' do
|
|
177
|
+
@corpus.should respond_to(:resources)
|
|
178
|
+
end
|
|
179
|
+
|
|
180
|
+
it 'should have one resource' do
|
|
181
|
+
@corpus.resources.should_not be nil
|
|
182
|
+
@corpus.resources.size.should be 1
|
|
183
|
+
end
|
|
184
|
+
|
|
185
|
+
it 'after adding a resource, it should have two resources' do
|
|
186
|
+
@corpus.resources.size.should be 1
|
|
187
|
+
@corpus.resources << Mexico::FileSystem::Resource.new(:identifier=>"second-example-resource", :name=>"Second Example Resource", :description=>"This is an example resource.")
|
|
188
|
+
@corpus.resources.size.should be 2
|
|
189
|
+
end
|
|
190
|
+
end
|
|
191
|
+
|
|
192
|
+
end
|
|
193
|
+
|
|
194
|
+
end
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
# This file is part of the MExiCo gem.
|
|
2
|
+
# Copyright (c) 2012-2014 Peter Menke, SFB 673, Universität Bielefeld
|
|
3
|
+
# http://www.sfb673.org
|
|
4
|
+
#
|
|
5
|
+
# MExiCo is free software: you can redistribute it and/or modify
|
|
6
|
+
# it under the terms of the GNU Lesser General Public License as
|
|
7
|
+
# published by the Free Software Foundation, either version 3 of
|
|
8
|
+
# the License, or (at your option) any later version.
|
|
9
|
+
#
|
|
10
|
+
# MExiCo is distributed in the hope that it will be useful,
|
|
11
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
12
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
13
|
+
# GNU Lesser General Public License for more details.
|
|
14
|
+
#
|
|
15
|
+
# You should have received a copy of the GNU Lesser General Public
|
|
16
|
+
# License along with MExiCo. If not, see
|
|
17
|
+
# <http://www.gnu.org/licenses/>.
|
|
18
|
+
|
|
19
|
+
require 'spec_helper'
|
|
20
|
+
|
|
21
|
+
describe Mexico::FileSystem::Design do
|
|
22
|
+
|
|
23
|
+
# set up an initial corpus representation from the example file
|
|
24
|
+
before(:each) do
|
|
25
|
+
@basepath = File.join(File.dirname(__FILE__), '..','..','assets','TESTCORPUS')
|
|
26
|
+
@xml = File.open(File.join(@basepath,'Corpus.xml'),'rb') { |f| f.read }
|
|
27
|
+
@corpus = Mexico::FileSystem::Corpus.from_xml(@xml, {:path => @basepath})
|
|
28
|
+
@design = @corpus.designs.first
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
context "Attributes" do
|
|
32
|
+
|
|
33
|
+
context "identifier" do
|
|
34
|
+
|
|
35
|
+
it "should have accessor methods" do
|
|
36
|
+
@design.should respond_to(:identifier, :identifier=)
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
it "should have the right type" do
|
|
40
|
+
@design.identifier.kind_of?(String).should be true
|
|
41
|
+
@design.identifier.should match /^\w[-\w\d_]*$/
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
it "should have the correct value" do
|
|
45
|
+
@design.identifier.should eq "example-design"
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
context "name" do
|
|
51
|
+
|
|
52
|
+
it "should have accessor methods" do
|
|
53
|
+
@design.should respond_to(:name, :name=)
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
it "should have the right type" do
|
|
57
|
+
@design.name.kind_of?(String).should be true
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
it "should have the correct value" do
|
|
61
|
+
@design.name.should eq "Example Design"
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
context "description" do
|
|
67
|
+
|
|
68
|
+
it "should have accessor methods" do
|
|
69
|
+
@design.should respond_to(:description, :description=)
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
it "should have the right type" do
|
|
73
|
+
@design.description.kind_of?(String).should be true
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
it "should have the correct value" do
|
|
77
|
+
@design.description.should eq "Design Description"
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
context "Aggregated components" do
|
|
86
|
+
|
|
87
|
+
it 'should have one or more design components' do
|
|
88
|
+
@design.should respond_to(:design_components)
|
|
89
|
+
@design.design_components.size.should eq 1
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
it 'should return correct values for the first design component' do
|
|
93
|
+
@design.design_components[0].identifier.should eq 'example-design-component'
|
|
94
|
+
@design.design_components[0].name.should eq 'Example Design Component'
|
|
95
|
+
@design.design_components[0].media_type.should eq ::Mexico::Constants::MediaTypes::VIDEO
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
end
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
# This file is part of the MExiCo gem.
|
|
2
|
+
# Copyright (c) 2012-2014 Peter Menke, SFB 673, Universität Bielefeld
|
|
3
|
+
# http://www.sfb673.org
|
|
4
|
+
#
|
|
5
|
+
# MExiCo is free software: you can redistribute it and/or modify
|
|
6
|
+
# it under the terms of the GNU Lesser General Public License as
|
|
7
|
+
# published by the Free Software Foundation, either version 3 of
|
|
8
|
+
# the License, or (at your option) any later version.
|
|
9
|
+
#
|
|
10
|
+
# MExiCo is distributed in the hope that it will be useful,
|
|
11
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
12
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
13
|
+
# GNU Lesser General Public License for more details.
|
|
14
|
+
#
|
|
15
|
+
# You should have received a copy of the GNU Lesser General Public
|
|
16
|
+
# License along with MExiCo. If not, see
|
|
17
|
+
# <http://www.gnu.org/licenses/>.
|
|
18
|
+
|
|
19
|
+
require 'spec_helper'
|
|
20
|
+
|
|
21
|
+
describe Mexico::FileSystem::Resource do
|
|
22
|
+
|
|
23
|
+
# set up an initial corpus representation from the example file
|
|
24
|
+
before(:each) do
|
|
25
|
+
@basepath = File.join(File.dirname(__FILE__), '..','..','assets','mexico-testcorpus','structured')
|
|
26
|
+
@xml = File.open(File.join(@basepath,'Corpus.xml'),'rb') { |f| f.read }
|
|
27
|
+
@corpus = Mexico::FileSystem::Corpus.from_xml(@xml, {:path => @basepath})
|
|
28
|
+
|
|
29
|
+
@design_b = @corpus.designs[0]
|
|
30
|
+
@design_c = @corpus.designs[1]
|
|
31
|
+
@design_d = @corpus.designs[2]
|
|
32
|
+
@design_e = @corpus.designs[3]
|
|
33
|
+
|
|
34
|
+
@design_component_x = @design_b.design_components[0]
|
|
35
|
+
|
|
36
|
+
@trial_f = @corpus.trials[0]
|
|
37
|
+
@trial_g = @corpus.trials[1]
|
|
38
|
+
@trial_h = @corpus.trials[2]
|
|
39
|
+
@trial_i = @corpus.trials[3]
|
|
40
|
+
|
|
41
|
+
@resource_j = @corpus.resources[0]
|
|
42
|
+
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
context 'our little corpus on the prairie' do
|
|
46
|
+
|
|
47
|
+
context 'should link from first design to two trials' do
|
|
48
|
+
it 'should have the method' do
|
|
49
|
+
@design_b.should respond_to :trials
|
|
50
|
+
end
|
|
51
|
+
it 'should return a collection' do
|
|
52
|
+
@design_b.trials.should be_kind_of(Enumerable)
|
|
53
|
+
end
|
|
54
|
+
it 'should return a collection with 2 elements' do
|
|
55
|
+
@design_b.trials.size.should eq 2
|
|
56
|
+
end
|
|
57
|
+
it 'a linked trial should say true when asked for linkage to design' do
|
|
58
|
+
@trial_f.linked_to_design?.should eq true
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
context 'resource <j> should link to trial <f>' do
|
|
63
|
+
it 'should have the methods' do
|
|
64
|
+
@resource_j.should respond_to :trial
|
|
65
|
+
@trial_f.should respond_to :resources
|
|
66
|
+
end
|
|
67
|
+
it 'should return appropriate objects' do
|
|
68
|
+
@resource_j.trial.should be_kind_of(Mexico::FileSystem::Trial)
|
|
69
|
+
@trial_f.resources.should be_kind_of(Enumerable)
|
|
70
|
+
end
|
|
71
|
+
it 'should return correct sizes' do
|
|
72
|
+
@trial_f.resources.size.should eq 1
|
|
73
|
+
end
|
|
74
|
+
it 'should return the correct objects' do
|
|
75
|
+
@resource_j.trial.should eq @trial_f
|
|
76
|
+
@trial_f.resources[0].should eq @resource_j
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
context 'resource <j> should link to design component <x>' do
|
|
81
|
+
it 'should have the methods' do
|
|
82
|
+
@resource_j.should respond_to :design_component
|
|
83
|
+
@design_component_x.should respond_to :resources
|
|
84
|
+
end
|
|
85
|
+
it 'should return appropriate objects' do
|
|
86
|
+
@resource_j.design_component.should be_kind_of(Mexico::FileSystem::DesignComponent)
|
|
87
|
+
@design_component_x.resources.should be_kind_of(Enumerable)
|
|
88
|
+
end
|
|
89
|
+
it 'should return correct sizes' do
|
|
90
|
+
@design_component_x.resources.size.should eq 1
|
|
91
|
+
end
|
|
92
|
+
it 'should return the correct objects' do
|
|
93
|
+
@resource_j.design_component.should eq @design_component_x
|
|
94
|
+
@design_component_x.resources[0].should eq @resource_j
|
|
95
|
+
end
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
end
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
# This file is part of the MExiCo gem.
|
|
2
|
+
# Copyright (c) 2012-2014 Peter Menke, SFB 673, Universität Bielefeld
|
|
3
|
+
# http://www.sfb673.org
|
|
4
|
+
#
|
|
5
|
+
# MExiCo is free software: you can redistribute it and/or modify
|
|
6
|
+
# it under the terms of the GNU Lesser General Public License as
|
|
7
|
+
# published by the Free Software Foundation, either version 3 of
|
|
8
|
+
# the License, or (at your option) any later version.
|
|
9
|
+
#
|
|
10
|
+
# MExiCo is distributed in the hope that it will be useful,
|
|
11
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
12
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
13
|
+
# GNU Lesser General Public License for more details.
|
|
14
|
+
#
|
|
15
|
+
# You should have received a copy of the GNU Lesser General Public
|
|
16
|
+
# License along with MExiCo. If not, see
|
|
17
|
+
# <http://www.gnu.org/licenses/>.
|
|
18
|
+
|
|
19
|
+
require 'spec_helper'
|
|
20
|
+
|
|
21
|
+
describe Mexico::FileSystem::Resource do
|
|
22
|
+
|
|
23
|
+
# set up an initial corpus representation from the example file
|
|
24
|
+
before(:each) do
|
|
25
|
+
@basepath = File.join(File.dirname(__FILE__), '..','..','assets','fiesta','elan')
|
|
26
|
+
@file = File.open(File.join(@basepath,'ElanFileFormat.eaf'),'rb') { |f| f.read }
|
|
27
|
+
@fiesta_document = ::Mexico::Fiesta::Interfaces::ElanInterface.instance.import(@file)
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
context 'our little corpus on the prairie' do
|
|
31
|
+
|
|
32
|
+
context 'should link from first design to two trials' do
|
|
33
|
+
|
|
34
|
+
it 'should have the method' do
|
|
35
|
+
puts @fiesta_document.scales
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
context 'item linking' do
|
|
43
|
+
|
|
44
|
+
it 'should behave correctly before testing' do
|
|
45
|
+
puts @fiesta_document.items.size
|
|
46
|
+
@fiesta_document.layers.each do |layer|
|
|
47
|
+
puts layer.name
|
|
48
|
+
#puts " /#{layer.items}/"
|
|
49
|
+
#puts " /#{layer.items.class.name}/"
|
|
50
|
+
puts " /#{layer.items.size}/"
|
|
51
|
+
layer.items.each do |i|
|
|
52
|
+
puts " #{i.data.string_value}"
|
|
53
|
+
i.item_links.each do |ili|
|
|
54
|
+
puts " -(#{ili.role})-> #{ili.target_object}"
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
it 'should behave correctly before testing' do
|
|
61
|
+
l1 = Mexico::FileSystem::Layer.new(identifier: 'test1', name: 'test1')
|
|
62
|
+
l2 = Mexico::FileSystem::Layer.new(identifier: 'test2', name: 'test2')
|
|
63
|
+
@fiesta_document.layers << l1
|
|
64
|
+
@fiesta_document.layers << l2
|
|
65
|
+
|
|
66
|
+
puts "L1: %s" % l1
|
|
67
|
+
puts "L2: %s" % l2
|
|
68
|
+
|
|
69
|
+
# add items
|
|
70
|
+
# link them
|
|
71
|
+
# check if additional links occur in the correct way
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
end
|