105 lines
3.6 KiB
Ruby
Executable file
105 lines
3.6 KiB
Ruby
Executable file
#!/bin/env ruby
|
|
|
|
require File.dirname(__FILE__) + '/../test_helper'
|
|
require 'chunks/uri'
|
|
require 'chunks/match'
|
|
|
|
class URITest < Test::Unit::TestCase
|
|
include ChunkMatch
|
|
|
|
def test_non_matches
|
|
assert_no_match(URIChunk.pattern, 'There is no URI here')
|
|
assert_no_match(URIChunk.pattern, 'One gemstone is the garnet:reddish in colour, like ruby')
|
|
end
|
|
|
|
def test_simple_uri
|
|
match(URIChunk, 'http://www.example.com',
|
|
:scheme =>'http', :host =>'www.example.com', :path => nil,
|
|
:link_text => 'http://www.example.com'
|
|
)
|
|
match(URIChunk, 'http://www.example.com/',
|
|
:scheme =>'http', :host =>'www.example.com', :path => '/',
|
|
:link_text => 'http://www.example.com/'
|
|
)
|
|
match(URIChunk, 'www.example.com',
|
|
:scheme =>'http', :host =>'www.example.com', :link_text => 'www.example.com'
|
|
)
|
|
match(URIChunk, 'example.com',
|
|
:scheme =>'http',:host =>'example.com', :link_text => 'example.com'
|
|
)
|
|
match(URIChunk, 'http://example.com.au/',
|
|
:scheme =>'http', :host =>'example.com.au', :link_text => 'http://example.com.au/'
|
|
)
|
|
match(URIChunk, 'example.com.au',
|
|
:scheme =>'http', :host =>'example.com.au', :link_text => 'example.com.au'
|
|
)
|
|
match(URIChunk, 'http://www.example.co.uk/',
|
|
:scheme =>'http', :host =>'www.example.co.uk',
|
|
:link_text => 'http://www.example.co.uk/'
|
|
)
|
|
match(URIChunk, 'example.co.uk',
|
|
:scheme =>'http', :host =>'example.co.uk', :link_text => 'example.co.uk'
|
|
)
|
|
match(URIChunk, 'http://moinmoin.wikiwikiweb.de/HelpOnNavigation',
|
|
:scheme => 'http', :host => 'moinmoin.wikiwikiweb.de', :path => '/HelpOnNavigation',
|
|
:link_text => 'http://moinmoin.wikiwikiweb.de/HelpOnNavigation'
|
|
)
|
|
match(URIChunk, 'moinmoin.wikiwikiweb.de/HelpOnNavigation',
|
|
:scheme => 'http', :host => 'moinmoin.wikiwikiweb.de', :path => '/HelpOnNavigation',
|
|
:link_text => 'moinmoin.wikiwikiweb.de/HelpOnNavigation'
|
|
)
|
|
end
|
|
|
|
def test_email_uri
|
|
match(URIChunk, 'mail@example.com',
|
|
:user => 'mail', :host => 'example.com', :link_text => 'mail@example.com'
|
|
)
|
|
end
|
|
|
|
def test_non_email
|
|
# The @ is part of the normal text, but 'example.com' is marked up.
|
|
match(URIChunk, 'Not an email: @example.com', :user => nil, :uri => 'http://example.com')
|
|
end
|
|
|
|
def test_non_uri
|
|
assert_no_match(URIChunk.pattern, 'httpd.conf')
|
|
assert_no_match(URIChunk.pattern, 'libproxy.so')
|
|
end
|
|
|
|
def test_uri_in_text
|
|
match(URIChunk, 'Go to: http://www.example.com/', :host => 'www.example.com', :path =>'/')
|
|
match(URIChunk, 'http://www.example.com/ is a link.', :host => 'www.example.com')
|
|
match(URIChunk,
|
|
'Email david@loudthinking.com',
|
|
:scheme =>'mailto', :user =>'david', :host =>'loudthinking.com'
|
|
)
|
|
end
|
|
|
|
def test_uri_in_parentheses
|
|
match(URIChunk, 'URI (http://brackets.com.de) in brackets', :host => 'brackets.com.de')
|
|
match(URIChunk, 'because (as shown at research.net) the results', :host => 'research.net')
|
|
match(URIChunk,
|
|
'A wiki (http://wiki.org/wiki.cgi?WhatIsWiki) page',
|
|
:scheme => 'http', :host => 'wiki.org', :path => '/wiki.cgi', :query => 'WhatIsWiki'
|
|
)
|
|
end
|
|
|
|
def test_uri_list_item
|
|
match(
|
|
URIChunk,
|
|
'* http://www.btinternet.com/~mail2minh/SonyEricssonP80xPlatform.sis',
|
|
:path => '/~mail2minh/SonyEricssonP80xPlatform.sis'
|
|
)
|
|
end
|
|
|
|
def test_uri_with_port
|
|
match(
|
|
URIChunk,
|
|
"This text contains a URL http://someplace.org:8080/~person/stuff.cgi?arg=val, doesn't it?",
|
|
:scheme => 'http', :host => 'someplace.org', :port => '8080', :path => '/~person/stuff.cgi',
|
|
:query => 'arg=val'
|
|
)
|
|
end
|
|
|
|
end
|