nexus_parser 1.0.0 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -2,7 +2,7 @@ require 'test/unit'
2
2
  require 'rubygems'
3
3
  require 'ruby-debug'
4
4
 
5
- require File.expand_path(File.join(File.dirname(__FILE__), '../lib/nexus_file'))
5
+ require File.expand_path(File.join(File.dirname(__FILE__), '../lib/nexus_parser'))
6
6
 
7
7
  class NexusParserTest < Test::Unit::TestCase
8
8
  def test_truth
@@ -10,9 +10,9 @@ class NexusParserTest < Test::Unit::TestCase
10
10
  end
11
11
  end
12
12
 
13
- class Test_NexusFile_Builder < Test::Unit::TestCase
13
+ class Test_NexusParser_Builder < Test::Unit::TestCase
14
14
  def test_builder
15
- b = NexusFile::Builder.new
15
+ b = NexusParser::Builder.new
16
16
  assert foo = b.nexus_file
17
17
  assert_equal [], foo.taxa
18
18
  assert_equal [], foo.characters
@@ -34,221 +34,221 @@ end
34
34
 
35
35
  class Test_Lexer < Test::Unit::TestCase
36
36
  def test_lexer
37
- lexer = NexusFile::Lexer.new("[ foo ] BEGIN taxa; BLORF end;")
38
- assert lexer.pop(NexusFile::Tokens::LBracket)
39
- assert id = lexer.pop(NexusFile::Tokens::ID)
37
+ lexer = NexusParser::Lexer.new("[ foo ] BEGIN taxa; BLORF end;")
38
+ assert lexer.pop(NexusParser::Tokens::LBracket)
39
+ assert id = lexer.pop(NexusParser::Tokens::ID)
40
40
  assert_equal(id.value, "foo")
41
- assert lexer.pop(NexusFile::Tokens::RBracket)
42
- assert lexer.pop(NexusFile::Tokens::BeginBlk)
43
- assert lexer.pop(NexusFile::Tokens::TaxaBlk)
44
- assert foo = lexer.pop(NexusFile::Tokens::ID)
41
+ assert lexer.pop(NexusParser::Tokens::RBracket)
42
+ assert lexer.pop(NexusParser::Tokens::BeginBlk)
43
+ assert lexer.pop(NexusParser::Tokens::TaxaBlk)
44
+ assert foo = lexer.pop(NexusParser::Tokens::ID)
45
45
  assert_equal("BLORF", foo.value) # truncating whitespace
46
- assert lexer.pop(NexusFile::Tokens::BlkEnd)
46
+ assert lexer.pop(NexusParser::Tokens::BlkEnd)
47
47
 
48
- lexer2 = NexusFile::Lexer.new("[ foo ] begin authors; BLORF end; [] () some crud here")
49
- assert lexer2.pop(NexusFile::Tokens::LBracket)
50
- assert id = lexer2.pop(NexusFile::Tokens::ID)
48
+ lexer2 = NexusParser::Lexer.new("[ foo ] begin authors; BLORF end; [] () some crud here")
49
+ assert lexer2.pop(NexusParser::Tokens::LBracket)
50
+ assert id = lexer2.pop(NexusParser::Tokens::ID)
51
51
  assert_equal(id.value, "foo")
52
- assert lexer2.pop(NexusFile::Tokens::RBracket)
53
- assert lexer2.pop(NexusFile::Tokens::BeginBlk)
54
- assert lexer2.pop(NexusFile::Tokens::AuthorsBlk)
55
- assert lexer2.pop(NexusFile::Tokens::LBracket)
56
- assert lexer2.pop(NexusFile::Tokens::RBracket)
57
- assert lexer2.pop(NexusFile::Tokens::LParen)
58
- assert lexer2.pop(NexusFile::Tokens::RParen)
59
-
60
-
61
- lexer3 = NexusFile::Lexer.new("[ foo ] Begin Characters; BLORF end; [] () some crud here")
62
- assert lexer3.pop(NexusFile::Tokens::LBracket)
63
- assert id = lexer3.pop(NexusFile::Tokens::ID)
52
+ assert lexer2.pop(NexusParser::Tokens::RBracket)
53
+ assert lexer2.pop(NexusParser::Tokens::BeginBlk)
54
+ assert lexer2.pop(NexusParser::Tokens::AuthorsBlk)
55
+ assert lexer2.pop(NexusParser::Tokens::LBracket)
56
+ assert lexer2.pop(NexusParser::Tokens::RBracket)
57
+ assert lexer2.pop(NexusParser::Tokens::LParen)
58
+ assert lexer2.pop(NexusParser::Tokens::RParen)
59
+
60
+
61
+ lexer3 = NexusParser::Lexer.new("[ foo ] Begin Characters; BLORF end; [] () some crud here")
62
+ assert lexer3.pop(NexusParser::Tokens::LBracket)
63
+ assert id = lexer3.pop(NexusParser::Tokens::ID)
64
64
  assert_equal(id.value, "foo")
65
- assert lexer3.pop(NexusFile::Tokens::RBracket)
66
- assert lexer3.pop(NexusFile::Tokens::BeginBlk)
67
- assert lexer3.pop(NexusFile::Tokens::ChrsBlk)
68
- assert foo = lexer3.pop(NexusFile::Tokens::ID)
65
+ assert lexer3.pop(NexusParser::Tokens::RBracket)
66
+ assert lexer3.pop(NexusParser::Tokens::BeginBlk)
67
+ assert lexer3.pop(NexusParser::Tokens::ChrsBlk)
68
+ assert foo = lexer3.pop(NexusParser::Tokens::ID)
69
69
  assert_equal("BLORF", foo.value)
70
- assert lexer3.pop(NexusFile::Tokens::BlkEnd)
70
+ assert lexer3.pop(NexusParser::Tokens::BlkEnd)
71
71
 
72
- lexer4 = NexusFile::Lexer.new("Begin Characters; 123123123 end; [] () some crud here")
73
- assert lexer4.pop(NexusFile::Tokens::BeginBlk)
74
- assert lexer4.pop(NexusFile::Tokens::ChrsBlk)
75
- assert foo = lexer4.pop(NexusFile::Tokens::Number)
72
+ lexer4 = NexusParser::Lexer.new("Begin Characters; 123123123 end; [] () some crud here")
73
+ assert lexer4.pop(NexusParser::Tokens::BeginBlk)
74
+ assert lexer4.pop(NexusParser::Tokens::ChrsBlk)
75
+ assert foo = lexer4.pop(NexusParser::Tokens::Number)
76
76
  assert_equal(123123123, foo.value)
