test/browser.test.html in rubyjs-0.7.1 vs test/browser.test.html in rubyjs-0.8.0
- old
+ new
@@ -4343,7 +4343,7 @@
</tr>
</tbody>
</table>
- <pre id="source">require 'common'<br/><br/>#<br/># file: test/test_hash.rb<br/>#<br/><br/>module T_TestHash<br/>class TestHash<br/> if $RUBYJS<br/> def hash<br/> `var el = {}; el["1"] = null; return el`<br/> end<br/> else<br/> def hash<br/> {"1" => nil}<br/> end<br/> end<br/><br/> def test<br/> h = {"a" => 6, "b" => 7, "1" => 1, 1 => 2, "1,2" => "hello", [1,2] => "good"} <br/> p h["a"]<br/> p h["b"] <br/> p h["1"]<br/> p h[1]<br/> p h["1,2"]<br/> p h[[1,2]] <br/><br/> puts "test native JS hash"<br/> a = hash()<br/> #p a<br/> end<br/><br/> def self.main<br/> new.test<br/> end<br/>end<br/>end<br/><br/><br/>#<br/># file: test/test_yield.rb<br/>#<br/><br/>module T_TestYield<br/>class TestYield<br/> def three_times_yield<br/> yield 1<br/> yield 2<br/> yield 3<br/> end<br/><br/> def test_three_times_yield<br/> puts "three_times_yield"<br/> three_times_yield {|i| p i }<br/> puts "--"<br/> end<br/><br/> def three_times_block(&block)<br/> block.call(1)<br/> block.call(2)<br/> block.call(3)<br/> end<br/><br/> def test_three_times_block<br/> puts "three_times_block"<br/> three_times_block {|i| p i }<br/> puts "--"<br/> end<br/><br/> def three_times_indirect(&block)<br/> three_times_yield(&block) <br/> three_times_block(&block) <br/> end<br/><br/> def test_three_times_indirect<br/> puts "three_times_indirect"<br/> three_times_indirect {|i| p i}<br/> puts "--"<br/> end<br/><br/> def three_times_yield2<br/> p yield(1)<br/> p yield(2)<br/> p yield(3)<br/> end<br/><br/> def test_three_times_yield2<br/> puts "three_times_yield2"<br/> three_times_yield2 {|i|<br/> if i == 1<br/> i<br/> else<br/> next i+1<br/> end<br/> }<br/> end<br/><br/> def loop<br/> while true<br/> yield<br/> end<br/> p "not reached"<br/> end<br/><br/> def loop2(&block)<br/> while true<br/> block.call<br/> end<br/> p "not reached"<br/> end<br/><br/> def test_loop<br/> puts "loop"<br/> i = 0 <br/> res = loop do <br/> i += 1<br/> next if i % 2 == 1 <br/> p i<br/> break "out", i if i > 8<br/> end <br/> p res<br/> puts "--"<br/> end<br/><br/> def test_loop2<br/> puts "loop2"<br/> i = 0 <br/> res = loop2 do <br/> i += 1<br/> next if i % 2 == 1 <br/> p i<br/> break "out", i if i > 8<br/> end <br/> p res<br/> puts "--"<br/> end<br/><br/> def test_while_loop<br/> puts "while-loop"<br/> i = 0 <br/> while true<br/> i += 1<br/> next if i % 2 == 1 <br/> p i<br/> break if i > 8<br/> end<br/> puts "----"<br/> while i > 0<br/> p i<br/> i -= 1<br/> end<br/> puts "--"<br/> end<br/><br/> def return_in_block(&block)<br/> p "return_in_block before"<br/> block.call<br/> p "return_in_block after"<br/> end<br/><br/> def test_return_in_block<br/> p "before"<br/> return_in_block { return 4 }<br/> p "after (NOT)"<br/> end<br/><br/> def test_proc<br/> p "test_proc"<br/> a = proc { return 0 }<br/> p a.call<br/> a = Proc.new { break 3 }<br/> p a.call<br/> end<br/><br/> def test<br/> test_three_times_yield<br/> test_three_times_block<br/> test_three_times_indirect<br/> test_three_times_yield2<br/> test_loop<br/> test_loop2<br/> test_while_loop<br/><br/> begin<br/> test_proc<br/> rescue LocalJumpError => e<br/> p e<br/> end<br/><br/> p test_return_in_block()<br/> end<br/><br/> def self.main<br/> new.test<br/> end<br/>end<br/>end<br/><br/><br/>#<br/># file: test/test_insertion_sort.rb<br/>#<br/><br/>module T_TestInsertionSort<br/>class TestInsertionSort<br/> def sort ary<br/> puts "Before insertion sort:"<br/> p ary<br/><br/> for i in 1..(ary.length-1) do<br/> n = i<br/> while n >= 1 && ary[n] < ary[n - 1] do<br/> if ary[n] < ary[n - 1]<br/> tmp = ary[n]<br/> ary[n] = ary[n - 1]<br/> ary[n - 1] = tmp<br/> end<br/> n -= 1<br/> end<br/> end<br/><br/> puts "After insertion sort:"<br/> p ary<br/> end<br/><br/> def self.main<br/> new.sort [3, 6, 2, 5, 3, 7, 1, 8]<br/> end<br/>end<br/>end<br/><br/><br/>#<br/># file: test/test_lebewesen.rb<br/>#<br/><br/>module T_TestLebewesen<br/>class TestLebewesen<br/> def self.main<br/> leni = Katze.new("AA-BB", "Leni")<br/> flocki = Katze.new("AC-DC", "Flocki") <br/> bello = Hund.new("AA-ZZ")<br/> leni.miau<br/> bello.wau<br/> bello.jage(leni)<br/> end<br/>end<br/><br/>class Lebewesen<br/> def initialize(dns)<br/> @dns = dns<br/> end<br/>end<br/><br/>class Katze < Lebewesen<br/> attr_reader :name<br/><br/> def initialize(dns, name)<br/> super(dns)<br/> @name = name<br/> end<br/><br/> def miau<br/> puts "miau, ich bin " + @name<br/> end<br/>end<br/><br/>class Hund < Lebewesen<br/> def wau<br/> puts "wau wau"<br/> end<br/><br/> def jage(katze)<br/> puts "ich jage " + katze.name<br/> end<br/>end<br/>end<br/><br/><br/>#<br/># file: test/test_expr.rb<br/>#<br/><br/>module T_TestExpr<br/>class TestExpr<br/> def test<br/> i = if true then 1 else 2 end<br/> p i<br/> i = true or return<br/> p i<br/> end<br/><br/> def self.main<br/> new.test<br/> end<br/>end<br/>end<br/><br/><br/>#<br/># file: test/test_simple_output.rb<br/>#<br/><br/>module T_TestSimpleOutput<br/>class TestSimpleOutput <br/> def self.main()<br/> puts "Hello World from RubyJS"<br/> end<br/>end<br/>end<br/><br/><br/>#<br/># file: test/test_if.rb<br/>#<br/><br/>module T_TestIf<br/>class TestIf<br/> def test<br/> puts "OK" if true<br/> puts "NOT OK" if false<br/> puts "OK" unless false<br/> puts "NOT OK" unless true<br/> puts "OK" if true and true and (true or false) and (!false)<br/><br/> puts "OK" if 5 < 6 and 6 < 7<br/><br/> # test the "||" operator<br/> p(false || "a") # => "a"<br/> p(nil || "a") # => "a"<br/> p(true || "a") # => true<br/> p("b" || "a") # => "b"<br/><br/> # test the "&&" operator<br/><br/> p(false && "a") # => false<br/> p(nil && "a") # => nil<br/> p(true && "a") # => "a"<br/> p("b" && "a") # => "a"<br/> end<br/><br/> def self.main<br/> new.test<br/> end<br/>end<br/>end<br/><br/><br/>#<br/># file: test/test_class.rb<br/>#<br/><br/>module T_TestClass<br/>module X<br/>end<br/><br/>class A<br/> include X<br/>end<br/><br/>class B < A<br/>end<br/><br/>class C < B<br/>end<br/><br/>class D<br/>end<br/><br/>class TestClass<br/> def self.main<br/> p A.new.instance_of?(A) # => true<br/> p A.new.instance_of?(B) # => false<br/> p B.new.instance_of?(A) # => false<br/> p A.new.instance_of?(X) # => false<br/> p B.new.instance_of?(X) # => false<br/><br/> p A.new.kind_of?(A) # => true<br/> p A.new.kind_of?(B) # => false<br/> p B.new.kind_of?(A) # => true<br/> p A.new.kind_of?(X) # => true<br/> p B.new.kind_of?(X) # => true<br/><br/> p C.new.kind_of?(X) # => true<br/> p C.new.kind_of?(A) # => true<br/> p C.new.kind_of?(B) # => true<br/> p C.new.kind_of?(C) # => true<br/> p C.new.kind_of?(D) # => false<br/> p C.new.kind_of?(Object) # => true<br/> p C.new.kind_of?(Kernel) # => true<br/> p C.new.kind_of?(Class) # => false<br/><br/> p ("hallo".class.name)<br/> p (nil.class.name)<br/> p (nil.instance_of?(NilClass))<br/> p ("hallo".instance_of?(String))<br/> p ("hallo".class)<br/> p A<br/> p B<br/> p C<br/> p D<br/> p X<br/><br/> p X.name<br/> p A.name<br/> p B.name<br/> end<br/>end<br/>end<br/><br/><br/>#<br/># file: test/test_case.rb<br/>#<br/><br/>module T_TestCase<br/>class TestCase<br/> def test<br/> case 1+1<br/> when 1, 3<br/> puts "NOT OKAY"<br/> when 2<br/> puts "OKAY"<br/> else<br/> puts "NOT OKAY"<br/> end<br/><br/> p (Array === [])<br/> p (RuntimeError === RuntimeError.new)<br/><br/> case 1<br/> when Fixnum <br/> puts "OK"<br/> when 1<br/> puts "OK"<br/> end<br/><br/> case 4<br/> when 0..3<br/> puts "NOT OKAY"<br/> when 1...4<br/> puts "NOT OKAY"<br/> when 2..4<br/> puts "OKAY"<br/> end<br/> end<br/><br/> def self.main<br/> new.test<br/> end<br/>end<br/>end<br/><br/><br/>#<br/># file: test/test_splat.rb<br/>#<br/><br/>module T_TestSplat<br/>class TestSplat<br/> def m(*args)<br/> p args<br/> end<br/><br/> def self.main<br/> obj = new()<br/><br/> obj.m<br/> obj.m(*[])<br/><br/> obj.m(1)<br/> obj.m(*[1])<br/> obj.m(1,*[])<br/><br/> obj.m(1,2)<br/> obj.m(*[1,2])<br/> obj.m(1,*[2])<br/> obj.m(1,*[1,2])<br/> end<br/>end<br/>end<br/><br/><br/>#<br/># file: test/test_string.rb<br/>#<br/><br/>module T_TestString<br/>class TestString<br/> def test<br/> # inspect<br/> p "hello"<br/> p "hallo\b\t\n"<br/> p "hallo\\leute"<br/> p '"super"'<br/> <br/> # index<br/> p "hello".index('e')<br/> p "hello".index('lo')<br/> p "hello".index('a')<br/> p "hello hello".index('ll')<br/> p "hello hello".index('ll', 3)<br/><br/> # []<br/> p "hallo"[0,1]<br/> p "hallo"[0,2]<br/> p "hallo"[0,5]<br/><br/> p ("10".rjust(10, "0"))<br/> p ("10".rjust(1, "blah"))<br/> p ("x".rjust(4, "()"))<br/><br/> p ("10".ljust(10, "0"))<br/> p ("10".ljust(1, "blah"))<br/> p ("x".ljust(4, "()"))<br/><br/><br/> # string interpolation<br/> p "abc #{ 1 + 2 } def"<br/> @a = "hallo".inspect<br/> @b = 4.5<br/> p "#{@a},#{@b}"<br/><br/> # gsub<br/> s = "hallo".gsub("l", "r")<br/> p s<br/> s = "hallo".gsub(/ll/, "rr")<br/> p s<br/> s = "hallo".gsub(/l/) { "r" }<br/> p s<br/> s = "hallo".gsub(/ll/) { "blah blah" }<br/> p s<br/> "hallllllo".gsub(/(l)l/) {|i| p i }<br/> end<br/><br/> def self.main<br/> new.test<br/> end<br/>end<br/>end<br/><br/><br/>#<br/># file: test/test_inspect.rb<br/>#<br/><br/>module T_TestInspect<br/>class TestInspect<br/> def test<br/> o = [{"Hello"=>'Rubyconf'}]<br/> puts o.inspect<br/> end<br/><br/> def self.main<br/> new.test<br/> end<br/>end<br/>end<br/><br/><br/>#<br/># file: test/test_regexp.rb<br/>#<br/><br/>module T_TestRegexp<br/>class TestRegexp<br/> def test<br/> p "okay" if "hallo" =~ /ll/<br/> pos = "hallo" =~ /ll/<br/> p pos<br/><br/> "hallo" =~ /(ll)/<br/> p $1<br/> p $2<br/> p $3<br/><br/> "hallo" =~ /a(ll)(o)/<br/> p $1<br/> p $2<br/> p $3<br/> p $4<br/> end<br/><br/> def self.main<br/> new.test<br/> end<br/>end<br/>end<br/><br/><br/>#<br/># file: test/test_args.rb<br/>#<br/><br/>module T_TestArgs<br/>class TestArgs<br/> def m(a, b=1, c="hallo", *args) <br/> p a<br/> p b<br/> p c<br/> p args<br/> end<br/><br/> def self.main<br/> obj = new()<br/><br/> obj.m(0)<br/> puts "--"<br/> obj.m(1,2)<br/> puts "--"<br/> obj.m(1,2,9)<br/> puts "--"<br/> obj.m(1,2,9,5)<br/> puts "--"<br/> obj.m(1,2,9,5,6)<br/> puts "--"<br/> obj.m(1,2,9,5,6,7,8,9,10,11,12)<br/> end<br/>end<br/>end<br/><br/><br/>#<br/># file: test/test_array.rb<br/>#<br/><br/>module T_TestArray<br/>class TestArray<br/> if $RUBYJS<br/> def array<br/> [1, 2, `null`, [`null`, `null`, 4]]<br/> end<br/> else<br/> def array<br/> [1, 2, nil, [nil, nil, 4]]<br/> end<br/> end<br/><br/> def test<br/> # delete<br/> a = [ "a", "b", "b", "b", "c" ]<br/> p a.delete("b") #=> "b"<br/> p a #=> ["a", "c"]<br/> p a.delete("z") #=> nil<br/><br/> puts "test native JS array mapping"<br/> p array()<br/> end<br/><br/> def self.main<br/> new.test<br/> end<br/>end<br/>end<br/><br/><br/>#<br/># file: test/test_eql.rb<br/>#<br/><br/>module T_TestEql<br/>class TestEql<br/> def self.main<br/> p "a".eql?("a") # => true<br/> p "a".eql?(1) # => false<br/> p "1".eql?(1) # => false<br/> p [1,2].eql?([1,2]) # => true<br/> p 1.eql?("1") # => false<br/> end<br/>end<br/>end<br/><br/><br/>#<br/># file: test/test_send.rb<br/>#<br/><br/>module T_TestSend<br/>class A<br/> def a_method(a,b)<br/> p a, b<br/> end<br/>end<br/><br/>class B < A<br/> def a_method(b, a)<br/> p "in B"<br/> super<br/> end<br/><br/> def c_method(b)<br/> end<br/>end<br/><br/>class C<br/> def method_missing(id, *args, &block)<br/> p "mm: #{id}, #{args}"<br/> end<br/>end<br/><br/>class TestSend<br/> def self.main<br/> puts "send"<br/> p A.new.send("a_method", 1, 2)<br/> p B.new.send("a_method", 1, 2)<br/><br/> puts "respond_to?"<br/> p A.new.respond_to?(:a_method)<br/> p A.new.respond_to?(:to_s)<br/> p A.new.respond_to?(:inspect)<br/> p A.new.respond_to?(:b_method)<br/> p A.new.respond_to?(:c_method)<br/><br/> puts "method_missing"<br/> p C.new.respond_to?(:blah_blah)<br/> C.new.blah_blah(1,2,3)<br/><br/> begin<br/> A.new.blah_blah<br/> puts "FAILURE?"<br/> rescue NoMethodError<br/> puts "catched!!!"<br/> end<br/><br/> begin<br/> A.not_a_method<br/> rescue NoMethodError<br/> p "goood"<br/> end<br/><br/> puts "class Method"<br/> m = "hallo".method(:to_s)<br/> p m<br/> p m.call<br/><br/> a = [1,2,3]<br/> m = a.method(:+)<br/> p m<br/> p m.call([2,3])<br/> p m<br/> p a<br/> end<br/>end<br/>end<br/><br/><br/>#<br/># file: test/test_range.rb<br/>#<br/><br/>module T_TestRange<br/>class TestRange<br/> def test<br/> a = Range.new(0,2)<br/> p a.first<br/> p a.last<br/> p a<br/><br/> i = 1<br/> p ((i..i+5).to_s)<br/> p ((i...i+i).to_s)<br/><br/> p ((0..2).to_s)<br/> p ((0...2).to_s)<br/><br/> (0..4).each do |i| p i end<br/> (0...4).each do |i| p i end<br/> (-1..-4).each do |i| p i end<br/><br/> p ((0..4).include?(4))<br/> p ((0..4).include?(5))<br/> p ((0...4).include?(5))<br/> p ((0...4).include?(4))<br/> p ((0...4).include?(3))<br/> p ((0...4).include?(0))<br/> p ((0...4).include?(-1))<br/><br/> p ((-1..-5).to_a)<br/> p ((-5..-1).to_a)<br/><br/> r = Range.new(0, 4)<br/> p r.first<br/> p r.begin<br/> p r.last<br/> p r.end<br/> p r.exclude_end?<br/><br/> r = 1...5<br/> p r.first<br/> p r.begin<br/> p r.last<br/> p r.end<br/> p r.exclude_end?<br/><br/> p (false == false)<br/> p (false == true)<br/> p (true == false)<br/> p (true == true)<br/><br/> p ((0..2) == (0..2))<br/> p ((0..2) == Range.new(0,2))<br/> p ((0..2) == (0...2))<br/><br/> j = 55<br/> p j<br/> for i in 1..100<br/> j = i<br/> end<br/> p j<br/><br/> j = 54<br/> p j<br/> for j in 1..100<br/> end<br/> p j<br/> end<br/><br/> def self.main<br/> new.test<br/> end<br/>end<br/>end<br/><br/><br/>#<br/># file: test/test_massign.rb<br/>#<br/><br/>module T_TestMassign<br/>class TestMassign<br/> def self.main<br/> a, b = 1, 2<br/> p a<br/> p b<br/> puts "--"<br/><br/> a, b = 1, 2, 3<br/> p a<br/> p b<br/> puts "--"<br/><br/> c = 5<br/> a, b, c = 1, 2 <br/> p a<br/> p b<br/> p c<br/> puts "--"<br/><br/> @a, b, @c = 1, 2, 3<br/> p @a<br/> p b<br/> p @c<br/> puts "--"<br/><br/> puts "swap"<br/> # swap<br/> a, b = 1, 2<br/> p a<br/> p b<br/> a, b = b, a<br/> p a<br/> p b<br/> puts "--"<br/><br/> puts "splat1"<br/> a, b, c, *d = 1, 2 <br/> p a<br/> p b<br/> p c<br/> p d<br/> puts "--"<br/><br/> puts "splat2"<br/> a, *b = 1, 2<br/> p a<br/> p b<br/> puts "--"<br/><br/> puts "splat3"<br/> a, *b = 1, 2, 3, 4, 5<br/> p a<br/> p b<br/> puts "--"<br/><br/> puts "splat with globals"<br/> p $a<br/> p $b<br/> $a, $b = 1, 2 <br/> p $a<br/> p $b<br/> puts "--"<br/> <br/> #TODO: a, b = 1 (to_ary)<br/> end<br/>end<br/>end<br/><br/><br/>#<br/># file: test/test_hot_ruby.rb<br/>#<br/><br/>module T_TestHotRuby<br/>#<br/># Examples taken from: http://hotruby.accelart.jp/<br/>#<br/>class TestHotRuby<br/> def sort ary<br/> puts "Before insertion sort:"<br/> p ary<br/><br/> for i in 1..(ary.length-1) do<br/> n = i<br/> while n >= 1 && ary[n] < ary[n - 1] do<br/> if ary[n] < ary[n - 1]<br/> tmp = ary[n]<br/> ary[n] = ary[n - 1]<br/> ary[n - 1] = tmp<br/> end<br/> n -= 1<br/> end<br/> end<br/><br/> puts "After insertion sort:"<br/> p ary<br/> end<br/><br/> def addPrint a, b, c<br/> puts a + b + c<br/> end<br/><br/> def self.main<br/> t = new()<br/><br/> puts "InsertionSort"<br/> t.sort [3, 6, 2, 5, 3, 7, 1, 8]<br/><br/> puts "Array args"<br/> ary = [' World ', '!']<br/> t.addPrint 'Hello', *ary<br/><br/> puts "Block"<br/> Foo.new.main<br/><br/> puts "Class"<br/> puts Pi::PI<br/> # different precision on Ruby vs. Javascript<br/> puts Pi.new.calc.to_s[0,13] <br/><br/><br/> puts "Const"<br/> # FIXME<br/>=begin<br/> Bar_::Baz_.new.run <br/> Bar2.new.run<br/> Object::Bar2.new.run<br/> Bar3.new.run<br/>=end<br/> end<br/>end<br/><br/>#<br/># Block<br/>#<br/>class Hoge<br/> def add_msg &block<br/> block.call "is" # s/yield/call/<br/> end<br/>end<br/> <br/>class Foo<br/> NAME = ' - William Shakespeare'<br/> def main<br/> pre = "Action"<br/> @space = " "<br/> Hoge.new.add_msg do |msg|<br/> fuga = "eloquence"<br/> puts pre + @space + msg + @space + fuga + NAME<br/> end<br/> end<br/>end<br/><br/>#<br/># Class<br/>#<br/>class Pi<br/> def initialize<br/> @a = 355.0<br/> end<br/> <br/> def calc<br/> b = 113.0<br/> return @a / b<br/> end<br/> <br/> PI = 'PI is about'<br/>end<br/> <br/>#<br/># Const<br/># <br/>class Foo_<br/> CONST = 'Foo'<br/>end<br/><br/>class Bar_<br/> CONST = 'Bar'<br/><br/> class Baz_ < Foo_<br/> def run<br/> puts CONST # => "Bar" Outer class const<br/> # In this case, you have to specify if you want to see parent class const.<br/> puts Foo_::CONST # => "Foo"<br/> end<br/> end<br/>end<br/> <br/>class Foo2<br/> CONST = 'Foo'<br/>end<br/> <br/>CONST = 'Object'<br/> <br/>class Bar2 < Foo2<br/> def run<br/> puts CONST # => "Foo"<br/> end<br/>end<br/><br/># If you specify "Object", then const in Object is searched before.<br/>class Object<br/> class Bar2 < Foo2<br/> def run<br/> puts CONST # => "Object"<br/> end<br/> end<br/>end<br/> <br/>class Foo3<br/> CONST = 'Foo'<br/>end<br/>class Bar3 < Foo3<br/> def run<br/> puts CONST # => "Foo"<br/> #CONST = 'Bar' # Define Bar's const "CONST"<br/> puts CONST # => "Bar" (Foo::CONST is hidden)<br/> puts Foo3::CONST # => "Foo" (You can see by "::")<br/> end<br/>end<br/>end<br/><br/><br/>#<br/># file: test/test_new.rb<br/>#<br/><br/>module T_TestNew<br/>class TestNew<br/> def initialize<br/> end<br/><br/> def test<br/> puts "test"<br/> end<br/><br/> def self.main()<br/> new().test<br/> end<br/>end<br/>end<br/><br/><br/>#<br/># file: test/test_exception.rb<br/>#<br/><br/>module T_TestException<br/>class TestException<br/> def self.main<br/><br/> p "before block"<br/> begin<br/> p "in block"<br/> end<br/> p "after block"<br/><br/> ###<br/> begin<br/> p "block"<br/> rescue<br/> p "rescue"<br/> rescue Exception => a<br/> p "another rescue"<br/> p a<br/> else<br/> p "else"<br/> end<br/><br/> p RuntimeError.new("test")<br/><br/> puts "before begin"<br/> begin<br/> puts "before raise"<br/> raise Exception, "blah" <br/> puts "after raise"<br/> rescue<br/> puts "noooo"<br/> rescue Exception => a<br/> p a<br/> puts "yes"<br/> ensure<br/> puts "ensure"<br/> end<br/> puts "after begin"<br/><br/> puts "--"<br/><br/> begin<br/> puts "abc"<br/> raise "r"<br/> rescue<br/> p $!<br/> puts "b"<br/> ensure<br/> puts "e"<br/> end<br/><br/> #<br/> # Test arity checks<br/> #<br/><br/> begin<br/> p("hallo".to_s(2))<br/> rescue ArgumentError => a<br/> p a<br/> end<br/> end<br/>end<br/>end<br/><br/><br/><br/> class TestSuite<br/> def self.main<br/> begin<br/> <br/> puts '~~~~~~~~~~~~~~~~~~~~'<br/> puts 'Test hash'<br/> puts '~~~~~~~~~~~~~~~~~~~~'<br/> T_TestHash::TestHash.main<br/> <br/> puts '~~~~~~~~~~~~~~~~~~~~'<br/> puts 'Test yield'<br/> puts '~~~~~~~~~~~~~~~~~~~~'<br/> T_TestYield::TestYield.main<br/> <br/> puts '~~~~~~~~~~~~~~~~~~~~'<br/> puts 'Test insertion sort'<br/> puts '~~~~~~~~~~~~~~~~~~~~'<br/> T_TestInsertionSort::TestInsertionSort.main<br/> <br/> puts '~~~~~~~~~~~~~~~~~~~~'<br/> puts 'Test lebewesen'<br/> puts '~~~~~~~~~~~~~~~~~~~~'<br/> T_TestLebewesen::TestLebewesen.main<br/> <br/> puts '~~~~~~~~~~~~~~~~~~~~'<br/> puts 'Test expr'<br/> puts '~~~~~~~~~~~~~~~~~~~~'<br/> T_TestExpr::TestExpr.main<br/> <br/> puts '~~~~~~~~~~~~~~~~~~~~'<br/> puts 'Test simple output'<br/> puts '~~~~~~~~~~~~~~~~~~~~'<br/> T_TestSimpleOutput::TestSimpleOutput.main<br/> <br/> puts '~~~~~~~~~~~~~~~~~~~~'<br/> puts 'Test if'<br/> puts '~~~~~~~~~~~~~~~~~~~~'<br/> T_TestIf::TestIf.main<br/> <br/> puts '~~~~~~~~~~~~~~~~~~~~'<br/> puts 'Test class'<br/> puts '~~~~~~~~~~~~~~~~~~~~'<br/> T_TestClass::TestClass.main<br/> <br/> puts '~~~~~~~~~~~~~~~~~~~~'<br/> puts 'Test case'<br/> puts '~~~~~~~~~~~~~~~~~~~~'<br/> T_TestCase::TestCase.main<br/> <br/> puts '~~~~~~~~~~~~~~~~~~~~'<br/> puts 'Test splat'<br/> puts '~~~~~~~~~~~~~~~~~~~~'<br/> T_TestSplat::TestSplat.main<br/> <br/> puts '~~~~~~~~~~~~~~~~~~~~'<br/> puts 'Test string'<br/> puts '~~~~~~~~~~~~~~~~~~~~'<br/> T_TestString::TestString.main<br/> <br/> puts '~~~~~~~~~~~~~~~~~~~~'<br/> puts 'Test inspect'<br/> puts '~~~~~~~~~~~~~~~~~~~~'<br/> T_TestInspect::TestInspect.main<br/> <br/> puts '~~~~~~~~~~~~~~~~~~~~'<br/> puts 'Test regexp'<br/> puts '~~~~~~~~~~~~~~~~~~~~'<br/> T_TestRegexp::TestRegexp.main<br/> <br/> puts '~~~~~~~~~~~~~~~~~~~~'<br/> puts 'Test args'<br/> puts '~~~~~~~~~~~~~~~~~~~~'<br/> T_TestArgs::TestArgs.main<br/> <br/> puts '~~~~~~~~~~~~~~~~~~~~'<br/> puts 'Test array'<br/> puts '~~~~~~~~~~~~~~~~~~~~'<br/> T_TestArray::TestArray.main<br/> <br/> puts '~~~~~~~~~~~~~~~~~~~~'<br/> puts 'Test eql'<br/> puts '~~~~~~~~~~~~~~~~~~~~'<br/> T_TestEql::TestEql.main<br/> <br/> puts '~~~~~~~~~~~~~~~~~~~~'<br/> puts 'Test send'<br/> puts '~~~~~~~~~~~~~~~~~~~~'<br/> T_TestSend::TestSend.main<br/> <br/> puts '~~~~~~~~~~~~~~~~~~~~'<br/> puts 'Test range'<br/> puts '~~~~~~~~~~~~~~~~~~~~'<br/> T_TestRange::TestRange.main<br/> <br/> puts '~~~~~~~~~~~~~~~~~~~~'<br/> puts 'Test massign'<br/> puts '~~~~~~~~~~~~~~~~~~~~'<br/> T_TestMassign::TestMassign.main<br/> <br/> puts '~~~~~~~~~~~~~~~~~~~~'<br/> puts 'Test hot ruby'<br/> puts '~~~~~~~~~~~~~~~~~~~~'<br/> T_TestHotRuby::TestHotRuby.main<br/> <br/> puts '~~~~~~~~~~~~~~~~~~~~'<br/> puts 'Test new'<br/> puts '~~~~~~~~~~~~~~~~~~~~'<br/> T_TestNew::TestNew.main<br/> <br/> puts '~~~~~~~~~~~~~~~~~~~~'<br/> puts 'Test exception'<br/> puts '~~~~~~~~~~~~~~~~~~~~'<br/> T_TestException::TestException.main<br/> <br/> rescue Exception => a<br/> p "unhandled exception"<br/> p a<br/> end<br/> end<br/> end<br/> TestSuite.main unless $RUBYJS<br/> </pre>
+ <pre id="source">require 'common'<br/><br/>#<br/># file: test/test_hash.rb<br/>#<br/><br/>module T_TestHash<br/>class TestHash<br/> if $RUBYJS<br/> def hash<br/> `var el = {}; el["1"] = null; return el`<br/> end<br/> else<br/> def hash<br/> {"1" => nil}<br/> end<br/> end<br/><br/> def test<br/> h = {"a" => 6, "b" => 7, "1" => 1, 1 => 2, "1,2" => "hello", [1,2] => "good"} <br/> p h["a"]<br/> p h["b"] <br/> p h["1"]<br/> p h[1]<br/> p h["1,2"]<br/> p h[[1,2]] <br/><br/> puts "test native JS hash"<br/> a = hash()<br/> #p a<br/> end<br/><br/> def self.main<br/> new.test<br/> end<br/>end<br/>end<br/><br/><br/>#<br/># file: test/test_yield.rb<br/>#<br/><br/>module T_TestYield<br/>class TestYield<br/> def three_times_yield<br/> yield 1<br/> yield 2<br/> yield 3<br/> end<br/><br/> def test_three_times_yield<br/> puts "three_times_yield"<br/> three_times_yield {|i| p i }<br/> puts "--"<br/> end<br/><br/> def three_times_block(&block)<br/> block.call(1)<br/> block.call(2)<br/> block.call(3)<br/> end<br/><br/> def test_three_times_block<br/> puts "three_times_block"<br/> three_times_block {|i| p i }<br/> puts "--"<br/> end<br/><br/> def three_times_indirect(&block)<br/> three_times_yield(&block) <br/> three_times_block(&block) <br/> end<br/><br/> def test_three_times_indirect<br/> puts "three_times_indirect"<br/> three_times_indirect {|i| p i}<br/> puts "--"<br/> end<br/><br/> def three_times_yield2<br/> p yield(1)<br/> p yield(2)<br/> p yield(3)<br/> end<br/><br/> def test_three_times_yield2<br/> puts "three_times_yield2"<br/> three_times_yield2 {|i|<br/> if i == 1<br/> i<br/> else<br/> next i+1<br/> end<br/> }<br/> end<br/><br/> def loop<br/> while true<br/> yield<br/> end<br/> p "not reached"<br/> end<br/><br/> def loop2(&block)<br/> while true<br/> block.call<br/> end<br/> p "not reached"<br/> end<br/><br/> def test_loop<br/> puts "loop"<br/> i = 0 <br/> res = loop do <br/> i += 1<br/> next if i % 2 == 1 <br/> p i<br/> break "out", i if i > 8<br/> end <br/> p res<br/> puts "--"<br/> end<br/><br/> def test_loop2<br/> puts "loop2"<br/> i = 0 <br/> res = loop2 do <br/> i += 1<br/> next if i % 2 == 1 <br/> p i<br/> break "out", i if i > 8<br/> end <br/> p res<br/> puts "--"<br/> end<br/><br/> def test_while_loop<br/> puts "while-loop"<br/> i = 0 <br/> while true<br/> i += 1<br/> next if i % 2 == 1 <br/> p i<br/> break if i > 8<br/> end<br/> puts "----"<br/> while i > 0<br/> p i<br/> i -= 1<br/> end<br/> puts "--"<br/> end<br/><br/> def return_in_block(&block)<br/> p "return_in_block before"<br/> block.call<br/> p "return_in_block after"<br/> end<br/><br/> def test_return_in_block<br/> p "before"<br/> return_in_block { return 4 }<br/> p "after (NOT)"<br/> end<br/><br/> def test_proc<br/> p "test_proc"<br/> a = proc { return 0 }<br/> p a.call<br/> a = Proc.new { break 3 }<br/> p a.call<br/> end<br/><br/> def test<br/> test_three_times_yield<br/> test_three_times_block<br/> test_three_times_indirect<br/> test_three_times_yield2<br/> test_loop<br/> test_loop2<br/> test_while_loop<br/><br/> (proc {||}).call<br/><br/> begin<br/> test_proc<br/> rescue LocalJumpError => e<br/> p e<br/> end<br/><br/> p test_return_in_block()<br/> end<br/><br/> def self.main<br/> new.test<br/> end<br/>end<br/>end<br/><br/><br/>#<br/># file: test/test_insertion_sort.rb<br/>#<br/><br/>module T_TestInsertionSort<br/>class TestInsertionSort<br/> def sort ary<br/> puts "Before insertion sort:"<br/> p ary<br/><br/> for i in 1..(ary.length-1) do<br/> n = i<br/> while n >= 1 && ary[n] < ary[n - 1] do<br/> if ary[n] < ary[n - 1]<br/> tmp = ary[n]<br/> ary[n] = ary[n - 1]<br/> ary[n - 1] = tmp<br/> end<br/> n -= 1<br/> end<br/> end<br/><br/> puts "After insertion sort:"<br/> p ary<br/> end<br/><br/> def self.main<br/> new.sort [3, 6, 2, 5, 3, 7, 1, 8]<br/> end<br/>end<br/>end<br/><br/><br/>#<br/># file: test/test_lebewesen.rb<br/>#<br/><br/>module T_TestLebewesen<br/>class TestLebewesen<br/> def self.main<br/> leni = Katze.new("AA-BB", "Leni")<br/> flocki = Katze.new("AC-DC", "Flocki") <br/> bello = Hund.new("AA-ZZ")<br/> leni.miau<br/> bello.wau<br/> bello.jage(leni)<br/> end<br/>end<br/><br/>class Lebewesen<br/> def initialize(dns)<br/> @dns = dns<br/> end<br/>end<br/><br/>class Katze < Lebewesen<br/> attr_reader :name<br/><br/> def initialize(dns, name)<br/> super(dns)<br/> @name = name<br/> end<br/><br/> def miau<br/> puts "miau, ich bin " + @name<br/> end<br/>end<br/><br/>class Hund < Lebewesen<br/> def wau<br/> puts "wau wau"<br/> end<br/><br/> def jage(katze)<br/> puts "ich jage " + katze.name<br/> end<br/>end<br/>end<br/><br/><br/>#<br/># file: test/test_expr.rb<br/>#<br/><br/>module T_TestExpr<br/>class TestExpr<br/> def test<br/> i = if true then 1 else 2 end<br/> p i<br/> i = true or return<br/> p i<br/> end<br/><br/> def self.main<br/> new.test<br/> end<br/>end<br/>end<br/><br/><br/>#<br/># file: test/test_simple_output.rb<br/>#<br/><br/>module T_TestSimpleOutput<br/>class TestSimpleOutput <br/> def self.main()<br/> puts "Hello World from RubyJS"<br/> end<br/>end<br/>end<br/><br/><br/>#<br/># file: test/test_if.rb<br/>#<br/><br/>module T_TestIf<br/>class TestIf<br/> def test<br/> puts "OK" if true<br/> puts "NOT OK" if false<br/> puts "OK" unless false<br/> puts "NOT OK" unless true<br/> puts "OK" if true and true and (true or false) and (!false)<br/><br/> puts "OK" if 5 < 6 and 6 < 7<br/><br/> # test the "||" operator<br/> p(false || "a") # => "a"<br/> p(nil || "a") # => "a"<br/> p(true || "a") # => true<br/> p("b" || "a") # => "b"<br/><br/> # test the "&&" operator<br/><br/> p(false && "a") # => false<br/> p(nil && "a") # => nil<br/> p(true && "a") # => "a"<br/> p("b" && "a") # => "a"<br/> end<br/><br/> def self.main<br/> new.test<br/> end<br/>end<br/>end<br/><br/><br/>#<br/># file: test/test_class.rb<br/>#<br/><br/>module T_TestClass<br/>module X<br/>end<br/><br/>class A<br/> include X<br/>end<br/><br/>class B < A<br/>end<br/><br/>class C < B<br/>end<br/><br/>class D<br/>end<br/><br/>class TestClass<br/> def self.main<br/> p A.new.instance_of?(A) # => true<br/> p A.new.instance_of?(B) # => false<br/> p B.new.instance_of?(A) # => false<br/> p A.new.instance_of?(X) # => false<br/> p B.new.instance_of?(X) # => false<br/><br/> p A.new.kind_of?(A) # => true<br/> p A.new.kind_of?(B) # => false<br/> p B.new.kind_of?(A) # => true<br/> p A.new.kind_of?(X) # => true<br/> p B.new.kind_of?(X) # => true<br/><br/> p C.new.kind_of?(X) # => true<br/> p C.new.kind_of?(A) # => true<br/> p C.new.kind_of?(B) # => true<br/> p C.new.kind_of?(C) # => true<br/> p C.new.kind_of?(D) # => false<br/> p C.new.kind_of?(Object) # => true<br/> p C.new.kind_of?(Kernel) # => true<br/> p C.new.kind_of?(Class) # => false<br/><br/> p ("hallo".class.name)<br/> p (nil.class.name)<br/> p (nil.instance_of?(NilClass))<br/> p ("hallo".instance_of?(String))<br/> p ("hallo".class)<br/> p A<br/> p B<br/> p C<br/> p D<br/> p X<br/><br/> p X.name<br/> p A.name<br/> p B.name<br/> end<br/>end<br/>end<br/><br/><br/>#<br/># file: test/test_case.rb<br/>#<br/><br/>module T_TestCase<br/>class TestCase<br/> def test<br/> case 1+1<br/> when 1, 3<br/> puts "NOT OKAY"<br/> when 2<br/> puts "OKAY"<br/> else<br/> puts "NOT OKAY"<br/> end<br/><br/> p (Array === [])<br/> p (RuntimeError === RuntimeError.new)<br/><br/> case 1<br/> when Fixnum <br/> puts "OK"<br/> when 1<br/> puts "OK"<br/> end<br/><br/> case 4<br/> when 0..3<br/> puts "NOT OKAY"<br/> when 1...4<br/> puts "NOT OKAY"<br/> when 2..4<br/> puts "OKAY"<br/> end<br/> end<br/><br/> def self.main<br/> new.test<br/> end<br/>end<br/>end<br/><br/><br/>#<br/># file: test/test_splat.rb<br/>#<br/><br/>module T_TestSplat<br/>class TestSplat<br/> def m(*args)<br/> p args<br/> end<br/><br/> def self.main<br/> obj = new()<br/><br/> obj.m<br/> obj.m(*[])<br/><br/> obj.m(1)<br/> obj.m(*[1])<br/> obj.m(1,*[])<br/><br/> obj.m(1,2)<br/> obj.m(*[1,2])<br/> obj.m(1,*[2])<br/> obj.m(1,*[1,2])<br/> end<br/>end<br/>end<br/><br/><br/>#<br/># file: test/test_string.rb<br/>#<br/><br/>module T_TestString<br/>class TestString<br/> def test<br/> # inspect<br/> p "hello"<br/> p "hallo\b\t\n"<br/> p "hallo\\leute"<br/> p '"super"'<br/> <br/> # index<br/> p "hello".index('e')<br/> p "hello".index('lo')<br/> p "hello".index('a')<br/> p "hello hello".index('ll')<br/> p "hello hello".index('ll', 3)<br/><br/> # []<br/> p "hallo"[0,1]<br/> p "hallo"[0,2]<br/> p "hallo"[0,5]<br/><br/> p ("10".rjust(10, "0"))<br/> p ("10".rjust(1, "blah"))<br/> p ("x".rjust(4, "()"))<br/><br/> p ("10".ljust(10, "0"))<br/> p ("10".ljust(1, "blah"))<br/> p ("x".ljust(4, "()"))<br/><br/><br/> # string interpolation<br/> p "abc #{ 1 + 2 } def"<br/> @a = "hallo".inspect<br/> @b = 4.5<br/> p "#{@a},#{@b}"<br/><br/> # gsub<br/> s = "hallo".gsub("l", "r")<br/> p s<br/> s = "hallo".gsub(/ll/, "rr")<br/> p s<br/> s = "hallo".gsub(/l/) { "r" }<br/> p s<br/> s = "hallo".gsub(/ll/) { "blah blah" }<br/> p s<br/> "hallllllo".gsub(/(l)l/) {|i| p i }<br/> end<br/><br/> def self.main<br/> new.test<br/> end<br/>end<br/>end<br/><br/><br/>#<br/># file: test/test_inspect.rb<br/>#<br/><br/>module T_TestInspect<br/>class TestInspect<br/> def test<br/> o = [{"Hello"=>'Rubyconf'}]<br/> puts o.inspect<br/> end<br/><br/> def self.main<br/> new.test<br/> end<br/>end<br/>end<br/><br/><br/>#<br/># file: test/test_regexp.rb<br/>#<br/><br/>module T_TestRegexp<br/>class TestRegexp<br/> def test<br/> p "okay" if "hallo" =~ /ll/<br/> pos = "hallo" =~ /ll/<br/> p pos<br/><br/> "hallo" =~ /(ll)/<br/> p $1<br/> p $2<br/> p $3<br/><br/> "hallo" =~ /a(ll)(o)/<br/> p $1<br/> p $2<br/> p $3<br/> p $4<br/> end<br/><br/> def self.main<br/> new.test<br/> end<br/>end<br/>end<br/><br/><br/>#<br/># file: test/test_args.rb<br/>#<br/><br/>module T_TestArgs<br/>class TestArgs<br/> def m(a, b=1, c="hallo", *args) <br/> p a<br/> p b<br/> p c<br/> p args<br/> end<br/><br/> def self.main<br/> obj = new()<br/><br/> obj.m(0)<br/> puts "--"<br/> obj.m(1,2)<br/> puts "--"<br/> obj.m(1,2,9)<br/> puts "--"<br/> obj.m(1,2,9,5)<br/> puts "--"<br/> obj.m(1,2,9,5,6)<br/> puts "--"<br/> obj.m(1,2,9,5,6,7,8,9,10,11,12)<br/> end<br/>end<br/>end<br/><br/><br/>#<br/># file: test/test_array.rb<br/>#<br/><br/>module T_TestArray<br/>class TestArray<br/> if $RUBYJS<br/> def array<br/> [1, 2, `null`, [`null`, `null`, 4]]<br/> end<br/> else<br/> def array<br/> [1, 2, nil, [nil, nil, 4]]<br/> end<br/> end<br/><br/> def test<br/> # delete<br/> a = [ "a", "b", "b", "b", "c" ]<br/> p a.delete("b") #=> "b"<br/> p a #=> ["a", "c"]<br/> p a.delete("z") #=> nil<br/><br/> puts "test native JS array mapping"<br/> p array()<br/> end<br/><br/> def self.main<br/> new.test<br/> end<br/>end<br/>end<br/><br/><br/>#<br/># file: test/test_eql.rb<br/>#<br/><br/>module T_TestEql<br/>class TestEql<br/> def self.main<br/> p "a".eql?("a") # => true<br/> p "a".eql?(1) # => false<br/> p "1".eql?(1) # => false<br/> p [1,2].eql?([1,2]) # => true<br/> p 1.eql?("1") # => false<br/> end<br/>end<br/>end<br/><br/><br/>#<br/># file: test/test_send.rb<br/>#<br/><br/>module T_TestSend<br/>class A<br/> def a_method(a,b)<br/> p a, b<br/> end<br/>end<br/><br/>class B < A<br/> def a_method(b, a)<br/> p "in B"<br/> super<br/> end<br/><br/> def c_method(b)<br/> end<br/>end<br/><br/>class C<br/> def method_missing(id, *args, &block)<br/> p "mm: #{id}, #{args}"<br/> end<br/>end<br/><br/>class TestSend<br/> def self.main<br/> puts "send"<br/> p A.new.send("a_method", 1, 2)<br/> p B.new.send("a_method", 1, 2)<br/><br/> puts "respond_to?"<br/> p A.new.respond_to?(:a_method)<br/> p A.new.respond_to?(:to_s)<br/> p A.new.respond_to?(:inspect)<br/> p A.new.respond_to?(:b_method)<br/> p A.new.respond_to?(:c_method)<br/><br/> puts "method_missing"<br/> p C.new.respond_to?(:blah_blah)<br/> C.new.blah_blah(1,2,3)<br/><br/> begin<br/> A.new.blah_blah<br/> puts "FAILURE?"<br/> rescue NoMethodError<br/> puts "catched!!!"<br/> end<br/><br/> begin<br/> A.not_a_method<br/> rescue NoMethodError<br/> p "goood"<br/> end<br/><br/> puts "class Method"<br/> m = "hallo".method(:to_s)<br/> p m<br/> p m.call<br/><br/> a = [1,2,3]<br/> m = a.method(:+)<br/> p m<br/> p m.call([2,3])<br/> p m<br/> p a<br/> end<br/>end<br/>end<br/><br/><br/>#<br/># file: test/test_range.rb<br/>#<br/><br/>module T_TestRange<br/>class TestRange<br/> def test<br/> a = Range.new(0,2)<br/> p a.first<br/> p a.last<br/> p a<br/><br/> i = 1<br/> p ((i..i+5).to_s)<br/> p ((i...i+i).to_s)<br/><br/> p ((0..2).to_s)<br/> p ((0...2).to_s)<br/><br/> (0..4).each do |i| p i end<br/> (0...4).each do |i| p i end<br/> (-1..-4).each do |i| p i end<br/><br/> p ((0..4).include?(4))<br/> p ((0..4).include?(5))<br/> p ((0...4).include?(5))<br/> p ((0...4).include?(4))<br/> p ((0...4).include?(3))<br/> p ((0...4).include?(0))<br/> p ((0...4).include?(-1))<br/><br/> p ((-1..-5).to_a)<br/> p ((-5..-1).to_a)<br/><br/> r = Range.new(0, 4)<br/> p r.first<br/> p r.begin<br/> p r.last<br/> p r.end<br/> p r.exclude_end?<br/><br/> r = 1...5<br/> p r.first<br/> p r.begin<br/> p r.last<br/> p r.end<br/> p r.exclude_end?<br/><br/> p (false == false)<br/> p (false == true)<br/> p (true == false)<br/> p (true == true)<br/><br/> p ((0..2) == (0..2))<br/> p ((0..2) == Range.new(0,2))<br/> p ((0..2) == (0...2))<br/><br/> j = 55<br/> p j<br/> for i in 1..100<br/> j = i<br/> end<br/> p j<br/><br/> j = 54<br/> p j<br/> for j in 1..100<br/> end<br/> p j<br/> end<br/><br/> def self.main<br/> new.test<br/> end<br/>end<br/>end<br/><br/><br/>#<br/># file: test/test_massign.rb<br/>#<br/><br/>module T_TestMassign<br/>class TestMassign<br/> def self.main<br/> a, b = 1, 2<br/> p a<br/> p b<br/> puts "--"<br/><br/> a, b = 1, 2, 3<br/> p a<br/> p b<br/> puts "--"<br/><br/> c = 5<br/> a, b, c = 1, 2 <br/> p a<br/> p b<br/> p c<br/> puts "--"<br/><br/> @a, b, @c = 1, 2, 3<br/> p @a<br/> p b<br/> p @c<br/> puts "--"<br/><br/> puts "swap"<br/> # swap<br/> a, b = 1, 2<br/> p a<br/> p b<br/> a, b = b, a<br/> p a<br/> p b<br/> puts "--"<br/><br/> puts "splat1"<br/> a, b, c, *d = 1, 2 <br/> p a<br/> p b<br/> p c<br/> p d<br/> puts "--"<br/><br/> puts "splat2"<br/> a, *b = 1, 2<br/> p a<br/> p b<br/> puts "--"<br/><br/> puts "splat3"<br/> a, *b = 1, 2, 3, 4, 5<br/> p a<br/> p b<br/> puts "--"<br/><br/> puts "splat with globals"<br/> p $a<br/> p $b<br/> $a, $b = 1, 2 <br/> p $a<br/> p $b<br/> puts "--"<br/> <br/> #TODO: a, b = 1 (to_ary)<br/> end<br/>end<br/>end<br/><br/><br/>#<br/># file: test/test_hot_ruby.rb<br/>#<br/><br/>module T_TestHotRuby<br/>#<br/># Examples taken from: http://hotruby.accelart.jp/<br/>#<br/>class TestHotRuby<br/> def sort ary<br/> puts "Before insertion sort:"<br/> p ary<br/><br/> for i in 1..(ary.length-1) do<br/> n = i<br/> while n >= 1 && ary[n] < ary[n - 1] do<br/> if ary[n] < ary[n - 1]<br/> tmp = ary[n]<br/> ary[n] = ary[n - 1]<br/> ary[n - 1] = tmp<br/> end<br/> n -= 1<br/> end<br/> end<br/><br/> puts "After insertion sort:"<br/> p ary<br/> end<br/><br/> def addPrint a, b, c<br/> puts a + b + c<br/> end<br/><br/> def self.main<br/> t = new()<br/><br/> puts "InsertionSort"<br/> t.sort [3, 6, 2, 5, 3, 7, 1, 8]<br/><br/> puts "Array args"<br/> ary = [' World ', '!']<br/> t.addPrint 'Hello', *ary<br/><br/> puts "Block"<br/> Foo.new.main<br/><br/> puts "Class"<br/> puts Pi::PI<br/> # different precision on Ruby vs. Javascript<br/> puts Pi.new.calc.to_s[0,13] <br/><br/><br/> puts "Const"<br/> # FIXME<br/>=begin<br/> Bar_::Baz_.new.run <br/> Bar2.new.run<br/> Object::Bar2.new.run<br/> Bar3.new.run<br/>=end<br/> end<br/>end<br/><br/>#<br/># Block<br/>#<br/>class Hoge<br/> def add_msg &block<br/> block.call "is" # s/yield/call/<br/> end<br/>end<br/> <br/>class Foo<br/> NAME = ' - William Shakespeare'<br/> def main<br/> pre = "Action"<br/> @space = " "<br/> Hoge.new.add_msg do |msg|<br/> fuga = "eloquence"<br/> puts pre + @space + msg + @space + fuga + NAME<br/> end<br/> end<br/>end<br/><br/>#<br/># Class<br/>#<br/>class Pi<br/> def initialize<br/> @a = 355.0<br/> end<br/> <br/> def calc<br/> b = 113.0<br/> return @a / b<br/> end<br/> <br/> PI = 'PI is about'<br/>end<br/> <br/>#<br/># Const<br/># <br/>class Foo_<br/> CONST = 'Foo'<br/>end<br/><br/>class Bar_<br/> CONST = 'Bar'<br/><br/> class Baz_ < Foo_<br/> def run<br/> puts CONST # => "Bar" Outer class const<br/> # In this case, you have to specify if you want to see parent class const.<br/> puts Foo_::CONST # => "Foo"<br/> end<br/> end<br/>end<br/> <br/>class Foo2<br/> CONST = 'Foo'<br/>end<br/> <br/>CONST = 'Object'<br/> <br/>class Bar2 < Foo2<br/> def run<br/> puts CONST # => "Foo"<br/> end<br/>end<br/><br/># If you specify "Object", then const in Object is searched before.<br/>class Object<br/> class Bar2 < Foo2<br/> def run<br/> puts CONST # => "Object"<br/> end<br/> end<br/>end<br/> <br/>class Foo3<br/> CONST = 'Foo'<br/>end<br/>class Bar3 < Foo3<br/> def run<br/> puts CONST # => "Foo"<br/> #CONST = 'Bar' # Define Bar's const "CONST"<br/> puts CONST # => "Bar" (Foo::CONST is hidden)<br/> puts Foo3::CONST # => "Foo" (You can see by "::")<br/> end<br/>end<br/>end<br/><br/><br/>#<br/># file: test/test_new.rb<br/>#<br/><br/>module T_TestNew<br/>class TestNew<br/> def initialize<br/> end<br/><br/> def test<br/> puts "test"<br/> end<br/><br/> def self.main()<br/> new().test<br/> end<br/>end<br/>end<br/><br/><br/>#<br/># file: test/test_exception.rb<br/>#<br/><br/>module T_TestException<br/>class TestException<br/> def self.main<br/><br/> p "before block"<br/> begin<br/> p "in block"<br/> end<br/> p "after block"<br/><br/> ###<br/> begin<br/> p "block"<br/> rescue<br/> p "rescue"<br/> rescue Exception => a<br/> p "another rescue"<br/> p a<br/> else<br/> p "else"<br/> end<br/><br/> p RuntimeError.new("test")<br/><br/> puts "before begin"<br/> begin<br/> puts "before raise"<br/> raise Exception, "blah" <br/> puts "after raise"<br/> rescue<br/> puts "noooo"<br/> rescue Exception => a<br/> p a<br/> puts "yes"<br/> ensure<br/> puts "ensure"<br/> end<br/> puts "after begin"<br/><br/> puts "--"<br/><br/> begin<br/> puts "abc"<br/> raise "r"<br/> rescue<br/> p $!<br/> puts "b"<br/> ensure<br/> puts "e"<br/> end<br/><br/> #<br/> # Test arity checks<br/> #<br/><br/> begin<br/> p("hallo".to_s(2))<br/> rescue ArgumentError => a<br/> p a<br/> end<br/> end<br/>end<br/>end<br/><br/><br/><br/> class TestSuite<br/> def self.main<br/> begin<br/> <br/> puts '~~~~~~~~~~~~~~~~~~~~'<br/> puts 'Test hash'<br/> puts '~~~~~~~~~~~~~~~~~~~~'<br/> T_TestHash::TestHash.main<br/> <br/> puts '~~~~~~~~~~~~~~~~~~~~'<br/> puts 'Test yield'<br/> puts '~~~~~~~~~~~~~~~~~~~~'<br/> T_TestYield::TestYield.main<br/> <br/> puts '~~~~~~~~~~~~~~~~~~~~'<br/> puts 'Test insertion sort'<br/> puts '~~~~~~~~~~~~~~~~~~~~'<br/> T_TestInsertionSort::TestInsertionSort.main<br/> <br/> puts '~~~~~~~~~~~~~~~~~~~~'<br/> puts 'Test lebewesen'<br/> puts '~~~~~~~~~~~~~~~~~~~~'<br/> T_TestLebewesen::TestLebewesen.main<br/> <br/> puts '~~~~~~~~~~~~~~~~~~~~'<br/> puts 'Test expr'<br/> puts '~~~~~~~~~~~~~~~~~~~~'<br/> T_TestExpr::TestExpr.main<br/> <br/> puts '~~~~~~~~~~~~~~~~~~~~'<br/> puts 'Test simple output'<br/> puts '~~~~~~~~~~~~~~~~~~~~'<br/> T_TestSimpleOutput::TestSimpleOutput.main<br/> <br/> puts '~~~~~~~~~~~~~~~~~~~~'<br/> puts 'Test if'<br/> puts '~~~~~~~~~~~~~~~~~~~~'<br/> T_TestIf::TestIf.main<br/> <br/> puts '~~~~~~~~~~~~~~~~~~~~'<br/> puts 'Test class'<br/> puts '~~~~~~~~~~~~~~~~~~~~'<br/> T_TestClass::TestClass.main<br/> <br/> puts '~~~~~~~~~~~~~~~~~~~~'<br/> puts 'Test case'<br/> puts '~~~~~~~~~~~~~~~~~~~~'<br/> T_TestCase::TestCase.main<br/> <br/> puts '~~~~~~~~~~~~~~~~~~~~'<br/> puts 'Test splat'<br/> puts '~~~~~~~~~~~~~~~~~~~~'<br/> T_TestSplat::TestSplat.main<br/> <br/> puts '~~~~~~~~~~~~~~~~~~~~'<br/> puts 'Test string'<br/> puts '~~~~~~~~~~~~~~~~~~~~'<br/> T_TestString::TestString.main<br/> <br/> puts '~~~~~~~~~~~~~~~~~~~~'<br/> puts 'Test inspect'<br/> puts '~~~~~~~~~~~~~~~~~~~~'<br/> T_TestInspect::TestInspect.main<br/> <br/> puts '~~~~~~~~~~~~~~~~~~~~'<br/> puts 'Test regexp'<br/> puts '~~~~~~~~~~~~~~~~~~~~'<br/> T_TestRegexp::TestRegexp.main<br/> <br/> puts '~~~~~~~~~~~~~~~~~~~~'<br/> puts 'Test args'<br/> puts '~~~~~~~~~~~~~~~~~~~~'<br/> T_TestArgs::TestArgs.main<br/> <br/> puts '~~~~~~~~~~~~~~~~~~~~'<br/> puts 'Test array'<br/> puts '~~~~~~~~~~~~~~~~~~~~'<br/> T_TestArray::TestArray.main<br/> <br/> puts '~~~~~~~~~~~~~~~~~~~~'<br/> puts 'Test eql'<br/> puts '~~~~~~~~~~~~~~~~~~~~'<br/> T_TestEql::TestEql.main<br/> <br/> puts '~~~~~~~~~~~~~~~~~~~~'<br/> puts 'Test send'<br/> puts '~~~~~~~~~~~~~~~~~~~~'<br/> T_TestSend::TestSend.main<br/> <br/> puts '~~~~~~~~~~~~~~~~~~~~'<br/> puts 'Test range'<br/> puts '~~~~~~~~~~~~~~~~~~~~'<br/> T_TestRange::TestRange.main<br/> <br/> puts '~~~~~~~~~~~~~~~~~~~~'<br/> puts 'Test massign'<br/> puts '~~~~~~~~~~~~~~~~~~~~'<br/> T_TestMassign::TestMassign.main<br/> <br/> puts '~~~~~~~~~~~~~~~~~~~~'<br/> puts 'Test hot ruby'<br/> puts '~~~~~~~~~~~~~~~~~~~~'<br/> T_TestHotRuby::TestHotRuby.main<br/> <br/> puts '~~~~~~~~~~~~~~~~~~~~'<br/> puts 'Test new'<br/> puts '~~~~~~~~~~~~~~~~~~~~'<br/> T_TestNew::TestNew.main<br/> <br/> puts '~~~~~~~~~~~~~~~~~~~~'<br/> puts 'Test exception'<br/> puts '~~~~~~~~~~~~~~~~~~~~'<br/> T_TestException::TestException.main<br/> <br/> rescue Exception => a<br/> p "unhandled exception"<br/> p a<br/> end<br/> end<br/> end<br/> TestSuite.main unless $RUBYJS<br/> </pre>
</body></html>