obo_parser 0.3.7 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,268 +0,0 @@
1
- require 'test/unit'
2
- require 'rubygems'
3
- require 'ruby-debug'
4
-
5
- require File.expand_path(File.join(File.dirname(__FILE__), '../lib/obo_parser'))
6
-
7
- class OboParserTest < Test::Unit::TestCase
8
- def test_truth
9
- assert true
10
- end
11
- end
12
-
13
- class Test_OboParserBuilder < Test::Unit::TestCase
14
- def test_builder
15
- b = OboParser::OboParserBuilder.new
16
- end
17
- end
18
-
19
- class Test_Regex < Test::Unit::TestCase
20
-
21
- def test_some_regex
22
- assert true
23
- end
24
-
25
- end
26
-
27
- class Test_Lexer < Test::Unit::TestCase
28
-
29
- def test_term
30
- lexer = OboParser::Lexer.new("[Term]")
31
- assert lexer.pop(OboParser::Tokens::Term)
32
- end
33
-
34
- def test_end_of_file
35
- lexer = OboParser::Lexer.new(" \n\n")
36
- assert lexer.pop(OboParser::Tokens::EndOfFile)
37
-
38
- lexer = OboParser::Lexer.new("\n")
39
- assert lexer.pop(OboParser::Tokens::EndOfFile)
40
- end
41
-
42
- def test_parse_term_stanza
43
- input = '
44
- id: PATO:0000015
45
- name: color hue
46
- def: "A chromatic scalar-circular quality inhering in an object that manifests in an observer by virtue of the dominant wavelength of the visible light; may be subject to fiat divisions, typically into 7 or 8 spectra." [PATOC:cjm]
47
- subset: attribute_slim
48
- is_a: PATO:0001301'
49
- lexer = OboParser::Lexer.new(input)
50
- assert t = lexer.pop(OboParser::Tokens::TagValuePair)
51
- assert_equal 'id', t.tag
52
- assert_equal 'PATO:0000015', t.value
53
-
54
- assert t = lexer.pop(OboParser::Tokens::TagValuePair)
55
- assert_equal 'name', t.tag
56
- assert_equal 'color hue', t.value
57
-
58
- assert t = lexer.pop(OboParser::Tokens::TagValuePair)
59
- assert_equal 'def', t.tag
60
- assert_equal 'A chromatic scalar-circular quality inhering in an object that manifests in an observer by virtue of the dominant wavelength of the visible light; may be subject to fiat divisions, typically into 7 or 8 spectra.', t.value
61
- assert_equal(['PATOC:cjm'], t.xrefs)
62
-
63
- assert t = lexer.pop(OboParser::Tokens::TagValuePair)
64
- assert_equal 'subset', t.tag
65
- assert_equal 'attribute_slim', t.value
66
-
67
- assert t = lexer.pop(OboParser::Tokens::TagValuePair)
68
- assert_equal 'is_a', t.tag
69
- assert_equal 'PATO:0001301', t.value
70
- end
71
-
72
- def test_typdef
73
- input = '[Typedef]
74
- id: part_of
75
- name: part of
76
- is_transitive: true'
77
- assert foo = parse_obo_file(input)
78
- assert_equal 1, foo.typedefs.size
79
- assert_equal 'part_of', foo.typedefs.first.id.value
80
- end
81
-
82
- def test_parse_term_stanza2
83
- input = '[Term]
84
- id: CL:0000009
85
- name: fusiform initial
86
- alt_id: CL:0000274
87
- def: "An elongated cell with approximately wedge-shaped ends, found in the vascular cambium, which gives rise to the elements of the axial system in the secondary vascular tissues." [ISBN:0471245208]
88
- synonym: "xylem initial" RELATED []
89
- synonym: "xylem mother cell" RELATED []
90
- is_a: CL:0000272 ! cambial initial
91
- is_a: CL:0000610 ! plant cell'
92
-
93
- assert foo = parse_obo_file(input)
94
- assert_equal 2, foo.terms.first.tags_named('synonym').size
95
- assert_equal 'xylem initial', foo.terms.first.tags_named('synonym').first.value
96
- assert_equal 'xylem mother cell', foo.terms.first.tags_named('synonym')[1].value
97
- assert_equal 'CL:0000274', foo.terms.first.tags_named('alt_id').first.value
98
-
99
- assert_equal 2, foo.terms.first.relationships.size
100
- assert_equal(['CL:0000272', 'CL:0000610'], foo.terms.first.relationships.collect{|r| r[1]}.sort)
101
- assert_equal(['is_a', 'is_a'], foo.terms.first.relationships.collect{|r| r[0]}.sort)
102
- end
103
-
104
- def test_parse_term
105
- lexer = OboParser::Lexer.new("[Term]")
106
- assert lexer.pop(OboParser::Tokens::Term)
107
- end
108
-
109
- def test_xref_list
110
- lexer = OboParser::Lexer.new("[foo:bar, stuff:things]")
111
- assert t = lexer.pop(OboParser::Tokens::XrefList)
112
- assert_equal( {'foo' => 'bar', 'stuff' => 'things'} , t.value)
113
- end
114
-
115
- def test_relationship_tag
116
- lexer = OboParser::Lexer.new("relationship: develops_from CL:0000333 ! neural crest cell")
117
- assert t = lexer.pop(OboParser::Tokens::RelationshipTag)
118
- assert_equal 'develops_from', t.relation
119
- assert_equal 'CL:0000333', t.related_term
120
- assert_equal 'relationship', t.tag
121
-
122
- lexer = OboParser::Lexer.new("relationship: develops_from CL:0000333")
123
- assert t = lexer.pop(OboParser::Tokens::RelationshipTag)
124
- assert_equal 'develops_from', t.relation
125
- assert_equal 'CL:0000333', t.related_term
126
- assert_equal 'relationship', t.tag
127
-
128
- lexer = OboParser::Lexer.new("is_a: CL:0000333 ! Foo")
129
- assert t = lexer.pop(OboParser::Tokens::IsATag)
130
- assert_equal 'is_a', t.relation
131
- assert_equal 'CL:0000333', t.related_term
132
- assert_equal 'Foo', t.comment
133
-
134
- lexer = OboParser::Lexer.new("disjoint_from: CL:0000333")
135
- assert t = lexer.pop(OboParser::Tokens::DisjointFromTag)
136
- assert_equal 'disjoint_from', t.relation
137
- assert_equal 'CL:0000333', t.related_term
138
- assert_equal "", t.comment
139
-
140
- lexer = OboParser::Lexer.new("relationship: part_of CL:0000333 ! Foo")
141
- assert t = lexer.pop(OboParser::Tokens::RelationshipTag)
142
- assert_equal 'part_of', t.relation
143
- assert_equal 'CL:0000333', t.related_term
144
- assert_equal 'Foo', t.comment
145
- end
146
-
147
- def test_tagvaluepair
148
- lexer = OboParser::Lexer.new("id: PATO:0000179")
149
- assert lexer.pop(OboParser::Tokens::TagValuePair)
150
- end
151
-
152
- def test_tagvaluepair_with_comments_and_xrefs
153
- lexer = OboParser::Lexer.new("def: \"The foo that is bar.\" [PATO:0000179] ! FOO! \n")
154
- assert t = lexer.pop(OboParser::Tokens::TagValuePair)
155
- assert_equal 'def', t.tag
156
- assert_equal 'The foo that is bar.', t.value
157
- assert_equal 'FOO!', t.comment
158
- assert_equal(['PATO:0000179'], t.xrefs)
159
- end
160
-
161
- def test_that_synonyms_parse
162
- lexer = OboParser::Lexer.new("synonym: \"Nematoblast\" EXACT []\n")
163
- assert t = lexer.pop(OboParser::Tokens::TagValuePair)
164
- assert_equal 'synonym', t.tag
165
- assert_equal 'Nematoblast', t.value
166
- assert_equal 'EXACT', t.qualifier
167
- assert_equal nil, t.comment
168
- assert_equal([], t.xrefs)
169
- end
170
-
171
- def test_that_xref_lists_parse_as_part_of_tagvalue_pair
172
- lexer = OboParser::Lexer.new('def: "Foo and the bar, and stuff, and things. More stuff, and things!" [GO_REF:0000031 "Foo!" , GOC:msz {some=trailingmodifier}, GOC:tfm, ISBN:9780781765190 "Fundamental Immunology!, 6ed (Paul,ed), 2003", PMID:16014527] {qualifier=foo} ! and a comment')
173
- assert t = lexer.pop(OboParser::Tokens::TagValuePair)
174
- assert_equal 'def', t.tag
175
- assert_equal 'Foo and the bar, and stuff, and things. More stuff, and things!', t.value
176
- assert_equal(['GO_REF:0000031', 'GOC:msz', 'GOC:tfm', 'ISBN:9780781765190', 'PMID:16014527'], t.xrefs)
177
- end
178
-
179
- def test_crummy_space_filled_xrefs
180
- lexer = OboParser::Lexer.new('def: "A quality inhering in a bearer by virtue of emitting light during exposure to radiation from an external source." [The Free Online dictionary:The Free Online dictionary "www.thefreedictionary.com/ -"]')
181
- assert t = lexer.pop(OboParser::Tokens::TagValuePair)
182
- assert_equal 'def', t.tag
183
- assert_equal 'A quality inhering in a bearer by virtue of emitting light during exposure to radiation from an external source.', t.value
184
- assert_equal(['The Free Online dictionary:The Free Online dictionary'], t.xrefs)
185
- end
186
-
187
- end
188
-
189
- class Test_Parser < Test::Unit::TestCase
190
- def setup
191
- @of = File.read(File.expand_path(File.join(File.dirname(__FILE__), '../test/obo_1.0_test.txt')) )
192
- end
193
-
194
- def test_file_parsing
195
- foo = parse_obo_file(@of)
196
- assert_equal 'pato', foo.terms[0].name.value
197
- assert_equal 'quality', foo.terms[1].name.value
198
- assert_equal 'part_of', foo.typedefs.last.name.value
199
- assert_equal 'OBO_REL:part_of', foo.typedefs.last.id.value
200
- assert_equal(['PATOC:GVG'], foo.terms[1].def.xrefs)
201
- assert_equal 'is_obsolete', foo.terms.first.tags_named('is_obsolete').first.tag
202
- assert_equal 'true', foo.terms.first.tags_named('is_obsolete').first.value
203
- end
204
-
205
- def test_complex_file_parsing
206
- assert of = File.read(File.expand_path(File.join(File.dirname(__FILE__), '../test/cell.obo')) )
207
- foo = parse_obo_file(of)
208
- assert_equal 'cell', foo.terms.first.name.value
209
- assert_equal 'primary cell line cell', foo.terms[1].name.value
210
-
211
- tmp = foo.terms[9].tags_named('synonym')
212
- assert_equal 2, tmp.size
213
- assert_equal 'xylem initial', tmp.first.value
214
- assert_equal 'xylem mother cell', tmp[1].value
215
- assert_equal([], tmp[1].xrefs)
216
-
217
- assert_equal 2, foo.terms[9].relationships.size
218
- end
219
-
220
- def test_complex_file_parsing2
221
- assert of = File.read(File.expand_path(File.join(File.dirname(__FILE__), '../test/hao.obo')) )
222
- foo = parse_obo_file(of)
223
- assert_equal 'anatomical entity', foo.terms.first.name.value
224
- assert_equal 'ventral mesofurco-profurcal muscle', foo.terms[1].name.value
225
-
226
- #tmp = foo.terms[9].tags_named('synonym')
227
- #assert_equal 2, tmp.size
228
- #assert_equal 'xylem initial', tmp.first.value
229
- #assert_equal 'xylem mother cell', tmp[1].value
230
- #assert_equal([], tmp[1].xrefs)
231
-
232
- #assert_equal 2, foo.terms[9].relationships.size
233
- end
234
-
235
- def test_complex_file_parsing3
236
- assert of = File.read(File.expand_path(File.join(File.dirname(__FILE__), '../test/tgma.obo')) )
237
- foo = parse_obo_file(of)
238
- # assert_equal 'anatomical entity', foo.terms.first.name.value
239
- # assert_equal 'ventral mesofurco-profurcal muscle', foo.terms[1].name.value
240
-
241
- #tmp = foo.terms[9].tags_named('synonym')
242
- #assert_equal 2, tmp.size
243
- #assert_equal 'xylem initial', tmp.first.value
244
- #assert_equal 'xylem mother cell', tmp[1].value
245
- #assert_equal([], tmp[1].xrefs)
246
-
247
- #assert_equal 2, foo.terms[9].relationships.size
248
- end
249
-
250
- def test_complex_file_parsing4
251
- assert of = File.read(File.expand_path(File.join(File.dirname(__FILE__), '../test/go.obo')) )
252
- foo = parse_obo_file(of)
253
- assert_equal 'hemolymph', foo.terms.first.name.value
254
- assert_equal 'hemocyte', foo.terms[1].name.value
255
- assert_equal 1, foo.terms.first.relationships.size
256
- end
257
-
258
- def test_file_completes_without_typedefs
259
- @of2 = File.read(File.expand_path(File.join(File.dirname(__FILE__), '../test/obo_1.0_test_wo_typedefs.txt')) )
260
- assert foo = parse_obo_file(@of2)
261
- end
262
-
263
- def teardown
264
- @of = nil
265
- end
266
-
267
- end
268
-