77
- assert lexer4.pop(NexusFile::Tokens::BlkEnd)
77
+ assert lexer4.pop(NexusParser::Tokens::BlkEnd)
78
78
 
79
- lexer5 = NexusFile::Lexer.new("(0,1)")
80
- assert lexer5.pop(NexusFile::Tokens::LParen)
81
- assert foo = lexer5.pop(NexusFile::Tokens::Number)
79
+ lexer5 = NexusParser::Lexer.new("(0,1)")
80
+ assert lexer5.pop(NexusParser::Tokens::LParen)
81
+ assert foo = lexer5.pop(NexusParser::Tokens::Number)
82
82
  assert_equal(0, foo.value)
83
- assert lexer5.pop(NexusFile::Tokens::Comma)
84
- assert foo = lexer5.pop(NexusFile::Tokens::Number)
83
+ assert lexer5.pop(NexusParser::Tokens::Comma)
84
+ assert foo = lexer5.pop(NexusParser::Tokens::Number)
85
85
  assert_equal(1, foo.value)
86
- assert lexer5.pop(NexusFile::Tokens::RParen)
86
+ assert lexer5.pop(NexusParser::Tokens::RParen)
87
87
 
88
- lexer6 = NexusFile::Lexer.new(" 210(0,1)10A1\n")
89
- assert foo = lexer6.pop(NexusFile::Tokens::RowVec)
88
+ lexer6 = NexusParser::Lexer.new(" 210(0,1)10A1\n")
89
+ assert foo = lexer6.pop(NexusParser::Tokens::RowVec)
90
90
  assert_equal(["2","1","0",["0","1"],"1","0","A","1"], foo.value)
91
91
 
92
- lexer6a = NexusFile::Lexer.new(" 21a(0 1)0b{3 4 5}(0)(1 a)\n")
93
- assert foo = lexer6a.pop(NexusFile::Tokens::RowVec)
92
+ lexer6a = NexusParser::Lexer.new(" 21a(0 1)0b{3 4 5}(0)(1 a)\n")
93
+ assert foo = lexer6a.pop(NexusParser::Tokens::RowVec)
94
94
  assert_equal(["2", "1", "a", ["0", "1"], "0", "b", ["3", "4", "5"], "0", ["1", "a"]], foo.value)
95
95
 
96
- lexer6b = NexusFile::Lexer.new(" 201{0 1}{0 1}0100)\x0A") # *nix line ending
97
- assert foo = lexer6b.pop(NexusFile::Tokens::RowVec)
96
+ lexer6b = NexusParser::Lexer.new(" 201{0 1}{0 1}0100)\x0A") # *nix line ending
97
+ assert foo = lexer6b.pop(NexusParser::Tokens::RowVec)
98
98
  assert_equal(["2", "0", "1", ["0", "1"], ["0", "1"], "0", "1", "0", "0"], foo.value)
99
99
 
100
- lexer6c = NexusFile::Lexer.new(" 201{0 1}{0 1}0100)\x0D\x0A") # * dos line ending
101
- assert foo = lexer6c.pop(NexusFile::Tokens::RowVec)
100
+ lexer6c = NexusParser::Lexer.new(" 201{0 1}{0 1}0100)\x0D\x0A") # * dos line ending
101
+ assert foo = lexer6c.pop(NexusParser::Tokens::RowVec)
102
102
  assert_equal(["2", "0", "1", ["0", "1"], ["0", "1"], "0", "1", "0", "0"], foo.value)
103
103
 
104
104
 
105
- lexer7 = NexusFile::Lexer.new("read nothing till Nexus, not that nexus 13243 Block [] ();, this one: #nexus FOO")
106
- assert foo = lexer7.pop(NexusFile::Tokens::NexusStart)
105
+ lexer7 = NexusParser::Lexer.new("read nothing till Nexus, not that nexus 13243 Block [] ();, this one: #nexus FOO")
106
+ assert foo = lexer7.pop(NexusParser::Tokens::NexusStart)
107
107
  assert_equal('#nexus', foo.value)
108
108
 
109
109
 
110
110
  ## we strip comments before parsing now
111
- # lexer8 = NexusFile::Lexer.new("[ foo ] Begin Characters; BLORF end; [] () some crud here")
112
- # assert foo = lexer8.pop(NexusFile::Tokens::NexusComment)
111
+ # lexer8 = NexusParser::Lexer.new("[ foo ] Begin Characters; BLORF end; [] () some crud here")
112
+ # assert foo = lexer8.pop(NexusParser::Tokens::NexusComment)
113
113
  # assert_equal "foo", foo.value
114
114
 
115
- # assert lexer.pop(NexusFile::Tokens::Colon)
116
- # assert num = lexer.pop(NexusFile::Tokens::Number)
115
+ # assert lexer.pop(NexusParser::Tokens::Colon)
116
+ # assert num = lexer.pop(NexusParser::Tokens::Number)
117
117
  # assert_equal(num.value, 0.0)
118
- # assert lexer.pop(NexusFile::Tokens::Comma)
119
- # assert lexer.pop(NexusFile::Tokens::SemiColon)
118
+ # assert lexer.pop(NexusParser::Tokens::Comma)
119
+ # assert lexer.pop(NexusParser::Tokens::SemiColon)
120
120
  end
121
121
 
122
122
  def test_row_vec
123
- lexer = NexusFile::Lexer.new("0?(0 1)10(A BD , C)1(0,1,2)1-\n")
124
- assert foo = lexer.pop(NexusFile::Tokens::RowVec)
123
+ lexer = NexusParser::Lexer.new("0?(0 1)10(A BD , C)1(0,1,2)1-\n")
124
+ assert foo = lexer.pop(NexusParser::Tokens::RowVec)
125
125
  assert_equal(["0", "?", ["0", "1"], "1", "0", ["A", "BD", "C"], "1", ["0", "1", "2"], "1", "-"], foo.value)
126
126
  end
127
127
 
128
128
  def test_punctuation
