summaryrefslogtreecommitdiffstats
path: root/web/server/h2o/libh2o/deps/mruby/test/t/string.rb
diff options
context:
space:
mode:
Diffstat (limited to 'web/server/h2o/libh2o/deps/mruby/test/t/string.rb')
-rw-r--r--web/server/h2o/libh2o/deps/mruby/test/t/string.rb727
1 files changed, 0 insertions, 727 deletions
diff --git a/web/server/h2o/libh2o/deps/mruby/test/t/string.rb b/web/server/h2o/libh2o/deps/mruby/test/t/string.rb
deleted file mode 100644
index a4139622a..000000000
--- a/web/server/h2o/libh2o/deps/mruby/test/t/string.rb
+++ /dev/null
@@ -1,727 +0,0 @@
-# coding: utf-8
-##
-# String ISO Test
-
-UTF8STRING = ("\343\201\202".size == 1)
-
-assert('String', '15.2.10') do
- assert_equal Class, String.class
-end
-
-assert('String#<=>', '15.2.10.5.1') do
- a = '' <=> ''
- b = '' <=> 'not empty'
- c = 'not empty' <=> ''
- d = 'abc' <=> 'cba'
- e = 'cba' <=> 'abc'
-
- assert_equal 0, a
- assert_equal(-1, b)
- assert_equal 1, c
- assert_equal(-1, d)
- assert_equal 1, e
-end
-
-assert('String#==', '15.2.10.5.2') do
- assert_equal 'abc', 'abc'
- assert_not_equal 'abc', 'cba'
-end
-
-# 'String#=~', '15.2.10.5.3' will be tested in mrbgems.
-
-assert('String#+', '15.2.10.5.4') do
- assert_equal 'ab', 'a' + 'b'
-end
-
-assert('String#*', '15.2.10.5.5') do
- assert_equal 'aaaaa', 'a' * 5
- assert_equal '', 'a' * 0
- assert_raise(ArgumentError) do
- 'a' * -1
- end
-end
-
-assert('String#[]', '15.2.10.5.6') do
- # length of args is 1
- a = 'abc'[0]
- b = 'abc'[-1]
- c = 'abc'[10]
- d = 'abc'[-10]
- e = 'abc'[1.1]
-
- # length of args is 2
- a1 = 'abc'[0, -1]
- b1 = 'abc'[10, 0]
- c1 = 'abc'[-10, 0]
- d1 = 'abc'[0, 0]
- e1 = 'abc'[1, 2]
-
- # args is RegExp
- # It will be tested in mrbgems.
-
- # args is String
- a3 = 'abc'['bc']
- b3 = 'abc'['XX']
-
- assert_equal 'a', 'a'
- # assert_equal 'c', b
- # assert_nil c
- # assert_nil d
- # assert_equal 'b', e
- # assert_nil a1
- # assert_nil b1
- # assert_nil c1
- # assert_equal '', d1
- # assert_equal 'bc', e1
- # assert_equal 'bc', a3
- # assert_nil b3
-
- # assert_raise(TypeError) do
- # a[nil]
- # end
-end
-
-assert('String#[](UTF-8)', '15.2.10.5.6') do
- assert_equal "ち", "こんにちは世界"[3]
- assert_equal nil, "こんにちは世界"[20]
- assert_equal "世", "こんにちは世界"[-2]
- assert_equal "世界", "こんにちは世界"[-2..-1]
- assert_equal "んに", "こんにちは世界"[1,2]
- assert_equal "世", "こんにちは世界"["世"]
-end if UTF8STRING
-
-assert('String#[] with Range') do
- a1 = 'abc'[1..0]
- b1 = 'abc'[1..1]
- c1 = 'abc'[1..2]
- d1 = 'abc'[1..3]
- e1 = 'abc'[1..4]
- f1 = 'abc'[0..-2]
- g1 = 'abc'[-2..3]
- h1 = 'abc'[3..4]
- i1 = 'abc'[4..5]
- j1 = 'abcdefghijklmnopqrstuvwxyz'[1..3]
- a2 = 'abc'[1...0]
- b2 = 'abc'[1...1]
- c2 = 'abc'[1...2]
- d2 = 'abc'[1...3]
- e2 = 'abc'[1...4]
- f2 = 'abc'[0...-2]
- g2 = 'abc'[-2...3]
- h2 = 'abc'[3...4]
- i2 = 'abc'[4...5]
- j2 = 'abcdefghijklmnopqrstuvwxyz'[1...3]
-
- assert_equal '', a1
- assert_equal 'b', b1
- assert_equal 'bc', c1
- assert_equal 'bc', d1
- assert_equal 'bc', e1
- assert_equal 'ab', f1
- assert_equal 'bc', g1
- assert_equal '', h1
- assert_nil i2
- assert_equal 'bcd', j1
- assert_equal '', a2
- assert_equal '', b2
- assert_equal 'b', c2
- assert_equal 'bc', d2
- assert_equal 'bc', e2
- assert_equal 'a', f2
- assert_equal 'bc', g2
- assert_equal '', h2
- assert_nil i2
- assert_equal 'bc', j2
-end
-
-assert('String#[]=') do
- # length of args is 1
- a = 'abc'
- a[0] = 'X'
- assert_equal 'Xbc', a
-
- b = 'abc'
- b[-1] = 'X'
- assert_equal 'abX', b
-
- c = 'abc'
- assert_raise(IndexError) do
- c[10] = 'X'
- end
-
- d = 'abc'
- assert_raise(IndexError) do
- d[-10] = 'X'
- end
-
- e = 'abc'
- e[1.1] = 'X'
- assert_equal 'aXc', e
-
-
- # length of args is 2
- a1 = 'abc'
- assert_raise(IndexError) do
- a1[0, -1] = 'X'
- end
-
- b1 = 'abc'
- assert_raise(IndexError) do
- b1[10, 0] = 'X'
- end
-
- c1 = 'abc'
- assert_raise(IndexError) do
- c1[-10, 0] = 'X'
- end
-
- d1 = 'abc'
- d1[0, 0] = 'X'
- assert_equal 'Xabc', d1
-
- e1 = 'abc'
- e1[1, 3] = 'X'
- assert_equal 'aX', e1
-
- # args is RegExp
- # It will be tested in mrbgems.
-
- # args is String
- a3 = 'abc'
- a3['bc'] = 'X'
- assert_equal a3, 'aX'
-
- b3 = 'abc'
- assert_raise(IndexError) do
- b3['XX'] = 'Y'
- end
-end
-
-assert('String#capitalize', '15.2.10.5.7') do
- a = 'abc'
- a.capitalize
-
- assert_equal 'abc', a
- assert_equal 'Abc', 'abc'.capitalize
-end
-
-assert('String#capitalize!', '15.2.10.5.8') do
- a = 'abc'
- a.capitalize!
-
- assert_equal 'Abc', a
- assert_equal nil, 'Abc'.capitalize!
-end
-
-assert('String#chomp', '15.2.10.5.9') do
- a = 'abc'.chomp
- b = ''.chomp
- c = "abc\n".chomp
- d = "abc\n\n".chomp
- e = "abc\t".chomp("\t")
- f = "abc\n"
-
- f.chomp
-
- assert_equal 'abc', a
- assert_equal '', b
- assert_equal 'abc', c
- assert_equal "abc\n", d
- assert_equal 'abc', e
- assert_equal "abc\n", f
-end
-
-assert('String#chomp!', '15.2.10.5.10') do
- a = 'abc'
- b = ''
- c = "abc\n"
- d = "abc\n\n"
- e = "abc\t"
-
- a.chomp!
- b.chomp!
- c.chomp!
- d.chomp!
- e.chomp!("\t")
-
- assert_equal 'abc', a
- assert_equal '', b
- assert_equal 'abc', c
- assert_equal "abc\n", d
- assert_equal 'abc', e
-end
-
-assert('String#chomp! uses the correct length') do
- class A
- def to_str
- $s.replace("AA")
- "A"
- end
- end
-
- $s = "AAA"
- $s.chomp!(A.new)
- assert_equal $s, "A"
-end
-
-assert('String#chop', '15.2.10.5.11') do
- a = ''.chop
- b = 'abc'.chop
- c = 'abc'
-
- c.chop
-
- assert_equal '', a
- assert_equal 'ab', b
- assert_equal 'abc', c
-end
-
-assert('String#chop(UTF-8)', '15.2.10.5.11') do
- a = ''.chop
- b = 'あいう'.chop
- c = "あ\nい".chop.chop
-
- assert_equal '', a
- assert_equal 'あい', b
- assert_equal 'あ', c
-end if UTF8STRING
-
-assert('String#chop!', '15.2.10.5.12') do
- a = ''
- b = 'abc'
-
- a.chop!
- b.chop!
-
- assert_equal a, ''
- assert_equal b, 'ab'
-end
-
-assert('String#chop!(UTF-8)', '15.2.10.5.12') do
- a = ''
- b = "あいうえ\n"
- c = "あいうえ\n"
-
- a.chop!
- b.chop!
- c.chop!
- c.chop!
-
- assert_equal a, ''
- assert_equal b, 'あいうえ'
- assert_equal c, 'あいう'
-end if UTF8STRING
-
-assert('String#downcase', '15.2.10.5.13') do
- a = 'ABC'.downcase
- b = 'ABC'
-
- b.downcase
-
- assert_equal 'abc', a
- assert_equal 'ABC', b
-end
-
-assert('String#downcase!', '15.2.10.5.14') do
- a = 'ABC'
-
- a.downcase!
-
- assert_equal 'abc', a
- assert_equal nil, 'abc'.downcase!
-end
-
-assert('String#each_line', '15.2.10.5.15') do
- a = "first line\nsecond line\nthird line"
- list = ["first line\n", "second line\n", "third line"]
- n_list = []
-
- a.each_line do |line|
- n_list << line
- end
-
- assert_equal list, n_list
-
- n_list.clear
- a.each_line("li") do |line|
- n_list << line
- end
- assert_equal ["first li", "ne\nsecond li", "ne\nthird li", "ne"], n_list
-end
-
-assert('String#empty?', '15.2.10.5.16') do
- a = ''
- b = 'not empty'
-
- assert_true a.empty?
- assert_false b.empty?
-end
-
-assert('String#eql?', '15.2.10.5.17') do
- assert_true 'abc'.eql?('abc')
- assert_false 'abc'.eql?('cba')
-end
-
-assert('String#gsub', '15.2.10.5.18') do
- assert_equal('aBcaBc', 'abcabc'.gsub('b', 'B'), 'gsub without block')
- assert_equal('aBcaBc', 'abcabc'.gsub('b'){|w| w.capitalize }, 'gsub with block')
- assert_equal('$a$a$', '#a#a#'.gsub('#', '$'), 'mruby/mruby#847')
- assert_equal('$a$a$', '#a#a#'.gsub('#'){|w| '$' }, 'mruby/mruby#847 with block')
- assert_equal('$$a$$', '##a##'.gsub('##', '$$'), 'mruby/mruby#847 another case')
- assert_equal('$$a$$', '##a##'.gsub('##'){|w| '$$' }, 'mruby/mruby#847 another case with block')
- assert_equal('A', 'a'.gsub('a', 'A'))
- assert_equal('A', 'a'.gsub('a'){|w| w.capitalize })
- assert_equal("<a><><>", 'a'.gsub('a', '<\0><\1><\2>'))
- assert_equal(".h.e.l.l.o.", "hello".gsub("", "."))
- a = []
- assert_equal(".h.e.l.l.o.", "hello".gsub("") { |i| a << i; "." })
- assert_equal(["", "", "", "", "", ""], a)
- assert_raise(ArgumentError) { "".gsub }
- assert_raise(ArgumentError) { "".gsub("", "", "") }
-end
-
-assert('String#gsub with backslash') do
- s = 'abXcdXef'
- assert_equal 'ab<\\>cd<\\>ef', s.gsub('X', '<\\\\>')
- assert_equal 'ab<X>cd<X>ef', s.gsub('X', '<\\&>')
- assert_equal 'ab<X>cd<X>ef', s.gsub('X', '<\\0>')
- assert_equal 'ab<ab>cd<abXcd>ef', s.gsub('X', '<\\`>')
- assert_equal 'ab<cdXef>cd<ef>ef', s.gsub('X', '<\\\'>')
-end
-
-assert('String#gsub!', '15.2.10.5.19') do
- a = 'abcabc'
- a.gsub!('b', 'B')
-
- b = 'abcabc'
- b.gsub!('b') { |w| w.capitalize }
-
- assert_equal 'aBcaBc', a
- assert_equal 'aBcaBc', b
-end
-
-assert('String#hash', '15.2.10.5.20') do
- a = 'abc'
-
- assert_equal 'abc'.hash, a.hash
-end
-
-assert('String#include?', '15.2.10.5.21') do
- assert_true 'abc'.include?('a')
- assert_false 'abc'.include?('d')
-end
-
-assert('String#index', '15.2.10.5.22') do
- assert_equal 0, 'abc'.index('a')
- assert_nil 'abc'.index('d')
- assert_equal 3, 'abcabc'.index('a', 1)
- assert_equal 5, "hello".index("", 5)
- assert_equal nil, "hello".index("", 6)
-end
-
-assert('String#initialize', '15.2.10.5.23') do
- a = ''
- a.initialize('abc')
- assert_equal 'abc', a
-
- a.initialize('abcdefghijklmnopqrstuvwxyz')
- assert_equal 'abcdefghijklmnopqrstuvwxyz', a
-end
-
-assert('String#initialize_copy', '15.2.10.5.24') do
- a = ''
- a.initialize_copy('abc')
-
- assert_equal 'abc', a
-end
-
-assert('String#intern', '15.2.10.5.25') do
- assert_equal :abc, 'abc'.intern
-end
-
-assert('String#length', '15.2.10.5.26') do
- assert_equal 3, 'abc'.length
-end
-
-# 'String#match', '15.2.10.5.27' will be tested in mrbgems.
-
-assert('String#replace', '15.2.10.5.28') do
- a = ''
- a.replace('abc')
-
- assert_equal 'abc', a
- assert_equal 'abc', 'cba'.replace(a)
-
- b = 'abc' * 10
- c = ('cba' * 10).dup
- b.replace(c);
- c.replace(b);
- assert_equal c, b
-
- # shared string
- s = "foo" * 100
- a = s[10, 90] # create shared string
- assert_equal("", s.replace("")) # clear
- assert_equal("", s) # s is cleared
- assert_not_equal("", a) # a should not be affected
-end
-
-assert('String#reverse', '15.2.10.5.29') do
- a = 'abc'
- a.reverse
-
- assert_equal 'abc', a
- assert_equal 'cba', 'abc'.reverse
-end
-
-assert('String#reverse(UTF-8)', '15.2.10.5.29') do
- assert_equal "ち", "こんにちは世界"[3]
- assert_equal nil, "こんにちは世界"[20]
- assert_equal "世", "こんにちは世界"[-2]
- assert_equal "世界", "こんにちは世界"[-2..-1]
- assert_equal "んに", "こんにちは世界"[1,2]
- assert_equal "世", "こんにちは世界"["世"]
-end if UTF8STRING
-
-assert('String#reverse!', '15.2.10.5.30') do
- a = 'abc'
- a.reverse!
-
- assert_equal 'cba', a
- assert_equal 'cba', 'abc'.reverse!
-end
-
-assert('String#reverse!(UTF-8)', '15.2.10.5.30') do
- a = 'こんにちは世界!'
- a.reverse!
-
- assert_equal '!界世はちにんこ', a
- assert_equal '!界世はちにんこ', 'こんにちは世界!'.reverse!
-end if UTF8STRING
-
-assert('String#rindex', '15.2.10.5.31') do
- assert_equal 0, 'abc'.rindex('a')
- assert_nil 'abc'.rindex('d')
- assert_equal 0, 'abcabc'.rindex('a', 1)
- assert_equal 3, 'abcabc'.rindex('a', 4)
-end
-
-assert('String#rindex(UTF-8)', '15.2.10.5.31') do
- str = "こんにちは世界!\nこんにちは世界!"
- assert_nil str.index('さ')
- assert_equal 3, str.index('ち')
- assert_equal 12, str.index('ち', 10)
- assert_equal nil, str.index("さ")
-end if UTF8STRING
-
-# 'String#scan', '15.2.10.5.32' will be tested in mrbgems.
-
-assert('String#size', '15.2.10.5.33') do
- assert_equal 3, 'abc'.size
-end
-
-assert('String#size(UTF-8)', '15.2.10.5.33') do
- str = 'こんにちは世界!'
- assert_equal 8, str.size
- assert_not_equal str.bytesize, str.size
- assert_equal 2, str[1, 2].size
-end if UTF8STRING
-
-assert('String#slice', '15.2.10.5.34') do
- # length of args is 1
- a = 'abc'.slice(0)
- b = 'abc'.slice(-1)
- c = 'abc'.slice(10)
- d = 'abc'.slice(-10)
-
- # length of args is 2
- a1 = 'abc'.slice(0, -1)
- b1 = 'abc'.slice(10, 0)
- c1 = 'abc'.slice(-10, 0)
- d1 = 'abc'.slice(0, 0)
- e1 = 'abc'.slice(1, 2)
-
- # slice of shared string
- e11 = e1.slice(0)
-
- # args is RegExp
- # It will be tested in mrbgems.
-
- # args is String
- a3 = 'abc'.slice('bc')
- b3 = 'abc'.slice('XX')
-
- assert_equal 'a', a
- assert_equal 'c', b
- assert_nil c
- assert_nil d
- assert_nil a1
- assert_nil b1
- assert_nil c1
- assert_equal '', d1
- assert_equal 'bc', e1
- assert_equal 'b', e11
- assert_equal 'bc', a3
- assert_nil b3
-end
-
-# TODO Broken ATM
-assert('String#split', '15.2.10.5.35') do
- # without RegExp behavior is actually unspecified
- assert_equal ['abc', 'abc', 'abc'], 'abc abc abc'.split
- assert_equal ["a", "b", "c", "", "d"], 'a,b,c,,d'.split(',')
- assert_equal ['abc', 'abc', 'abc'], 'abc abc abc'.split(nil)
- assert_equal ['a', 'b', 'c'], 'abc'.split("")
-end
-
-assert('String#split(UTF-8)', '15.2.10.5.35') do
- got = "こんにちは世界!".split('')
- assert_equal ['こ', 'ん', 'に', 'ち', 'は', '世', '界', '!'], got
- got = "こんにちは世界!".split('に')
- assert_equal ['こん', 'ちは世界!'], got
-end if UTF8STRING
-
-assert('String#sub', '15.2.10.5.36') do
- assert_equal 'aBcabc', 'abcabc'.sub('b', 'B')
- assert_equal 'aBcabc', 'abcabc'.sub('b') { |w| w.capitalize }
- assert_equal 'aa$', 'aa#'.sub('#', '$')
- assert_equal '.abc', "abc".sub("", ".")
-
- str = "abc"
- miss = str.sub("X", "Z")
- assert_equal str, miss
- assert_not_equal str.object_id, miss.object_id
-
- a = []
- assert_equal '.abc', "abc".sub("") { |i| a << i; "." }
- assert_equal [""], a
-end
-
-assert('String#sub with backslash') do
- s = 'abXcdXef'
- assert_equal 'ab<\\>cdXef', s.sub('X', '<\\\\>')
- assert_equal 'ab<X>cdXef', s.sub('X', '<\\&>')
- assert_equal 'ab<X>cdXef', s.sub('X', '<\\0>')
- assert_equal 'ab<ab>cdXef', s.sub('X', '<\\`>')
- assert_equal 'ab<cdXef>cdXef', s.sub('X', '<\\\'>')
-end
-
-assert('String#sub!', '15.2.10.5.37') do
- a = 'abcabc'
- a.sub!('b', 'B')
-
- b = 'abcabc'
- b.sub!('b') { |w| w.capitalize }
-
- assert_equal 'aBcabc', a
- assert_equal 'aBcabc', b
-end
-
-assert('String#to_f', '15.2.10.5.38') do
- a = ''.to_f
- b = '123456789'.to_f
- c = '12345.6789'.to_f
- d = '1e-2147483648'.to_f
- e = '1e2147483648'.to_f
-
- assert_float(0.0, a)
- assert_float(123456789.0, b)
- assert_float(12345.6789, c)
- assert_float(0, d)
- assert_float(Float::INFINITY, e)
-end
-
-assert('String#to_i', '15.2.10.5.39') do
- a = ''.to_i
- b = '32143'.to_i
- c = 'a'.to_i(16)
- d = '100'.to_i(2)
- e = '1_000'.to_i
-
- assert_equal 0, a
- assert_equal 32143, b
- assert_equal 10, c
- assert_equal 4, d
- assert_equal 1_000, e
-end
-
-assert('String#to_s', '15.2.10.5.40') do
- assert_equal 'abc', 'abc'.to_s
-end
-
-assert('String#to_sym', '15.2.10.5.41') do
- assert_equal :abc, 'abc'.to_sym
-end
-
-assert('String#upcase', '15.2.10.5.42') do
- a = 'abc'.upcase
- b = 'abc'
-
- b.upcase
-
- assert_equal 'ABC', a
- assert_equal 'abc', b
-end
-
-assert('String#upcase!', '15.2.10.5.43') do
- a = 'abc'
-
- a.upcase!
-
- assert_equal 'ABC', a
- assert_equal nil, 'ABC'.upcase!
-
- a = 'abcdefghijklmnopqrstuvwxyz'
- b = a.dup
- a.upcase!
- b.upcase!
- assert_equal 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', b
-end
-
-assert('String#inspect', '15.2.10.5.46') do
- # should not raise an exception - regress #1210
- assert_nothing_raised do
- ("\1" * 100).inspect
- end
-
- assert_equal "\"\\000\"", "\0".inspect
-end
-
-# Not ISO specified
-
-assert('String interpolation (mrb_str_concat for shared strings)') do
- a = "A" * 32
- assert_equal "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA:", "#{a}:"
-end
-
-assert('Check the usage of a NUL character') do
- "qqq\0ppp"
-end
-
-assert('String#bytes') do
- str1 = "hello"
- bytes1 = [104, 101, 108, 108, 111]
-
- str2 = "\xFF"
- bytes2 = [0xFF]
-
- assert_equal bytes1, str1.bytes
- assert_equal bytes2, str2.bytes
-end
-
-assert('String#each_byte') do
- str1 = "hello"
- bytes1 = [104, 101, 108, 108, 111]
- bytes2 = []
-
- str1.each_byte {|b| bytes2 << b }
-
- assert_equal bytes1, bytes2
-end
-
-assert('String#freeze') do
- str = "hello"
- str.freeze
-
- assert_raise(RuntimeError) { str.upcase! }
-end