mirror of
https://github.com/Shopify/liquid.git
synced 2026-09-17 01:40:42 -07:00
Add a StringSlice class to use in the nodelist.
This commit is contained in:
@@ -12,34 +12,34 @@ class BlockTest < Test::Unit::TestCase
|
||||
template = Liquid::Template.parse("{{funk}} ")
|
||||
assert_equal 2, template.root.nodelist.size
|
||||
assert_equal Variable, template.root.nodelist[0].class
|
||||
assert_equal String, template.root.nodelist[1].class
|
||||
assert_equal StringSlice, template.root.nodelist[1].class
|
||||
end
|
||||
|
||||
def test_variable_end
|
||||
template = Liquid::Template.parse(" {{funk}}")
|
||||
assert_equal 2, template.root.nodelist.size
|
||||
assert_equal String, template.root.nodelist[0].class
|
||||
assert_equal StringSlice, template.root.nodelist[0].class
|
||||
assert_equal Variable, template.root.nodelist[1].class
|
||||
end
|
||||
|
||||
def test_variable_middle
|
||||
template = Liquid::Template.parse(" {{funk}} ")
|
||||
assert_equal 3, template.root.nodelist.size
|
||||
assert_equal String, template.root.nodelist[0].class
|
||||
assert_equal StringSlice, template.root.nodelist[0].class
|
||||
assert_equal Variable, template.root.nodelist[1].class
|
||||
assert_equal String, template.root.nodelist[2].class
|
||||
assert_equal StringSlice, template.root.nodelist[2].class
|
||||
end
|
||||
|
||||
def test_variable_many_embedded_fragments
|
||||
template = Liquid::Template.parse(" {{funk}} {{so}} {{brother}} ")
|
||||
assert_equal 7, template.root.nodelist.size
|
||||
assert_equal [String, Variable, String, Variable, String, Variable, String],
|
||||
assert_equal [StringSlice, Variable, StringSlice, Variable, StringSlice, Variable, StringSlice],
|
||||
block_types(template.root.nodelist)
|
||||
end
|
||||
|
||||
def test_with_block
|
||||
template = Liquid::Template.parse(" {% comment %} {% endcomment %} ")
|
||||
assert_equal [String, Comment, String], block_types(template.root.nodelist)
|
||||
assert_equal [StringSlice, Comment, StringSlice], block_types(template.root.nodelist)
|
||||
assert_equal 3, template.root.nodelist.size
|
||||
end
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ class ParsingQuirksTest < Test::Unit::TestCase
|
||||
template = Template.parse(text)
|
||||
|
||||
assert_equal text, template.render
|
||||
assert_equal [String], template.root.nodelist.collect {|i| i.class}
|
||||
assert_equal [StringSlice], template.root.nodelist.collect {|i| i.class}
|
||||
end
|
||||
|
||||
def test_raise_on_single_close_bracet
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
require 'test_helper'
|
||||
|
||||
class StringSliceTest < Test::Unit::TestCase
|
||||
def test_new_from_string
|
||||
assert_equal 'slice', Liquid::StringSlice.new("slice and dice", 0, 5).to_str
|
||||
assert_equal 'and', Liquid::StringSlice.new("slice and dice", 6, 3).to_str
|
||||
assert_equal 'dice', Liquid::StringSlice.new("slice and dice", 10, 4).to_str
|
||||
assert_equal 'slice and dice', Liquid::StringSlice.new("slice and dice", 0, 14).to_str
|
||||
end
|
||||
|
||||
def test_new_from_slice
|
||||
slice1 = Liquid::StringSlice.new("slice and dice", 0, 14)
|
||||
slice2 = Liquid::StringSlice.new(slice1, 6, 8)
|
||||
slice3 = Liquid::StringSlice.new(slice2, 0, 3)
|
||||
assert_equal "slice and dice", slice1.to_str
|
||||
assert_equal "and dice", slice2.to_str
|
||||
assert_equal "and", slice3.to_str
|
||||
end
|
||||
|
||||
def test_slice
|
||||
slice = Liquid::StringSlice.new("slice and dice", 2, 10)
|
||||
assert_equal "and", slice.slice(4, 3).to_str
|
||||
end
|
||||
|
||||
def test_length
|
||||
slice = Liquid::StringSlice.new("slice and dice", 6, 3)
|
||||
assert_equal 3, slice.length
|
||||
assert_equal 3, slice.size
|
||||
end
|
||||
|
||||
def test_equal
|
||||
assert_equal 'and', Liquid::StringSlice.new("slice and dice", 6, 3)
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user