129
- lexer = NexusFile::Lexer.new(',/=](\'NOT23\'[);,')
130
- assert lexer.peek(NexusFile::Tokens::Comma)
131
- assert lexer.pop(NexusFile::Tokens::Comma)
132
- assert lexer.pop(NexusFile::Tokens::BckSlash)
133
- assert lexer.pop(NexusFile::Tokens::Equals)
134
- assert lexer.pop(NexusFile::Tokens::RBracket)
135
- assert lexer.pop(NexusFile::Tokens::LParen)
136
- assert foo = lexer.pop(NexusFile::Tokens::Label)
129
+ lexer = NexusParser::Lexer.new(',/=](\'NOT23\'[);,')
130
+ assert lexer.peek(NexusParser::Tokens::Comma)
131
+ assert lexer.pop(NexusParser::Tokens::Comma)
132
+ assert lexer.pop(NexusParser::Tokens::BckSlash)
133
+ assert lexer.pop(NexusParser::Tokens::Equals)
134
+ assert lexer.pop(NexusParser::Tokens::RBracket)
135
+ assert lexer.pop(NexusParser::Tokens::LParen)
136
+ assert foo = lexer.pop(NexusParser::Tokens::Label)
137
137
  assert_equal "NOT23", foo.value
138
- assert lexer.pop(NexusFile::Tokens::LBracket)
139
- assert lexer.pop(NexusFile::Tokens::RParen)
140
- assert lexer.pop(NexusFile::Tokens::SemiColon)
141
- assert lexer.pop(NexusFile::Tokens::Comma)
138
+ assert lexer.pop(NexusParser::Tokens::LBracket)
139
+ assert lexer.pop(NexusParser::Tokens::RParen)
140
+ assert lexer.pop(NexusParser::Tokens::SemiColon)
141
+ assert lexer.pop(NexusParser::Tokens::Comma)
142
142
 
143
143
  end
144
144
 
145
145
  def test_tax_labels
146
- lexer = NexusFile::Lexer.new("Taxlabels 'foo' bar blorf \"stuff things\" stuff 'and foo';")
147
- assert foo = lexer.pop(NexusFile::Tokens::Taxlabels)
146
+ lexer = NexusParser::Lexer.new("Taxlabels 'foo' bar blorf \"stuff things\" stuff 'and foo';")
147
+ assert foo = lexer.pop(NexusParser::Tokens::Taxlabels)
148
148
  assert_equal("Taxlabels ", foo.value)
149
149
  end
150
150
 
151
151
  def test_EndBlk
152
- lexer = NexusFile::Lexer.new(" \n\n End ;")
153
- assert foo = lexer.pop(NexusFile::Tokens::EndBlk)
154
- lexer = NexusFile::Lexer.new("\n\nEnd;")
155
- assert foo = lexer.pop(NexusFile::Tokens::EndBlk)
152
+ lexer = NexusParser::Lexer.new(" \n\n End ;")
153
+ assert foo = lexer.pop(NexusParser::Tokens::EndBlk)
154
+ lexer = NexusParser::Lexer.new("\n\nEnd;")
155
+ assert foo = lexer.pop(NexusParser::Tokens::EndBlk)
156
156
 
157
- lexer = NexusFile::Lexer.new("123123 \n\nEnd;")
158
- assert !lexer.peek(NexusFile::Tokens::EndBlk)
159
- lexer = NexusFile::Lexer.new("this is not an \"end\"\n\nEnd;")
160
- assert !lexer.peek(NexusFile::Tokens::EndBlk)
157
+ lexer = NexusParser::Lexer.new("123123 \n\nEnd;")
158
+ assert !lexer.peek(NexusParser::Tokens::EndBlk)
159
+ lexer = NexusParser::Lexer.new("this is not an \"end\"\n\nEnd;")
160
+ assert !lexer.peek(NexusParser::Tokens::EndBlk)
161
161
  end
162
162
 
163
163
  def test_semicolon
164
- lexer = NexusFile::Lexer.new("; Matrix foo")
165
- assert lexer.peek(NexusFile::Tokens::SemiColon)
166
- assert foo = lexer.pop(NexusFile::Tokens::SemiColon)
164
+ lexer = NexusParser::Lexer.new("; Matrix foo")
165
+ assert lexer.peek(NexusParser::Tokens::SemiColon)
166
+ assert foo = lexer.pop(NexusParser::Tokens::SemiColon)
167
167
  end
168
168
 
169
169
  def test_label
170
- lexer = NexusFile::Lexer.new(' \'foo\' bar, blorf; "stuff things" stuff \'and foo\' 23434 ""asdf"" \'Foo_And_Stuff\' ')
171
- assert foo = lexer.pop(NexusFile::Tokens::Label)
170
+ lexer = NexusParser::Lexer.new(' \'foo\' bar, blorf; "stuff things" stuff \'and foo\' 23434 ""asdf"" \'Foo_And_Stuff\' ')
171
+ assert foo = lexer.pop(NexusParser::Tokens::Label)
172
172
  assert_equal "foo", foo.value
173
- assert foo = lexer.pop(NexusFile::Tokens::Label)
173
+ assert foo = lexer.pop(NexusParser::Tokens::Label)
174
174
  assert_equal "bar", foo.value
175
- assert lexer.pop(NexusFile::Tokens::Comma)
176
- assert foo = lexer.pop(NexusFile::Tokens::Label)
175
+ assert lexer.pop(NexusParser::Tokens::Comma)
176
+ assert foo = lexer.pop(NexusParser::Tokens::Label)
177
177
  assert_equal "blorf", foo.value
178
- assert lexer.pop(NexusFile::Tokens::SemiColon)
179
- assert foo = lexer.pop(NexusFile::Tokens::Label)
178
+ assert lexer.pop(NexusParser::Tokens::SemiColon)
179
+ assert foo = lexer.pop(NexusParser::Tokens::Label)
180
180
  assert_equal "stuff things", foo.value
181
- assert foo = lexer.pop(NexusFile::Tokens::Label)
181
+ assert foo = lexer.pop(NexusParser::Tokens::Label)
182
182
  assert_equal "stuff", foo.value
183
- assert foo = lexer.pop(NexusFile::Tokens::Label)
183
+ assert foo = lexer.pop(NexusParser::Tokens::Label)
184
184
  assert_equal "and foo", foo.value
185
- assert foo = lexer.pop(NexusFile::Tokens::Label)
185
+ assert foo = lexer.pop(NexusParser::Tokens::Label)
186
186
  assert_equal "23434", foo.value
