2010-03-11 22:55:31 +03:00
# Redmine - project management software
# Copyright (C) 2006-2010 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
2010-12-13 02:24:34 +03:00
require File . expand_path ( '../../../../../test_helper' , __FILE__ )
2010-03-11 22:55:31 +03:00
class Redmine :: WikiFormatting :: TextileFormatterTest < HelperTestCase
def setup
@formatter = Redmine :: WikiFormatting :: Textile :: Formatter
end
MODIFIERS = {
" * " = > 'strong' , # bold
" _ " = > 'em' , # italic
" + " = > 'ins' , # underline
" - " = > 'del' , # deleted
" ^ " = > 'sup' , # superscript
" ~ " = > 'sub' # subscript
}
2010-03-12 16:43:11 +03:00
def test_modifiers
2010-03-12 18:17:53 +03:00
assert_html_output (
2010-03-12 16:43:11 +03:00
'*bold*' = > '<strong>bold</strong>' ,
'before *bold*' = > 'before <strong>bold</strong>' ,
'*bold* after' = > '<strong>bold</strong> after' ,
'*two words*' = > '<strong>two words</strong>' ,
'*two*words*' = > '<strong>two*words</strong>' ,
'*two * words*' = > '<strong>two * words</strong>' ,
'*two* *words*' = > '<strong>two</strong> <strong>words</strong>' ,
'*(two)* *(words)*' = > '<strong>(two)</strong> <strong>(words)</strong>' ,
# with class
2010-03-12 18:17:53 +03:00
'*(foo)two words*' = > '<strong class="foo">two words</strong>'
)
2010-03-12 16:43:11 +03:00
end
2010-03-11 22:55:31 +03:00
def test_modifiers_combination
MODIFIERS . each do | m1 , tag1 |
MODIFIERS . each do | m2 , tag2 |
next if m1 == m2
text = " #{ m2 } #{ m1 } Phrase modifiers #{ m1 } #{ m2 } "
2010-03-12 18:19:49 +03:00
html = " < #{ tag2 } >< #{ tag1 } >Phrase modifiers</ #{ tag1 } ></ #{ tag2 } > "
2010-03-12 18:17:53 +03:00
assert_html_output text = > html
2010-03-11 22:55:31 +03:00
end
end
end
2010-03-12 18:12:23 +03:00
def test_inline_code
2010-03-12 18:17:53 +03:00
assert_html_output (
2010-03-12 18:12:23 +03:00
'this is @some code@' = > 'this is <code>some code</code>' ,
2010-03-12 18:17:53 +03:00
'@<Location /redmine>@' = > '<code><Location /redmine></code>'
)
2010-03-12 18:12:23 +03:00
end
2011-03-12 21:28:30 +03:00
2010-03-12 18:12:23 +03:00
def test_escaping
2010-03-12 18:17:53 +03:00
assert_html_output (
'this is a <script>' = > 'this is a <script>'
)
end
2011-03-12 21:28:30 +03:00
def test_use_of_backslashes_followed_by_numbers_in_headers
assert_html_output ( {
'h1. 2009\02\09' = > '<h1>2009\02\09</h1>'
} , false )
end
2010-03-12 18:17:53 +03:00
2010-03-20 15:54:23 +03:00
def test_double_dashes_should_not_strikethrough
assert_html_output (
'double -- dashes -- test' = > 'double -- dashes -- test' ,
'double -- *dashes* -- test' = > 'double -- <strong>dashes</strong> -- test'
)
end
2010-11-06 16:29:23 +03:00
def test_acronyms
assert_html_output (
'this is an acronym: GPL(General Public License)' = > 'this is an acronym: <acronym title="General Public License">GPL</acronym>' ,
'2 letters JP(Jean-Philippe) acronym' = > '2 letters <acronym title="Jean-Philippe">JP</acronym> acronym' ,
'GPL(This is a double-quoted "title")' = > '<acronym title="This is a double-quoted "title"">GPL</acronym>'
)
end
2010-03-12 18:17:53 +03:00
private
2011-03-12 21:28:30 +03:00
def assert_html_output ( to_test , expect_paragraph = true )
2010-03-12 18:12:23 +03:00
to_test . each do | text , expected |
2011-03-12 21:28:30 +03:00
assert_equal ( ( expect_paragraph ? " <p> #{ expected } </p> " : expected ) , @formatter . new ( text ) . to_html , " Formatting the following text failed: \n === \n #{ text } \n === \n " )
2010-03-12 18:12:23 +03:00
end
end
2010-03-11 22:55:31 +03:00
end