source: EcnlProtoTool/trunk/mruby-1.3.0/mrbgems/mruby-eval/test/eval.rb@ 331

Last change on this file since 331 was 331, checked in by coas-nagasima, 6 years ago

prototoolに関連するプロジェクトをnewlibからmuslを使うよう変更・更新
ntshellをnewlibの下位の実装から、muslのsyscallの実装に変更・更新
以下のOSSをアップデート
・mruby-1.3.0
・musl-1.1.18
・onigmo-6.1.3
・tcc-0.9.27
以下のOSSを追加
・openssl-1.1.0e
・curl-7.57.0
・zlib-1.2.11
以下のmrbgemsを追加
・iij/mruby-digest
・iij/mruby-env
・iij/mruby-errno
・iij/mruby-iijson
・iij/mruby-ipaddr
・iij/mruby-mock
・iij/mruby-require
・iij/mruby-tls-openssl

  • Property svn:eol-style set to native
  • Property svn:mime-type set to text/x-ruby;charset=UTF-8
File size: 2.3 KB
Line 
1assert('Kernel.eval', '15.3.1.2.3') do
2 assert_equal(10) { Kernel.eval '1 * 10' }
3 assert_equal('aaa') { Kernel.eval "'a' * 3" }
4 assert_equal(10) {
5 a = 10
6 Kernel.eval "a"
7 }
8 assert_equal(20) {
9 a = 10
10 Kernel.eval "a = 20"
11 a
12 }
13 assert_equal(15) {
14 c = 5
15 lambda {
16 a = 10
17 Kernel.eval "c = a + c"
18 }.call
19 c
20 }
21 assert_equal(5) {
22 c = 5
23 lambda {
24 Kernel.eval 'lambda { c }.call'
25 }.call
26 }
27 assert_equal(15) {
28 c = 5
29 lambda {
30 a = 10
31 Kernel.eval 'lambda { c = a + c }.call'
32 }.call
33 c
34 }
35 assert_equal(2) {
36 a = 10
37 Kernel.eval 'def f(a); b=a.send(:+, 1); end'
38 f(1)
39 }
40end
41
42assert('Kernel#eval', '15.3.1.3.12') do
43 assert_equal(10) { eval '1 * 10' }
44end
45
46assert('rest arguments of eval') do
47 assert_raise(ArgumentError) { Kernel.eval('0', 0, 'test', 0) }
48 assert_equal ['test', 'test.rb', 10] do
49 Kernel.eval('[\'test\', __FILE__, __LINE__]', nil, 'test.rb', 10)
50 end
51end
52
53assert 'eval syntax error' do
54 assert_raise(SyntaxError) do
55 eval 'p "test'
56 end
57end
58
59assert('String instance_eval') do
60 obj = Object.new
61 obj.instance_variable_set :@test, 'test'
62 assert_raise(ArgumentError) { obj.instance_eval(0) { } }
63 assert_raise(ArgumentError) { obj.instance_eval('0', 'test', 0, 'test') }
64 assert_equal(['test.rb', 10]) { obj.instance_eval('[__FILE__, __LINE__]', 'test.rb', 10)}
65 assert_equal('test') { obj.instance_eval('@test') }
66 assert_equal('test') { obj.instance_eval { @test } }
67 o = Object.new
68 assert_equal ['', o, o], o.instance_eval("[''].each { |s| break [s, o, self] }")
69end
70
71assert('Kernel.#eval(string) context') do
72 class TestEvalConstScope
73 EVAL_CONST_CLASS = 'class'
74 def const_string
75 eval 'EVAL_CONST_CLASS'
76 end
77 end
78 obj = TestEvalConstScope.new
79 assert_raise(NameError) { eval 'EVAL_CONST_CLASS' }
80 assert_equal('class') { obj.const_string }
81end
82
83assert('Object#instance_eval with begin-rescue-ensure execution order') do
84 class HellRaiser
85 def raise_hell
86 order = [:enter_raise_hell]
87 begin
88 order.push :begin
89 self.instance_eval("raise 'error'")
90 rescue
91 order.push :rescue
92 ensure
93 order.push :ensure
94 end
95 order
96 end
97 end
98
99 hell_raiser = HellRaiser.new
100 assert_equal([:enter_raise_hell, :begin, :rescue, :ensure], hell_raiser.raise_hell)
101end
Note: See TracBrowser for help on using the repository browser.