hmachine 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (49) hide show
  1. data/README.md +4 -133
  2. data/hmachine.gemspec +15 -79
  3. metadata +22 -89
  4. data/.gitignore +0 -3
  5. data/Gemfile +0 -11
  6. data/Gemfile.lock +0 -51
  7. data/Rakefile +0 -53
  8. data/bin/hmachine +0 -99
  9. data/test/fixtures/hcard/commercenet.html +0 -21
  10. data/test/fixtures/hcard/geo.html +0 -28
  11. data/test/fixtures/huffduffer.html +0 -466
  12. data/test/fixtures/likeorhate.html +0 -48
  13. data/test/fixtures/rel_license.html +0 -4
  14. data/test/fixtures/test-fixture/hcard/hcard1.html +0 -147
  15. data/test/fixtures/test-fixture/hcard/hcard11.html +0 -123
  16. data/test/fixtures/test-fixture/hcard/hcard12.html +0 -178
  17. data/test/fixtures/test-fixture/hcard/hcard17.html +0 -165
  18. data/test/fixtures/test-fixture/hcard/hcard2.html +0 -264
  19. data/test/fixtures/test-fixture/hcard/hcard3.html +0 -144
  20. data/test/fixtures/test-fixture/hcard/hcard4.html +0 -117
  21. data/test/fixtures/test-fixture/hcard/hcard5.html +0 -119
  22. data/test/fixtures/test-fixture/hcard/hcard6.html +0 -188
  23. data/test/fixtures/test-fixture/hcard/hcard7.html +0 -188
  24. data/test/fixtures/test-fixture/hcard/hcard8.html +0 -130
  25. data/test/fixtures/test-fixture/hcard/hcard9.html +0 -111
  26. data/test/fixtures/test-fixture/hcard/hcard99.html +0 -215
  27. data/test/fixtures/test-fixture/value-class-date-time/value-dt-test-YYYY-MM-DD--HH-MM.html +0 -9
  28. data/test/fixtures/test-fixture/value-class-date-time/value-dt-test-abbr-YYYY-MM-DD--HH-MM.html +0 -4
  29. data/test/fixtures/xfn.html +0 -198
  30. data/test/fixtures/xmdp.html +0 -32
  31. data/test/fixtures/xoxo.html +0 -51
  32. data/test/hmachine_test.rb +0 -133
  33. data/test/microformat/adr_test.rb +0 -47
  34. data/test/microformat/geo_test.rb +0 -66
  35. data/test/microformat/hcard_test.rb +0 -510
  36. data/test/microformat/rellicense_test.rb +0 -36
  37. data/test/microformat/reltag_test.rb +0 -61
  38. data/test/microformat/votelinks_test.rb +0 -44
  39. data/test/microformat/xfn_test.rb +0 -28
  40. data/test/microformat/xmdp_test.rb +0 -16
  41. data/test/microformat/xoxo_test.rb +0 -51
  42. data/test/microformat_test.rb +0 -20
  43. data/test/pattern/date_time_test.rb +0 -55
  44. data/test/pattern/value_class_test.rb +0 -33
  45. data/test/pattern_test.rb +0 -132
  46. data/test/posh/anchor_test.rb +0 -41
  47. data/test/posh/base_test.rb +0 -150
  48. data/test/posh/definition_list_test.rb +0 -38
  49. data/test/test_helper.rb +0 -32