187
- assert foo = lexer.pop(NexusFile::Tokens::Label)
187
+ assert foo = lexer.pop(NexusParser::Tokens::Label)
188
188
  assert_equal '"asdf"', foo.value
189
- assert foo = lexer.pop(NexusFile::Tokens::Label)
189
+ assert foo = lexer.pop(NexusParser::Tokens::Label)
190
190
  assert_equal 'Foo_And_Stuff', foo.value
191
191
  end
192
192
 
193
193
  def test_odd_labels
194
- lexer = NexusFile::Lexer.new("blorf 'fan shaped, narrow base and broad tip (Selkirkiella, Kochiura)' \"\"\" foo \"\"\" '''rupununi''' '''tanzania''' '''cup-shaped''' bar blorf\n;")
195
- assert foo = lexer.pop(NexusFile::Tokens::Label)
194
+ lexer = NexusParser::Lexer.new("blorf 'fan shaped, narrow base and broad tip (Selkirkiella, Kochiura)' \"\"\" foo \"\"\" '''rupununi''' '''tanzania''' '''cup-shaped''' bar blorf\n;")
195
+ assert foo = lexer.pop(NexusParser::Tokens::Label)
196
196
  assert_equal "blorf", foo.value
197
- assert foo = lexer.pop(NexusFile::Tokens::Label)
197
+ assert foo = lexer.pop(NexusParser::Tokens::Label)
198
198
  assert_equal "fan shaped, narrow base and broad tip (Selkirkiella, Kochiura)", foo.value
199
- assert foo = lexer.pop(NexusFile::Tokens::Label)
199
+ assert foo = lexer.pop(NexusParser::Tokens::Label)
200
200
  assert_equal '"" foo ""', foo.value
201
- assert foo = lexer.pop(NexusFile::Tokens::Label)
201
+ assert foo = lexer.pop(NexusParser::Tokens::Label)
202
202
  assert_equal "''rupununi''", foo.value
203
- assert foo = lexer.pop(NexusFile::Tokens::Label)
203
+ assert foo = lexer.pop(NexusParser::Tokens::Label)
204
204
  assert_equal "''tanzania''", foo.value
205
- assert foo = lexer.pop(NexusFile::Tokens::Label)
205
+ assert foo = lexer.pop(NexusParser::Tokens::Label)
206
206
  assert_equal "''cup-shaped''", foo.value
207
- assert foo = lexer.pop(NexusFile::Tokens::Label)
207
+ assert foo = lexer.pop(NexusParser::Tokens::Label)
208
208
  assert_equal "bar", foo.value
209
- assert foo = lexer.pop(NexusFile::Tokens::Label)
209
+ assert foo = lexer.pop(NexusParser::Tokens::Label)
210
210
  assert_equal "blorf", foo.value
211
- assert foo = lexer.pop(NexusFile::Tokens::SemiColon)
211
+ assert foo = lexer.pop(NexusParser::Tokens::SemiColon)
212
212
  end
213
213
 
214
214
  def test_title
215
- lexer = NexusFile::Lexer.new( "TITLE 'Scharff&Coddington_1997_Araneidae';")
216
- assert foo = lexer.pop(NexusFile::Tokens::Title)
215
+ lexer = NexusParser::Lexer.new( "TITLE 'Scharff&Coddington_1997_Araneidae';")
216
+ assert foo = lexer.pop(NexusParser::Tokens::Title)
217
217
  assert_equal "TITLE 'Scharff&Coddington_1997_Araneidae';", foo.value
218
218
  end
219
219
 
220
220
 
221
221
  def test_dimensions
222
222
  input = " DIMENSIONS NCHAR= 10"
223
- lexer = NexusFile::Lexer.new(input)
224
- assert foo = lexer.pop(NexusFile::Tokens::Dimensions)
223
+ lexer = NexusParser::Lexer.new(input)
224
+ assert foo = lexer.pop(NexusParser::Tokens::Dimensions)
225
225
  assert_equal "DIMENSIONS", foo.value
226
226
  end
227
227
 
228
228
  def test_format
229
229
  input = " format NCHAR= 10"
230
- lexer = NexusFile::Lexer.new(input)
231
- assert foo = lexer.pop(NexusFile::Tokens::Format)
230
+ lexer = NexusParser::Lexer.new(input)
231
+ assert foo = lexer.pop(NexusParser::Tokens::Format)
232
232
  assert_equal "format", foo.value
233
233
  end
234
234
 
235
235
  def test_odd_value_pair
