source: EcnlProtoTool/trunk/mruby-1.3.0/mrbgems/mruby-sprintf/test/sprintf.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.4 KB
Line 
1#assert('Kernel.sprintf') do
2#end
3
4assert('String#%') do
5 assert_equal "one=1", "one=%d" % 1
6 assert_equal "1 one 1.0", "%d %s %3.1f" % [ 1, "one", 1.01 ]
7 assert_equal "123 < 456", "%{num} < %<str>s" % { num: 123, str: "456" }
8 assert_equal 15, ("%b" % (1<<14)).size
9end
10
11assert('String#% with inf') do
12 inf = Float::INFINITY
13
14 assert_equal "Inf", "%f" % inf
15 assert_equal "Inf", "%2f" % inf
16 assert_equal "Inf", "%3f" % inf
17 assert_equal " Inf", "%4f" % inf
18 assert_equal " Inf", "%5f" % inf
19
20 assert_equal "+Inf", "%+f" % inf
21 assert_equal "+Inf", "%+2f" % inf
22 assert_equal "+Inf", "%+3f" % inf
23 assert_equal "+Inf", "%+4f" % inf
24 assert_equal " +Inf", "%+5f" % inf
25
26 assert_equal "Inf", "%-f" % inf
27 assert_equal "Inf", "%-2f" % inf
28 assert_equal "Inf", "%-3f" % inf
29 assert_equal "Inf ", "%-4f" % inf
30 assert_equal "Inf ", "%-5f" % inf
31
32 assert_equal " Inf", "% f" % inf
33 assert_equal " Inf", "% 2f" % inf
34 assert_equal " Inf", "% 3f" % inf
35 assert_equal " Inf", "% 4f" % inf
36 assert_equal " Inf", "% 5f" % inf
37end
38
39assert('String#% with nan') do
40 nan = Float::NAN
41
42 assert_equal "NaN", "%f" % nan
43 assert_equal "NaN", "%2f" % nan
44 assert_equal "NaN", "%3f" % nan
45 assert_equal " NaN", "%4f" % nan
46 assert_equal " NaN", "%5f" % nan
47
48 assert_equal "+NaN", "%+f" % nan
49 assert_equal "+NaN", "%+2f" % nan
50 assert_equal "+NaN", "%+3f" % nan
51 assert_equal "+NaN", "%+4f" % nan
52 assert_equal " +NaN", "%+5f" % nan
53
54 assert_equal "NaN", "%-f" % nan
55 assert_equal "NaN", "%-2f" % nan
56 assert_equal "NaN", "%-3f" % nan
57 assert_equal "NaN ", "%-4f" % nan
58 assert_equal "NaN ", "%-5f" % nan
59
60 assert_equal " NaN", "% f" % nan
61 assert_equal " NaN", "% 2f" % nan
62 assert_equal " NaN", "% 3f" % nan
63 assert_equal " NaN", "% 4f" % nan
64 assert_equal " NaN", "% 5f" % nan
65end
66
67assert("String#% with invalid chr") do
68 begin
69 class Fixnum
70 alias_method :chr_, :chr if method_defined?(:chr)
71
72 def chr
73 nil
74 end
75 end
76
77 assert_raise TypeError do
78 "%c" % 0
79 end
80 ensure
81 class Fixnum
82 if method_defined?(:chr_)
83 alias_method :chr, :chr_
84 remove_method :chr_
85 end
86 end
87 end
88end
89
90assert("String#% %b") do
91 assert_equal("..10115", "%0b5" % -5)
92end
93
94assert("String#% invalid format") do
95 assert_raise ArgumentError do
96 "%?" % ""
97 end
98end
99
100assert("String#% invalid format shared substring") do
101 fmt = ("x"*30+"%!")[0...-1]
102 assert_equal fmt, sprintf(fmt, "")
103end
Note: See TracBrowser for help on using the repository browser.