@@ -1,66 +0,0 @@
1
- require File.join(File.dirname(__FILE__), '..', 'test_helper')
2
-
3
- class GeoTest < Test::Unit::TestCase
4
- setup do
5
- @klass = HMachine::Microformat::Geo
6
- end
7
-
8
- should 'has a latitude and longitude' do
9
- doc = Nokogiri.parse(%q{
10
- <div class="geo">GEO:
11
- <span class="latitude">37.386013</span>,
12
- <span class="longitude">-122.082932</span>
13
- </div>
14
- })
15
- geo = @klass.parse(doc)
16
- assert_respond_to geo, :latitude
17
- assert_respond_to geo, :longitude
18
- assert_equal geo.latitude, geo.lat
19
- assert_equal geo.longitude, geo.long
20
- assert_equal '-122.082932', geo.long
21
- assert_equal '37.386013', geo.lat
22
- end
23
-
24
- should 'use the abbreviation design pattern when applicable' do
25
- doc = Nokogiri.parse(%q{
26
- <div class="geo">
27
- <abbr class="latitude" title="37.408183">N 37° 24.491</abbr>
28
- <abbr class="longitude" title="-122.13855">W 122° 08.313</abbr>
29
- </div>
30
- })
31
- geo = @klass.parse(doc)
32
- assert_equal "37.408183", geo.lat
33
- assert_equal "-122.13855", geo.long
34
- end
35
-
36
- should 'use the value class pattern' do
37
- doc = Nokogiri.parse(%q{
38
- <div class="geo">GEO:
39
- <span class="latitude">Somewhere <span class="value">37.386013</span></span>,
40
- <span class="longitude">Far Away <span class="value">-122.082932</span></span>
41
- </div>
42
- })
43
- geo = @klass.parse(doc)
44
- assert_equal '37.386013', geo.lat
45
- assert_equal '-122.082932', geo.long
46
- end
47
-
48
- should 'spit out a google maps url' do
49
- doc = Nokogiri.parse(%q{
50
- <div class="geo">
51
- <abbr class="latitude" title="37.408183">N 37° 24.491</abbr>
52
- <abbr class="longitude" title="-122.13855">W 122° 08.313</abbr>
53
- </div>
54
- })
55
- geo = @klass.parse(doc)
56
- assert_equal "http://maps.google.com/?q=37.408183,-122.13855", geo.to_google_maps
57
- end
58
-
59
- should 'extract lat/long values from paired value' do
60
- doc = Nokogiri.parse(%q(<abbr class="geo" title="37.77;-122.41">Northern California</abbr>))
61
- geo = @klass.parse(doc)
62
- assert_respond_to geo, :latitude
63
- assert_equal '37.77', geo.lat
64
- assert_equal '-122.41', geo.long
65
- end
66
- end
@@ -1,510 +0,0 @@
1
- require File.join(File.dirname(__FILE__), '..', 'test_helper')
2
-
3
- class HCardTest < Test::Unit::TestCase
4
- @@klass = HMachine::Microformat::HCard
5
-
6
- describe 'non test-fixture tests' do
7
- def self.before_all
8
- @doc ||= Nokogiri.parse(get_fixture('hcard/commercenet.html'))
9
- @vcard ||= @@klass.parse(@doc)
10
- end
11
-
12
- setup do
13
- @vcard = self.class.before_all
14
- end
15
-
16
- should 'be an organization' do
17
- assert @vcard.organization?
18
- end
19
-
20
- should 'convert to a vcard' do
21
- assert_respond_to @vcard, :to_vcard
22
- end
23
- end
24
-
25
- # http://www.ufxtract.com/testsuite/hcard/hcard1.htm
26
- describe 'single occurence test' do
27
- def self.before_all
28
- @doc ||= test_fixture('hcard/hcard1.html')
29
- @vcard ||= @@klass.parse_first(@doc)
30
- end
31
-
32
- setup do
33
- @vcard = self.class.before_all
34
- end
35
-
36
- test 'The fn (formatted name) is a singular value' do
37
- assert_respond_to @vcard, :fn
38
- assert @vcard.has_property?(:fn)
39
- assert_equal 'John Doe', @vcard.fn
40
- end
41
-
42
- test 'The n (name) is a singular value' do
43
- assert_respond_to @vcard, :n
44
- assert @vcard.has_property?(:n)
45
- end
46
-
47
- test 'The bday (birthday) is a singular value' do
48
- assert @vcard.has_property?(:bday)
49
- assert_equal 1, @vcard.bday.mon
50
- assert_equal 1, @vcard.bday.day
51
- assert_equal 2000, @vcard.bday.year
52
- end
53
-
54
- test 'The class is a singular value' do
55
- assert @vcard.has_property?(:class)
56
- assert_equal 'Public', @vcard[:class]
57
- end
58
-
59
- test 'The geo is a singular value' do
60
- assert_respond_to @vcard, :geo
61
- assert @vcard.has_property?(:geo)
62
- end
63
-
64
- test 'The rev is a singular value' do
65
- assert @vcard.has_property?(:rev)
66
- assert_equal 1, @vcard.rev.mon
67
- assert_equal 1, @vcard.rev.day
68
- end
69
-
70
- test 'The role is a singular value' do
71
- assert @vcard.has_property?(:role)
72
- assert_equal 'Designer', @vcard.role
73
- end
74
-
75
- test 'The sort-string is a singular value' do
76
- assert @vcard.has_property?(:sort_string)
77
- assert_equal 'John', @vcard.sort_string
78
- end
79
-
80
- test 'The tz is a singular value' do
81
- assert @vcard.has_property?(:tz)
82
- assert_equal -18000, @vcard.tz.utc_offset
83
- end
84
-
85
- test 'The uid is a singular value' do
86
- assert @vcard.has_property?(:uid)
87
- assert_equal 'com.johndoe/profiles/johndoe', @vcard.uid
88
- end
89
- end
90
-
91
- # http://www.ufxtract.com/testsuite/hcard/hcard2.htm
92
- describe 'multiple occurence test' do
93
- def self.before_all
94
- @doc ||= test_fixture('hcard/hcard2.html')
95
- @vcard ||= @@klass.parse_first(@doc)
96
- end
97
-
98
- setup do
99
- @vcard = self.class.before_all
100
- end
101
-
102
- test 'The adr (address) is a optional multiple value' do
103
- assert @vcard.has_property?(:adr)
104
- end
105
-
106
- test 'The email is a optional multiple value' do
107
- assert @vcard.has_property?(:email)
108
- end
109
-
110
- test 'The org is a optional multiple value' do
111
- assert @vcard.has_property?(:org)
112
- end
113
-
114
- test 'The tel is a optional multiple value' do
115
- assert @vcard.has_property?(:tel)
116
- end
117
-
118
- test 'The agent is a optional multiple value' do
119
- assert @vcard.has_property?(:agent)
120
- assert_equal 'Dave Doe', @vcard.agent[1]
121
- end
122
-
123
- test 'The category is a optional multiple value' do
124
- assert @vcard.has_property?(:category)
125
- assert_equal 'development', @vcard.category[1]
126
- end
127
-
128
- test 'The key is a optional multiple value' do
129
- assert @vcard.has_property?(:key)
130
- assert_equal "hd02$Gfu*d%dh87KTa2=23934532479", @vcard.key
131
- end
132
-
133
- test 'The key is a optional multiple value' do
134
- assert @vcard.has_property?(:label)
135
- assert_equal "West Street, Brighton, United Kingdom", @vcard.label[1].split("\n").collect {|i| i.strip }.join(' ')
136
- end
137
-
138
- test 'The label is a optional multiple value' do
139
- assert @vcard.has_property?(:label)
140
- assert_equal "West Street, Brighton, United Kingdom", @vcard.label[1].split("\n").collect {|i| i.strip }.join(' ')
141
- end
142
-
143
- test 'The logo is a optional multiple value' do
144
- assert @vcard.has_property?(:logo)
145
- assert_equal "../images/logo.gif", @vcard.logo[1]
146
- end
147
-
148
- test 'The mailer is a optional multiple value' do
149
- assert @vcard.has_property?(:mailer)
150
- assert_equal "Outlook 2007", @vcard.mailer[1]
151
- end
152
-
153
- test 'The nickname is a optional multiple value' do
154
- assert @vcard.has_property?(:nickname)
155
- assert_equal "Lost boy", @vcard.nickname[1]
156
- end
157
-
158
- test 'The note is a optional multiple value' do
159
- assert @vcard.has_property?(:note)
160
- assert_equal "It can be a real problem booking a hotel room with the name John Doe.", @vcard.note[1]
161
- end
162
-
163
- test 'The photo is a optional multiple value' do
164
- assert @vcard.has_property?(:photo)
165
- assert_equal "../images/photo.gif", @vcard.photo
166
- end
167
-
168
- test 'The sound is a optional multiple value' do
169
- assert @vcard.has_property?(:sound)
170
- assert_equal 'Pronunciation of my name', @vcard.sound
171
- end
172
-
173
- test 'The title is a optional multiple value' do
174
- assert @vcard.has_property?(:title)
175
- assert_equal 'Owner', @vcard.title[1]
176
- end
177
-
178
- test 'The url is a optional multiple value' do
179
- assert @vcard.has_property?(:url)
180
- assert_equal "http://www.webfeetmedia.com/", @vcard.url[1]
181
- end
182
- end
183
-
184
- # http://ufxtract.com/testsuite/hcard/hcard3.htm
185
- describe 'adr single and multiple occurence test' do
186
- def self.before_all
187
- @doc ||= test_fixture('hcard/hcard3.html')
188
- @vcard ||= @@klass.parse_first(@doc)
189
- end
190
-
191
- setup do
192
- @vcard = self.class.before_all
193
- end
194
-
195
- test 'The type is a optional multiple value.' do
196
- assert @vcard.adr.type.eql?(:work)
197
- end
198
-
199
- test 'The post-office-box is a optional singular value' do
200
- assert_equal 'PO Box 46', @vcard.adr.post_office_box
201
- end
202
-
203
- test 'The street-address is a optional multiple value' do
204
- assert_equal 'West Street', @vcard.adr.street_address[1]
205
- end
206
-
207
- test 'The extended-address is a optional singular value' do
208
- assert_equal 'Suite 2', @vcard.adr.extended_address
209
- end
210
-
211
- test 'The region is a optional singular value' do
212
- assert_equal 'East Sussex', @vcard.adr.region
213
- end
214
-
215
- test 'The locality is a optional singular value' do
216
- assert_equal 'Brighton', @vcard.adr.locality
217
- end
218
-
219
- test 'The postal-code is a optional singular value' do
220
- assert_equal 'BN1 3DF', @vcard.adr.postal_code
221
- end
222
-
223
- test 'The country-name is a optional singular value' do
224
- assert_equal 'United Kingdom', @vcard.adr.country_name
225
- end
226
- end
227
-
228
- # http://ufxtract.com/testsuite/hcard/hcard4.htm
229
- describe 'n single and multiple occurence test' do
230
- def self.before_all
231
- @doc ||= test_fixture('hcard/hcard4.html')
232
- @vcard ||= @@klass.parse_first(@doc)
233
- end
234
-
235
- setup do
236
- @vcard = self.class.before_all
237
- end
238
-
239
- test 'The honorific-prefix is a optional multiple value' do
240
- assert_equal 'Dr', @vcard.n[:honorific_prefix]
241
- end
242
-
243
- test 'The given-name is a optional multiple value' do
244
- assert_equal 'John', @vcard.n[:given_name]
245
- end
246
-
247
- test 'The additional-name is a optional multiple value' do
248
- assert_equal 'Peter', @vcard.n[:additional_name]
249
- end
250
-
251
- test 'The family-name is a optional multiple value' do
252
- assert_equal 'Doe', @vcard.n[:family_name]
253
- end
254
-
255
- test 'The honorific-suffix is a optional multiple value' do
256
- assert_equal 'PHD', @vcard.n[:honorific_suffix][1]
257
- end
258
- end
259
-
260
- # http://ufxtract.com/testsuite/hcard/hcard6.htm
261
- describe 'extracting email addresses text' do
262
- def self.before_all
263
- @doc ||= test_fixture('hcard/hcard6.html')
264
- @vcard ||= @@klass.parse(@doc)
265
- end
266
-
267
- setup do
268
- @vcard = self.class.before_all
269
- end
270
-
271
- should 'collect the email address from href attribute' do
272
- assert_equal 'john@example.com', @vcard[0].email
273
- end
274
-
275
- test 'Where a type is specified, but the value is not then the node text is the value' do
276
- assert @vcard[1].email.has_key?(:internet)
277
- assert_equal 'john@example.com', @vcard[1].email.values.first
278
- end
279
-
280
- should 'collect the email address from the node text' do
281
- assert_equal 'john@example.com', @vcard[2].email
282
- end
283
-
284
- should 'find the type value. types are case insensitive' do
285
- assert_equal :internet, @vcard[3].email[1][:type]
286
- end
287
-
288
- should 'not contain querystring "?subject=parser-test"' do
289
- assert_equal 'john@example.com', @vcard[5].email
290
- end
291
-
292
- test 'Where a type is specified, but the value is not then the node text is the value' do
293
- assert_equal 'john@example.com', @vcard[6].email[:value]
294
- end
295
- end
296
-
297
- # http://ufxtract.com/testsuite/hcard/hcard7.htm
298
- describe 'extracting tel number test' do
299
- def self.before_all
300
- @doc ||= test_fixture('hcard/hcard7.html')
301
- @vcard ||= @@klass.parse(@doc)
302
- end
303
-
304
- setup do
305
- @vcard = self.class.before_all
306
- end
307
-
308
- should 'collect the telephone number from the node text' do
309
- assert_equal '01273 700100', @vcard[0].tel
310
- end
311
-
312
- should 'collect the telephone number from a descendant node with value property' do
313
- assert_equal "01273 700100", @vcard[1].tel[:value]
314
- end
315
-
316
- should 'find the type value' do
317
- assert @vcard[2].tel.first[:type].include?(:pcs)
318
- end
319
-
320
- test 'Where a type is specified, but the value is not then the node text is the value' do
321
- assert_equal '01273 700301', @vcard[4].tel[:value]
322
- end
323
- end
324
-
325
- # http://ufxtract.com/testsuite/hcard/hcard8.htm
326
- describe 'extracting URLs test' do
327
- def self.before_all
328
- @doc ||= test_fixture('hcard/hcard8.html')
329
- @vcard ||= @@klass.parse(@doc)
330
- end
331
-
332
- setup do
333
- @vcard = self.class.before_all
334
- end
335
-
336
- should 'collect the URL from the a element' do
337
- assert_equal 'http://example.com/johndoe/', @vcard.first.url
338
- end
339
-
340
- should 'collect the URL from the area element' do
341
- assert_equal 'http://example.com/johndoe/', @vcard[1].url
342
- end
343
-
344
- should 'collect the URL of the image element' do
345
- assert_equal 'http://ufxtract.com/testsuite/images/photo.gif', @vcard[2].photo
346
- end
347
- end
348
-
349
- # http://ufxtract.com/testsuite/hcard/hcard5.htm
350
- describe 'multiple values in class attribute test' do
351
- def self.before_all
352
- @doc ||= test_fixture('hcard/hcard5.html')
353
- @vcard ||= @@klass.parse(@doc)
354
- end
355
-
356
- setup do
357
- @vcard = self.class.before_all
358
- end
359
-
360
- should 'find given-name value even if class attribute has multiple values' do
361
- assert_equal 'John', @vcard.n[:given_name]
362
- end
363
-
364
- should 'find category value even if class and rel attribute have multiple values' do
365
- assert_equal 'development', @vcard.category[1]
366
- end
367
-
368
- should 'find rev value even if class attribute has multiple values' do
369
- assert @vcard.has_property?(:rev)
370
- assert_equal 2008, @vcard.rev.year
371
- assert_equal 1, @vcard.rev.mon
372
- assert_equal 1, @vcard.rev.day
373
- end
374
- end
375
-
376
- # http://ufxtract.com/testsuite/hcard/hcard11.htm
377
- describe 'img element test' do
378
- def self.before_all
379
- @doc ||= test_fixture('hcard/hcard11.html')
380
- @vcard ||= @@klass.parse(@doc)
381
- end
382
-
383
- setup do
384
- @vcard = self.class.before_all
385
- end
386
-
387
- test 'The fn value should be taken from the alt attribute on a img element' do
388
- assert_equal 'John Doe', @vcard[0].fn
389
- end
390
-
391
- test 'The given-name value should implied from the alt attribute' do
392
- assert_equal 'John', @vcard[1].n[:given_name]
393
- end
394
-
395
- test 'The family-name value should implied from the alt attribute' do
396
- assert_equal 'Doe', @vcard[2].n[:family_name]
397
- end
398
- end
399
-
400
- # http://ufxtract.com/testsuite/hcard/hcard12.htm
401
- describe 'abbr element test' do
402
- def self.before_all
403
- @doc ||= test_fixture('hcard/hcard12.html')
404
- @vcard ||= @@klass.parse(@doc)
405
- end
406
-
407
- setup do
408
- @vcard = self.class.before_all
409
- end
410
-
411
- should 'take the value from the abbr title attribute' do
412
- assert_equal 'John Doe', @vcard.fn
413
- assert_equal 'Mister', @vcard.n[:honorific_prefix]
414
- assert_equal 'Jonathan', @vcard.n[:given_name]
415
- assert_equal 'John', @vcard.n[:additional_name]
416
- assert_equal 'JJ', @vcard.nickname
417
- assert_equal '123 Fake Street', @vcard.adr[:street_address]
418
- assert @vcard.adr[:type].eql?(:work)
419
- assert_equal "415.555.1234", @vcard.tel
420
- end
421
- end
422
-
423
- # http://ufxtract.com/testsuite/hcard/hcard9.htm
424
- describe 'extracting geo singular and paired values test' do
425
- def self.before_all
426
- @doc ||= test_fixture('hcard/hcard9.html')
427
- @vcard ||= @@klass.parse(@doc)
428
- end
429
-
430
- setup do
431
- @vcard = self.class.before_all
432
- end
433
-
434
- should 'find latitude value from single element' do
435
- assert_equal '37.77', @vcard[0].geo[:latitude]
436
- end
437
-
438
- should 'extract latitude value from paired value' do
439
- assert_equal '37.77', @vcard[1].geo[:latitude]
440
- end
441
- end
442
-
443
- # http://ufxtract.com/testsuite/hcard/hcard99.htm
444
- describe 'implied n optimization test' do
445
- def self.before_all
446
- @doc ||= test_fixture('hcard/hcard99.html')
447
- @vcard ||= @@klass.parse(@doc)
448
- end
449
-
450
- setup do
451
- @vcard = self.class.before_all
452
- end
453
-
454
- test 'The given-name value is implied from the fn value' do
455
- assert_equal 'Ryan', @vcard[0].n[:given_name]
456
- assert_equal 'Ryan', @vcard[1].n[:given_name]
457
- assert_equal 'Ryan', @vcard[2].n[:given_name]
458
- assert_equal 'Brian', @vcard[3].n[:given_name]
459
- assert_equal 'Ryan', @vcard[4].n[:given_name]
460
- assert_equal 'R', @vcard[5].n[:given_name]
461
- assert_equal 'King', @vcard[6].n[:given_name]
462
- end
463
-
464
- test 'The family-name value is implied from the fn value' do
465
- assert_equal 'King', @vcard[0].n[:family_name]
466
- assert_equal 'King', @vcard[1].n[:family_name]
467
- assert_equal 'King', @vcard[2].n[:family_name]
468
- assert_equal 'Suda', @vcard[3].n[:family_name]
469
- assert_equal 'King', @vcard[4].n[:family_name]
470
- assert_equal 'King', @vcard[5].n[:family_name]
471
- assert_equal 'R', @vcard[6].n[:family_name]
472
- end
473
-
474
- test 'The given name property should be missing' do
475
- assert !@vcard[7].has_property?(:n)
476
- assert !@vcard[8].has_property?(:n)
477
- end
478
-
479
- test 'The family name property should be missing' do
480
- assert !@vcard[7].has_property?(:n)
481
- assert !@vcard[8].has_property?(:n)
482
- end
483
- end
484
-
485
- # http://ufxtract.com/testsuite/hcard/hcard17.htm
486
- describe 'implied organization-name optimization test' do
487
- def self.before_all
488
- @doc ||= test_fixture('hcard/hcard17.html')
489
- @vcard ||= @@klass.parse(@doc)
490
- end
491
-
492
- setup do
493
- @vcard = self.class.before_all
494
- end
495
-
496
- test 'The organization-name value is implied from the org value' do
497
- assert_equal 'World Wide Web Consortium', @vcard[0].org[:organization_name]
498
- assert_equal 'World Wide Web Consortium', @vcard[1].org[:organization_name]
499
- assert_equal 'World Wide Web Consortium', @vcard[2].org[:organization_name]
500
- assert_equal 'World Wide Web Consortium', @vcard[3].org[:organization_name]
501
- assert_equal 'World Wide Web Consortium', @vcard[4].org[:organization_name]
502
- end
503
-
504
- test 'The organization name value' do
505
- assert_equal 'World Wide Web Consortium', @vcard[5].org[:organization_name]
506
- assert_equal 'World Wide Web Consortium', @vcard[6].org[:organization_name]
507
- end
508
- end
509
-
510
- end