236
- lexer = NexusFile::Lexer.new(" TEXT CHARACTER = 3 TEXT = A62.003;
236
+ lexer = NexusParser::Lexer.new(" TEXT CHARACTER = 3 TEXT = A62.003;
237
237
 
238
238
  TEXT CHARACTER = 4 TEXT = A62.004; \n end; ")
239
- assert foo = lexer.pop(NexusFile::Tokens::Label)
240
- assert foo = lexer.pop(NexusFile::Tokens::ValuePair)
239
+ assert foo = lexer.pop(NexusParser::Tokens::Label)
240
+ assert foo = lexer.pop(NexusParser::Tokens::ValuePair)
241
241
  blorf = {:character => "3"}
242
242
  assert_equal blorf , foo.value
243
- assert foo = lexer.pop(NexusFile::Tokens::ValuePair)
243
+ assert foo = lexer.pop(NexusParser::Tokens::ValuePair)
244
244
  blorf = {:text => "A62.003"}
245
245
  assert_equal blorf , foo.value
246
- assert foo = lexer.pop(NexusFile::Tokens::Label)
246
+ assert foo = lexer.pop(NexusParser::Tokens::Label)
247
247
  assert_equal "TEXT", foo.value
248
- assert foo = lexer.pop(NexusFile::Tokens::ValuePair)
248
+ assert foo = lexer.pop(NexusParser::Tokens::ValuePair)
249
249
  blorf = {:character => "4"}
250
250
  assert_equal blorf , foo.value
251
- assert foo = lexer.pop(NexusFile::Tokens::ValuePair)
251
+ assert foo = lexer.pop(NexusParser::Tokens::ValuePair)
252
252
  blorf = {:text => "A62.004"}
253
253
  assert_equal blorf , foo.value
254
254
 
@@ -257,92 +257,92 @@ class Test_Lexer < Test::Unit::TestCase
257
257
 
258
258
  def test_value_pair
259
259
 
260
- lexer0 = NexusFile::Lexer.new(' DATATYPE=STANDARD ')
261
- assert foo = lexer0.pop(NexusFile::Tokens::ValuePair)
260
+ lexer0 = NexusParser::Lexer.new(' DATATYPE=STANDARD ')
261
+ assert foo = lexer0.pop(NexusParser::Tokens::ValuePair)
262
262
  blorf = {:datatype => "STANDARD"}
263
263
  assert_equal blorf , foo.value
264
264
 
265
- lexer = NexusFile::Lexer.new(' DATATYPE = STANDARD ')
266
- assert foo = lexer.pop(NexusFile::Tokens::ValuePair)
265
+ lexer = NexusParser::Lexer.new(' DATATYPE = STANDARD ')
266
+ assert foo = lexer.pop(NexusParser::Tokens::ValuePair)
267
267
  blorf = {:datatype => "STANDARD"}
268
268
  assert_equal blorf , foo.value
269
269
 
270
- lexer2 = NexusFile::Lexer.new(' DATATYPE ="STANDARD" ')
271
- assert foo = lexer2.pop(NexusFile::Tokens::ValuePair)
270
+ lexer2 = NexusParser::Lexer.new(' DATATYPE ="STANDARD" ')
271
+ assert foo = lexer2.pop(NexusParser::Tokens::ValuePair)
272
272
  assert_equal blorf, foo.value
273
273
 
274
- lexer3 = NexusFile::Lexer.new('DATATYPE= "STANDARD" ')
275
- assert foo = lexer3.pop(NexusFile::Tokens::ValuePair)
274
+ lexer3 = NexusParser::Lexer.new('DATATYPE= "STANDARD" ')
275
+ assert foo = lexer3.pop(NexusParser::Tokens::ValuePair)
276
276
  assert_equal blorf, foo.value
277
277
 
278
278
  input= " NCHAR=10 ntaxa =10 nfoo='999' nbar = \" a b c \" ; "
279
- lexer4 = NexusFile::Lexer.new(input)
280
- assert foo = lexer4.pop(NexusFile::Tokens::ValuePair)
279
+ lexer4 = NexusParser::Lexer.new(input)
280
+ assert foo = lexer4.pop(NexusParser::Tokens::ValuePair)
281
281
  smorf = {:nchar => '10'}
282
282
  assert_equal smorf, foo.value
283
- assert foo = lexer4.pop(NexusFile::Tokens::ValuePair)
283
+ assert foo = lexer4.pop(NexusParser::Tokens::ValuePair)
284
284
  smorf = {:ntaxa => '10'}
285
285
  assert_equal smorf, foo.value
286
- assert foo = lexer4.pop(NexusFile::Tokens::ValuePair)
286
+ assert foo = lexer4.pop(NexusParser::Tokens::ValuePair)
287
287
  smorf = {:nfoo => '999'}
288
288
  assert_equal smorf, foo.value
289
- assert foo = lexer4.pop(NexusFile::Tokens::ValuePair)
289
+ assert foo = lexer4.pop(NexusParser::Tokens::ValuePair)
290
290
  smorf = {:nbar => 'a b c'}
291
291
  assert_equal smorf, foo.value
292
292
 
293
- lexer5 = NexusFile::Lexer.new(' symbols= " a c b d 1 " ')
294
- assert foo = lexer5.pop(NexusFile::Tokens::ValuePair)
293
+ lexer5 = NexusParser::Lexer.new(' symbols= " a c b d 1 " ')
294
+ assert foo = lexer5.pop(NexusParser::Tokens::ValuePair)
295
295
  smorf = {:symbols => 'a c b d 1'}
296
296
  assert_equal smorf, foo.value
297
297
 
298
- lexer6 = NexusFile::Lexer.new(' missing = - ')
299
- assert foo = lexer6.pop(NexusFile::Tokens::ValuePair)
298
+ lexer6 = NexusParser::Lexer.new(' missing = - ')
299
+ assert foo = lexer6.pop(NexusParser::Tokens::ValuePair)
300
300
  smorf = {:missing => '-'}
301
301
  assert_equal smorf, foo.value
302
302
 
303
- lexer6a = NexusFile::Lexer.new("ntaxa=1;\n")
304
- assert foo = lexer6a.pop(NexusFile::Tokens::ValuePair)
303
+ lexer6a = NexusParser::Lexer.new("ntaxa=1;\n")
304
+ assert foo = lexer6a.pop(NexusParser::Tokens::ValuePair)
305
305
  smorf = {:ntaxa => '1'}
306
306
  assert_equal smorf, foo.value
307
307
 
308
- lexer7 = NexusFile::Lexer.new("ntaxa =1;\n")
309
- assert foo = lexer7.pop(NexusFile::Tokens::ValuePair)
308
+ lexer7 = NexusParser::Lexer.new("ntaxa =1;\n")
309
+ assert foo = lexer7.pop(NexusParser::Tokens::ValuePair)
310
310
  smorf = {:ntaxa => '1'}
311
311
  assert_equal smorf, foo.value
312
312
 
313
- lexer8 = NexusFile::Lexer.new(" ntaxa = 1 ;\n")
314
- assert foo = lexer8.pop(NexusFile::Tokens::ValuePair)
313
+ lexer8 = NexusParser::Lexer.new(" ntaxa = 1 ;\n")
314
+ assert foo = lexer8.pop(NexusParser::Tokens::ValuePair)
315
315
  smorf = {:ntaxa => '1'}
316
316
  assert_equal smorf, foo.value
317
317
 
318
- lexer9 = NexusFile::Lexer.new(" TF = (CM 'This is an annotation that haa a hard return in it^n^n^n^nSo there!') ")
319
- assert foo = lexer9.pop(NexusFile::Tokens::ValuePair)
318
+ lexer9 = NexusParser::Lexer.new(" TF = (CM 'This is an annotation that haa a hard return in it^n^n^n^nSo there!') ")
319
+ assert foo = lexer9.pop(NexusParser::Tokens::ValuePair)
320
320
  smorf = {:tf => "(CM 'This is an annotation that haa a hard return in it^n^n^n^nSo there!')" }
321
321
  assert_equal smorf, foo.value
322
322
 
323
- lexer10 = NexusFile::Lexer.new(" TF = (CM 'This is an value pair that has (parens) within the value, twice! ()') ; some stuff left here ")
324
- assert foo = lexer10.pop(NexusFile::Tokens::ValuePair)
323
+ lexer10 = NexusParser::Lexer.new(" TF = (CM 'This is an value pair that has (parens) within the value, twice! ()') ; some stuff left here ")
324
+ assert foo = lexer10.pop(NexusParser::Tokens::ValuePair)
325
325
  smorf = {:tf => "(CM 'This is an value pair that has (parens) within the value, twice! ()')" }
326
326
  assert_equal smorf, foo.value
327
327
 
328
- lexer11 = NexusFile::Lexer.new("CHARACTER = 1 TEXT = A62.001;")
329
- assert_equal true, !lexer11.peek(NexusFile::Tokens::SemiColon)
330
- assert_equal true, lexer11.peek(NexusFile::Tokens::ValuePair)
331
- assert foo = lexer11.pop(NexusFile::Tokens::ValuePair)
328
+ lexer11 = NexusParser::Lexer.new("CHARACTER = 1 TEXT = A62.001;")
329
+ assert_equal true, !lexer11.peek(NexusParser::Tokens::SemiColon)
330
+ assert_equal true, lexer11.peek(NexusParser::Tokens::ValuePair)
331
+ assert foo = lexer11.pop(NexusParser::Tokens::ValuePair)
332
332
  smorf = {:character => "1" }
333
333
  assert_equal smorf, foo.value
334
- assert foo = lexer11.pop(NexusFile::Tokens::ValuePair)
334
+ assert foo = lexer11.pop(NexusParser::Tokens::ValuePair)
335
335
  end
336
336
 
337
337
  def test_MesquiteIDs
338
- lexer = NexusFile::Lexer.new('IDS JC1191fcddc3b425 JC1191fcddc3b426 JC1191fcddc3b427 JC1191fcddc3b428 JC1191fcddc3b429 JC1191fcddc3b430 JC1191fcddc3b431 JC1191fcddc3b432 JC1191fcddc3b433 JC1191fcddc3b434 ;
338
+ lexer = NexusParser::Lexer.new('IDS JC1191fcddc3b425 JC1191fcddc3b426 JC1191fcddc3b427 JC1191fcddc3b428 JC1191fcddc3b429 JC1191fcddc3b430 JC1191fcddc3b431 JC1191fcddc3b432 JC1191fcddc3b433 JC1191fcddc3b434 ;
339
339
  BLOCKID JC1191fcddc0c0;')
340
- assert lexer.pop(NexusFile::Tokens::MesquiteIDs)
341
- assert lexer.pop(NexusFile::Tokens::MesquiteBlockID)
340
+ assert lexer.pop(NexusParser::Tokens::MesquiteIDs)
341
+ assert lexer.pop(NexusParser::Tokens::MesquiteBlockID)
342
342
  end
343
343
 
344
344
  def test_TreesBlk
345
- lexer = NexusFile::Lexer.new("BEGIN TREES;
345
+ lexer = NexusParser::Lexer.new("BEGIN TREES;
346
346
  Title Imported_trees;
347
347
  LINK Taxa = 'Scharff&Coddington_1997_Araneidae';
348
348
  TRANSLATE
@@ -377,25 +377,25 @@ class Test_Lexer < Test::Unit::TestCase
377
377
 
378
378
  END;")
379
379
 
380
- assert lexer.pop(NexusFile::Tokens::BeginBlk)
381
- assert foo = lexer.pop(NexusFile::Tokens::TreesBlk)
380
+ assert lexer.pop(NexusParser::Tokens::BeginBlk)
381
+ assert foo = lexer.pop(NexusParser::Tokens::TreesBlk)
382
382
  assert_equal 'TREES', foo.value.slice(0,5)
383
383
  assert_equal 'END;', foo.value.slice(-4,4)
384
- assert lexer.pop(NexusFile::Tokens::BeginBlk)
385
- assert lexer.pop(NexusFile::Tokens::LabelsBlk)
384
+ assert lexer.pop(NexusParser::Tokens::BeginBlk)
385
+ assert lexer.pop(NexusParser::Tokens::LabelsBlk)
386
386
 
387
387
  end
388
388
 
389
389
  def test_NotesBlk
390
390
  input = "BEGIN NOTES ;"
391
- lexer = NexusFile::Lexer.new(input)
392
- assert lexer.pop(NexusFile::Tokens::BeginBlk)
393
- assert foo = lexer.pop(NexusFile::Tokens::NotesBlk)
391
+ lexer = NexusParser::Lexer.new(input)
392
+ assert lexer.pop(NexusParser::Tokens::BeginBlk)
393
+ assert foo = lexer.pop(NexusParser::Tokens::NotesBlk)
394
394
  assert "NOTES", foo.value
395
395
  end
396
396
 
397
397
  def test_LabelsBlk
398
- lexer = NexusFile::Lexer.new("
398
+ lexer = NexusParser::Lexer.new("
399
399
  LABELS;
400
400
  CHARGROUPLABEL MM_Genitalia COLOR = (RGB 1.0 0.4 0.4) ;
401
401
  CHARGROUPLABEL Somatic COLOR = (RGB 0.6 1.0 0.33333333) ;
@@ -407,29 +407,27 @@ class Test_Lexer < Test::Unit::TestCase
407
407
 
408
408
  BEGIN some other block;")
409
409
 
410
- assert foo = lexer.pop(NexusFile::Tokens::LabelsBlk)
410
+ assert foo = lexer.pop(NexusParser::Tokens::LabelsBlk)
411
411
  assert_equal 'LABELS', foo.value.slice(0,6)
412
412
  assert_equal 'END;', foo.value.slice(-4,4)
413
413
  end
414
414
 
415
415
  def test_SetsBlk
416
- lexer = NexusFile::Lexer.new("
416
+ lexer = NexusParser::Lexer.new("
417
417
  SETS;
418
418
  CHARPARTITION * UNTITLED = Somatic : 1 - 2 4, MM_Genitalia : 5 - 8 10;
419
419
 
420
420
  END;
421
421
  BEGIN some other block;")
422
422
 
423
- assert foo = lexer.pop(NexusFile::Tokens::SetsBlk)
423
+ assert foo = lexer.pop(NexusParser::Tokens::SetsBlk)
424
424
  assert_equal 'SETS', foo.value.slice(0,4)
425
425
  assert_equal 'END;', foo.value.slice(-4,4)
426
426
  end
427
427
 
428
-
429
-
430
428
  def test_lexer_errors
431
- lexer = NexusFile::Lexer.new("*&")
432
- assert_raise(NexusFile::ParseError) {lexer.peek(NexusFile::Tokens::ID)}
429
+ lexer = NexusParser::Lexer.new("*&")
430
+ assert_raise(NexusParser::ParseError) {lexer.peek(NexusParser::Tokens::ID)}
433
431
  end
434
432
  end
435
433
 
@@ -437,7 +435,7 @@ end
437
435
  class Test_Parser < Test::Unit::TestCase
438
436
  def setup
439
437
  # a Mesquite 2.n or higher file
440
- @nf = File.read('MX_test_03.nex') # MX_test_01.nex
438
+ @nf = File.read(File.expand_path(File.join(File.dirname(__FILE__), '../test/MX_test_03.nex')))
441
439
  end
442
440
 
443
441
  def teardown
@@ -447,7 +445,7 @@ class Test_Parser < Test::Unit::TestCase
447
445
  def test_that_file_might_be_nexus
448
446
  begin
449
447
  assert !parse_nexus_file("#Nexblux Begin Natrix end;")
450
- rescue NexusFile::ParseError
448
+ rescue NexusParser::ParseError
451
449
  assert true
452
450
  end
453
451
  end
@@ -483,9 +481,9 @@ class Test_Parser < Test::Unit::TestCase
483
481
  BLOCKID JC1191fcddc0c4;
484
482
  END;"
485
483
 
486
- builder = NexusFile::Builder.new
487
- lexer = NexusFile::Lexer.new(input)
488
- NexusFile::Parser.new(lexer,builder).parse_taxa_blk
484
+ builder = NexusParser::Builder.new
485
+ lexer = NexusParser::Lexer.new(input)
486
+ NexusParser::Parser.new(lexer,builder).parse_taxa_blk
489
487
  foo = builder.nexus_file
490
488
 
491
489
  assert_equal 10, foo.taxa.size
@@ -505,9 +503,9 @@ class Test_Parser < Test::Unit::TestCase
505
503
  ;
506
504
  END;"
507
505
 
508
- builder = NexusFile::Builder.new
509
- lexer = NexusFile::Lexer.new(input)
510
- NexusFile::Parser.new(lexer,builder).parse_taxa_blk
506
+ builder = NexusParser::Builder.new
507
+ lexer = NexusParser::Lexer.new(input)
508
+ NexusParser::Parser.new(lexer,builder).parse_taxa_blk
511
509
  foo = builder.nexus_file
512
510
 
513
511
  assert_equal 10, foo.taxa.size
@@ -544,8 +542,8 @@ class Test_Parser < Test::Unit::TestCase
544
542
 
545
543
  END;"
546
544
 
547
- builder = NexusFile::Builder.new
548
- @lexer = NexusFile::Lexer.new(input)
545
+ builder = NexusParser::Builder.new
546
+ @lexer = NexusParser::Lexer.new(input)
549
547
 
550
548
  # add the taxa, assumes we have them for comparison purposes, though we (shouldn't) ultimately need them
551
549
  # foo.taxa = ["Dictyna", "Uloborus", "Deinopis", "Nephila&Herennia", "Nephilenygys_cruentata", "Meta", "Leucauge_venusta", "Pachygnatha", "Theridiosoma_01", "Tetragnatha"]
@@ -553,7 +551,7 @@ class Test_Parser < Test::Unit::TestCase
553
551
  # stub the taxa, they would otherwise get added in dimensions or taxa block
554
552
  (0..9).each{|i| builder.stub_taxon}
555
553
 
556
- NexusFile::Parser.new(@lexer,builder).parse_characters_blk
554
+ NexusParser::Parser.new(@lexer,builder).parse_characters_blk
557
555
  foo = builder.nexus_file
558
556
 
559
557
  assert_equal 10, foo.characters.size
@@ -595,8 +593,8 @@ class Test_Parser < Test::Unit::TestCase
595
593
  ;
596
594
  END;"
597
595
 
598
- builder = NexusFile::Builder.new
599
- @lexer = NexusFile::Lexer.new(input)
596
+ builder = NexusParser::Builder.new
597
+ @lexer = NexusParser::Lexer.new(input)
600
598
 
601
599
  # add the taxa, assumes we have them for comparison purposes, though we (shouldn't) ultimately need them
602
600
  # foo.taxa = ["Dictyna", "Uloborus", "Deinopis", "Nephila&Herennia", "Nephilenygys_cruentata", "Meta", "Leucauge_venusta", "Pachygnatha", "Theridiosoma_01", "Tetragnatha"]
@@ -604,7 +602,7 @@ class Test_Parser < Test::Unit::TestCase
604
602
  # stub the taxa, they would otherwise get added in dimensions or taxa block
605
603
  (0..9).each{|i| builder.stub_taxon}
606
604
 
607
- NexusFile::Parser.new(@lexer,builder).parse_characters_blk
605
+ NexusParser::Parser.new(@lexer,builder).parse_characters_blk
608
606
  foo = builder.nexus_file
609
607
 
610
608
  assert_equal 10, foo.characters.size
@@ -630,10 +628,10 @@ class Test_Parser < Test::Unit::TestCase
630
628
 
631
629
  def test_parse_dimensions
632
630
  input= " DIMENSIONS NCHAR=10 ntaxa =10 nfoo='999' nbar = \" a b c \" blorf=2; "
633
- builder = NexusFile::Builder.new
634
- lexer = NexusFile::Lexer.new(input)
631
+ builder = NexusParser::Builder.new
632
+ lexer = NexusParser::Lexer.new(input)
635
633
 
636
- NexusFile::Parser.new(lexer,builder).parse_dimensions
634
+ NexusParser::Parser.new(lexer,builder).parse_dimensions
637
635
  foo = builder.nexus_file
638
636
 
639
637
  assert_equal "10", foo.vars[:nchar]
@@ -646,10 +644,10 @@ class Test_Parser < Test::Unit::TestCase
646
644
 
647
645
  def test_parse_format
648
646
  input = "FORMAT DATATYPE = STANDARD GAP = - MISSING = ? SYMBOLS = \" 0 1 2 3 4 5 6 7 8 9 A\";"
649
- builder = NexusFile::Builder.new
650
- lexer = NexusFile::Lexer.new(input)
647
+ builder = NexusParser::Builder.new
648
+ lexer = NexusParser::Lexer.new(input)
651
649
 
652
- NexusFile::Parser.new(lexer,builder).parse_format
650
+ NexusParser::Parser.new(lexer,builder).parse_format
653
651
  foo = builder.nexus_file
654
652
 
655
653
  assert_equal "STANDARD", foo.vars[:datatype]
@@ -665,12 +663,12 @@ class Test_Parser < Test::Unit::TestCase
665
663
  MATRIX
666
664
  fooo 01 more stuff here that should not be hit"
667
665
 
668
- builder = NexusFile::Builder.new
669
- lexer = NexusFile::Lexer.new(input)
666
+ builder = NexusParser::Builder.new
667
+ lexer = NexusParser::Lexer.new(input)
670
668
 
671
669
  (0..9).each{builder.stub_chr()}
672
670
 
673
- NexusFile::Parser.new(lexer,builder).parse_chr_state_labels
671
+ NexusParser::Parser.new(lexer,builder).parse_chr_state_labels
674
672
 
675
673
  foo = builder.nexus_file
676
674
  assert_equal 10, foo.characters.size
@@ -720,12 +718,12 @@ class Test_Parser < Test::Unit::TestCase
720
718
  Matrix
721
719
  fooo 01 more stuff here that should not be hit"
722
720
 
723
- builder = NexusFile::Builder.new
724
- lexer = NexusFile::Lexer.new(input)
721
+ builder = NexusParser::Builder.new
722
+ lexer = NexusParser::Lexer.new(input)
725
723
 
726
724
  (0..29).each{builder.stub_chr()}
727
725
 
728
- NexusFile::Parser.new(lexer,builder).parse_chr_state_labels
726
+ NexusParser::Parser.new(lexer,builder).parse_chr_state_labels
729
727
 
730
728
  foo = builder.nexus_file
731
729
 
@@ -746,12 +744,12 @@ class Test_Parser < Test::Unit::TestCase
746
744
  MATRIX
747
745
  fooo 01 more stuff here that should not be hit"
748
746
 
749
- builder = NexusFile::Builder.new
750
- lexer = NexusFile::Lexer.new(input)
747
+ builder = NexusParser::Builder.new
748
+ lexer = NexusParser::Lexer.new(input)
751
749
 
752
750
  (0..147).each{builder.stub_chr()}
753
751
 
754
- NexusFile::Parser.new(lexer,builder).parse_chr_state_labels
752
+ NexusParser::Parser.new(lexer,builder).parse_chr_state_labels
755
753
 
756
754
  foo = builder.nexus_file
757
755
  assert_equal 10, foo.characters.size
@@ -823,24 +821,24 @@ class Test_Parser < Test::Unit::TestCase
823
821
 
824
822
  # note the second last note note embedds parens in the value
825
823
 
826
- builder = NexusFile::Builder.new
827
- lexer = NexusFile::Lexer.new(input)
824
+ builder = NexusParser::Builder.new
825
+ lexer = NexusParser::Lexer.new(input)
828
826
 
829
827
  # stubs
830
828
  (0..9).each{builder.stub_chr()}
831
829
  (0..9).each{builder.stub_taxon()}
832
830
  builder.nexus_file.codings[3] = []
833
- builder.nexus_file.codings[3][7] = NexusFile::NexusFile::Coding.new()
831
+ builder.nexus_file.codings[3][7] = NexusParser::NexusParser::Coding.new()
834
832
  builder.nexus_file.codings[8] = []
835
- builder.nexus_file.codings[8][2] = NexusFile::NexusFile::Coding.new()
833
+ builder.nexus_file.codings[8][2] = NexusParser::NexusParser::Coding.new()
836
834
  builder.nexus_file.codings[1] = []
837
- builder.nexus_file.codings[1][5] = NexusFile::NexusFile::Coding.new()
835
+ builder.nexus_file.codings[1][5] = NexusParser::NexusParser::Coding.new()
838
836
  builder.nexus_file.codings[6] = []
839
- builder.nexus_file.codings[6][9] = NexusFile::NexusFile::Coding.new()
837
+ builder.nexus_file.codings[6][9] = NexusParser::NexusParser::Coding.new()
840
838
  builder.nexus_file.codings[3] = []
841
- builder.nexus_file.codings[3][7] = NexusFile::NexusFile::Coding.new()
839
+ builder.nexus_file.codings[3][7] = NexusParser::NexusParser::Coding.new()
842
840
 
843
- NexusFile::Parser.new(lexer,builder).parse_notes_blk
841
+ NexusParser::Parser.new(lexer,builder).parse_notes_blk
844
842
 
845
843
  foo = builder.nexus_file
846
844
 
@@ -890,12 +888,12 @@ class Test_Parser < Test::Unit::TestCase
890
888
 
891
889
  # note the second last note note embeds parens in the value
892
890
 
893
- builder = NexusFile::Builder.new
894
- lexer = NexusFile::Lexer.new(input)
891
+ builder = NexusParser::Builder.new
892
+ lexer = NexusParser::Lexer.new(input)
895
893
  # stubs
896
894
  (0..9).each{builder.stub_chr()}
897
895
 
898
- NexusFile::Parser.new(lexer,builder).parse_notes_blk
896
+ NexusParser::Parser.new(lexer,builder).parse_notes_blk
899
897
 
900
898
  foo = builder.nexus_file
901
899
 
@@ -910,11 +908,10 @@ class Test_Parser < Test::Unit::TestCase
910
908
  assert_equal 'A62.006', foo.characters[5].notes[0].note
911
909
  assert_equal 'A62.007', foo.characters[6].notes[0].note
912
910
  assert_equal 'A62.008', foo.characters[7].notes[0].note
913
- assert_equal NexusFile::NexusFile::Character, foo.characters[7].class
911
+ assert_equal NexusParser::NexusParser::Character, foo.characters[7].class
914
912
  assert_equal 1, foo.characters[7].notes.size
915
913
  end
916
914
 
917
-
918
915
  def test_parse_trees_block
919
916
  end
920
917