PageRenderTime 52ms CodeModel.GetById 17ms RepoModel.GetById 0ms app.codeStats 0ms

/bootstraptest/test_syntax.rb

https://github.com/fizx/ruby
Ruby | 886 lines | 875 code | 8 blank | 3 comment | 51 complexity | effce40c5e518fdcbd62c5067dd3153f MD5 | raw file
Possible License(s): LGPL-2.1, AGPL-3.0, GPL-2.0, BSD-3-Clause
  1. assert_equal %q{4}, %q{1 && 2 && 3 && 4}
  2. assert_equal %q{}, %q{1 && nil && 3 && 4}
  3. assert_equal %q{}, %q{1 && 2 && 3 && nil}
  4. assert_equal %q{false}, %q{1 && 2 && 3 && false}
  5. assert_equal %q{4}, %q{1 and 2 and 3 and 4}
  6. assert_equal %q{}, %q{1 and nil and 3 and 4}
  7. assert_equal %q{}, %q{1 and 2 and 3 and nil}
  8. assert_equal %q{false}, %q{1 and 2 and 3 and false}
  9. assert_equal %q{}, %q{nil && true}
  10. assert_equal %q{false}, %q{false && true}
  11. assert_equal %q{}, %q{
  12. case 1
  13. when 2
  14. :ng
  15. end}
  16. assert_equal %q{ok}, %q{
  17. case 1
  18. when 10,20,30
  19. :ng1
  20. when 1,2,3
  21. :ok
  22. when 100,200,300
  23. :ng2
  24. else
  25. :elseng
  26. end}
  27. assert_equal %q{elseok}, %q{
  28. case 123
  29. when 10,20,30
  30. :ng1
  31. when 1,2,3
  32. :ng2
  33. when 100,200,300
  34. :ng3
  35. else
  36. :elseok
  37. end
  38. }
  39. assert_equal %q{ok}, %q{
  40. case 'test'
  41. when /testx/
  42. :ng1
  43. when /test/
  44. :ok
  45. when /tetxx/
  46. :ng2
  47. else
  48. :ng_else
  49. end
  50. }
  51. assert_equal %q{ok}, %q{
  52. case Object.new
  53. when Object
  54. :ok
  55. end
  56. }
  57. assert_equal %q{ok}, %q{
  58. case Object
  59. when Object.new
  60. :ng
  61. else
  62. :ok
  63. end
  64. }
  65. assert_equal %q{ok}, %q{
  66. case 'test'
  67. when 'tes'
  68. :ng
  69. when 'te'
  70. :ng
  71. else
  72. :ok
  73. end
  74. }
  75. assert_equal %q{ok}, %q{
  76. case 'test'
  77. when 'tes'
  78. :ng
  79. when 'te'
  80. :ng
  81. when 'test'
  82. :ok
  83. end
  84. }
  85. assert_equal %q{ng}, %q{
  86. case 'test'
  87. when 'tes'
  88. :ng
  89. when /te/
  90. :ng
  91. else
  92. :ok
  93. end
  94. }
  95. assert_equal %q{ok}, %q{
  96. case 'test'
  97. when 'tes'
  98. :ng
  99. when /test/
  100. :ok
  101. else
  102. :ng
  103. end
  104. }
  105. assert_equal %q{100}, %q{
  106. def test(arg)
  107. case 1
  108. when 2
  109. 3
  110. end
  111. return arg
  112. end
  113. test(100)
  114. }
  115. assert_equal %q{ok}, %q{
  116. ary = [1, 2]
  117. case 1
  118. when *ary
  119. :ok
  120. else
  121. :ng
  122. end
  123. }
  124. assert_equal %q{ok}, %q{
  125. ary = [1, 2]
  126. case 3
  127. when *ary
  128. :ng
  129. else
  130. :ok
  131. end
  132. }
  133. assert_equal %q{ok}, %q{
  134. ary = [1, 2]
  135. case 1
  136. when :x, *ary
  137. :ok
  138. when :z
  139. :ng1
  140. else
  141. :ng2
  142. end
  143. }
  144. assert_equal %q{ok}, %q{
  145. ary = [1, 2]
  146. case 3
  147. when :x, *ary
  148. :ng1
  149. when :z
  150. :ng2
  151. else
  152. :ok
  153. end
  154. }
  155. assert_equal %q{[:false, :false, :false, :false, :false, :false, :false, :false, :false, :false, :false, :then, :false, :false, :false, :then, :false, :false, :false, :then, :false, :false, :false, :then, :false, :false, :then, :then, :false, :false, :then, :then, :false, :false, :then, :then, :false, :false, :then, :then, :false, :then, :then, :then, :false, :then, :then, :then, :false, :then, :then, :then, :false, :then, :then, :then, :then, :then, :then, :then, :then, :then, :then, :then, :false, :false, :false, :then, :false, :false, :false, :then, :false, :false, :false, :false, :false, :false, :false, :false, :false, :false, :then, :then, :false, :false, :then, :then, :false, :false, :false, :then, :false, :false, :false, :then, :false, :then, :then, :then, :false, :then, :then, :then, :false, :false, :then, :then, :false, :false, :then, :then, :then, :then, :then, :then, :then, :then, :then, :then, :false, :then, :then, :then, :false, :then, :then, :then, :false, :false, :false, :then, :false, :false, :false, :then, :false, :false, :then, :then, :false, :false, :then, :then, :false, :false, :false, :false, :false, :false, :false, :false, :false, :false, :false, :then, :false, :false, :false, :then, :false, :then, :then, :then, :false, :then, :then, :then, :then, :then, :then, :then, :then, :then, :then, :then, :false, :false, :then, :then, :false, :false, :then, :then, :false, :then, :then, :then, :false, :then, :then, :then, :false, :false, :then, :then, :false, :false, :then, :then, :false, :false, :false, :then, :false, :false, :false, :then, :false, :false, :false, :then, :false, :false, :false, :then, :false, :false, :false, :false, :false, :false, :false, :false, :then, :then, :then, :then, :then, :then, :then, :then, :false, :then, :then, :then, :false, :then, :then, :then, :false, :then, :then, :then, :false, :then, :then, :then, :false, :false, :then, :then, :false, :false, :then, :then, :false, :false, :then, :then, :false, :false, :then, :then, :false, :then, :then, :then, :false, :then, :then, :then, :false, :then, :then, :then, :false, :then, :then, :then, :then, :then, :then, :then, :then, :then, :then, :then, :false, :false, :false, :false, :false, :false, :false, :false, :false, :false, :false, :then, :false, :false, :false, :then, :false, :false, :false, :then, :false, :false, :false, :then, :false, :false, :then, :then, :false, :false, :then, :then, :false, :then, :then, :then, :false, :then, :then, :then, :false, :false, :then, :then, :false, :false, :then, :then, :then, :then, :then, :then, :then, :then, :then, :then, :false, :then, :then, :then, :false, :then, :then, :then, :false, :false, :false, :then, :false, :false, :false, :then, :false, :false, :false, :false, :false, :false, :false, :false, :false, :false, :then, :then, :false, :false, :then, :then, :false, :false, :false, :then, :false, :false, :false, :then, :false, :then, :then, :then, :false, :then, :then, :then, :then, :then, :then, :then, :then, :then, :then, :then, :false, :false, :then, :then, :false, :false, :then, :then, :false, :then, :then, :then, :false, :then, :then, :then, :false, :false, :false, :then, :false, :false, :false, :then, :false, :false, :then, :then, :false, :false, :then, :then, :false, :false, :false, :false, :false, :false, :false, :false, :false, :false, :false, :then, :false, :false, :false, :then, :then, :then, :then, :then, :then, :then, :then, :then, :false, :then, :then, :then, :false, :then, :then, :then, :false, :then, :then, :then, :false, :then, :then, :then, :false, :false, :then, :then, :false, :false, :then, :then, :false, :false, :then, :then, :false, :false, :then, :then, :false, :false, :false, :then, :false, :false, :false, :then, :false, :false, :false, :then, :false, :false, :false, :then, :false, :false, :false, :false, :false, :false, :false, :false, :then, :then, :then, :then, :then, :then, :then, :then, :then, :then, :then, :false, :then, :then, :then, :false, :then, :then, :then, :false, :then, :then, :then, :false, :then, :then, :false, :false, :then, :then, :false, :false, :then, :then, :false, :false, :then, :then, :false, :false, :then, :false, :false, :false, :then, :false, :false, :false, :then, :false, :false, :false, :then, :false, :false, :false, :false, :false, :false, :false, :false, :false, :false, :false, :then, :then, :then, :false, :then, :then, :then, :false, :then, :then, :then, :then, :then, :then, :then, :then, :then, :then, :false, :false, :then, :then, :false, :false, :then, :then, :then, :false, :then, :then, :then, :false, :then, :false, :false, :false, :then, :false, :false, :false, :then, :then, :false, :false, :then, :then, :false, :false, :false, :false, :false, :false, :false, :false, :false, :false, :then, :false, :false, :false, :then, :false, :false, :false, :then, :then, :then, :false, :then, :then, :then, :false, :then, :then, :false, :false, :then, :then, :false, :false, :then, :then, :then, :then, :then, :then, :then, :then, :then, :then, :then, :false, :then, :then, :then, :false, :then, :false, :false, :false, :then, :false, :false, :false, :false, :false, :false, :false, :false, :false, :false, :false, :then, :then, :false, :false, :then, :then, :false, :false, :then, :false, :false, :false, :then, :false, :false, :false, :then, :then, :false, :false, :then, :then, :false, :false, :then, :then, :then, :false, :then, :then, :then, :false, :then, :then, :then, :false, :then, :then, :then, :false, :then, :then, :then, :then, :then, :then, :then, :then, :false, :false, :false, :false, :false, :false, :false, :false, :then, :false, :false, :false, :then, :false, :false, :false, :then, :false, :false, :false, :then, :false, :false, :false, :then, :then, :false, :false, :then, :then, :false, :false, :then, :then, :false, :false, :then, :then, :false, :false, :then, :false, :false, :false, :then, :false, :false, :false, :then, :false, :false, :false, :then, :false, :false, :false, :false, :false, :false, :false, :false, :false, :false, :false, :then, :then, :then, :then, :then, :then, :then, :then, :then, :then, :then, :false, :then, :then, :then, :false, :then, :then, :then, :false, :then, :then, :then, :false, :then, :then, :false, :false, :then, :then, :false, :false, :then, :false, :false, :false, :then, :false, :false, :false, :then, :then, :false, :false, :then, :then, :false, :false, :false, :false, :false, :false, :false, :false, :false, :false, :then, :false, :false, :false, :then, :false, :false, :false, :then, :then, :then, :false, :then, :then, :then, :false, :then, :then, :then, :then, :then, :then, :then, :then, :then, :then, :false, :false, :then, :then, :false, :false, :then, :then, :then, :false, :then, :then, :then, :false, :then, :false, :false, :false, :then, :false, :false, :false, :false, :false, :false, :false, :false, :false, :false, :false, :then, :then, :false, :false, :then, :then, :false, :false, :then, :false, :false, :false, :then, :false, :false, :false, :then, :then, :then, :false, :then, :then, :then, :false, :then, :then, :false, :false, :then, :then, :false, :false, :then, :then, :then, :then, :then, :then, :then, :then, :then, :then, :then, :false, :then, :then, :then, :false, :false, :false, :false, :false, :false, :false, :false, :false, :then, :false, :false, :false, :then, :false, :false, :false, :then, :false, :false, :false, :then, :false, :false, :false, :then, :then, :false, :false, :then, :then, :false, :false, :then, :then, :false, :false, :then, :then, :false, :false, :then, :then, :then, :false, :then, :then, :then, :false, :then, :then, :then, :false, :then, :then, :then, :false, :then, :then, :then, :then, :then, :then, :then, :then, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep, :then, :sep]}, %q{
  156. def make_perm ary, num
  157. if num == 1
  158. ary.map{|e| [e]}
  159. else
  160. base = make_perm(ary, num-1)
  161. res = []
  162. base.each{|b|
  163. ary.each{|e|
  164. res << [e] + b
  165. }
  166. }
  167. res
  168. end
  169. end
  170. def each_test
  171. conds = make_perm(['fv', 'tv'], 3)
  172. bangs = make_perm(['', '!'], 3)
  173. exprs = make_perm(['and', 'or'], 3)
  174. ['if', 'unless'].each{|syn|
  175. conds.each{|cs|
  176. bangs.each{|bs|
  177. exprs.each{|es|
  178. yield(syn, cs, bs, es)
  179. }
  180. }
  181. }
  182. }
  183. end
  184. fv = false
  185. tv = true
  186. $ans = []
  187. each_test{|syn, conds, bangs, exprs|
  188. c1, c2, c3 = conds
  189. bang1, bang2, bang3 = bangs
  190. e1, e2 = exprs
  191. eval %Q{
  192. #{syn} #{bang1}#{c1} #{e1} #{bang2}#{c2} #{e2} #{bang3}#{c3}
  193. $ans << :then
  194. else
  195. $ans << :false
  196. end
  197. }
  198. }
  199. each_test{|syn, conds, bangs, exprs|
  200. c1, c2, c3 = conds
  201. bang1, bang2, bang3 = bangs
  202. e1, e2 = exprs
  203. eval %Q{
  204. #{syn} #{bang1}#{c1} #{e1} #{bang2}#{c2} #{e2} #{bang3}#{c3}
  205. $ans << :then
  206. end
  207. $ans << :sep
  208. }
  209. }
  210. $ans
  211. }
  212. assert_equal %q{}, %q{
  213. defined?(m)
  214. }
  215. assert_equal %q{method}, %q{
  216. def m
  217. end
  218. defined?(m)
  219. }
  220. assert_equal %q{}, %q{
  221. defined?(a.class)
  222. }
  223. assert_equal %q{method}, %q{
  224. a = 1
  225. defined?(a.class)
  226. }
  227. assert_equal %q{["method", "method", "method", "method", nil, nil, "method", "method", "method", nil]}, %q{
  228. class C
  229. def test
  230. [defined?(m1()), defined?(self.m1), defined?(C.new.m1),
  231. defined?(m2()), defined?(self.m2), defined?(C.new.m2),
  232. defined?(m3()), defined?(self.m3), defined?(C.new.m3)]
  233. end
  234. def m1
  235. end
  236. private
  237. def m2
  238. end
  239. protected
  240. def m3
  241. end
  242. end
  243. C.new.test + [defined?(C.new.m3)]
  244. }
  245. assert_equal %q{[nil, nil, nil, nil, "global-variable", "global-variable", nil, nil]}, %q{
  246. $ans = [defined?($1), defined?($2), defined?($3), defined?($4)]
  247. /(a)(b)/ =~ 'ab'
  248. $ans + [defined?($1), defined?($2), defined?($3), defined?($4)]
  249. }
  250. assert_equal %q{nilselftruefalse}, %q{
  251. defined?(nil) + defined?(self) +
  252. defined?(true) + defined?(false)
  253. }
  254. assert_equal %q{}, %q{
  255. defined?(@a)
  256. }
  257. assert_equal %q{instance-variable}, %q{
  258. @a = 1
  259. defined?(@a)
  260. }
  261. assert_equal %q{}, %q{
  262. defined?(@@a)
  263. }
  264. assert_equal %q{class variable}, %q{
  265. @@a = 1
  266. defined?(@@a)
  267. }
  268. assert_equal %q{}, %q{
  269. defined?($a)
  270. }
  271. assert_equal %q{global-variable}, %q{
  272. $a = 1
  273. defined?($a)
  274. }
  275. assert_equal %q{}, %q{
  276. defined?(C_definedtest)
  277. }
  278. assert_equal %q{constant}, %q{
  279. C_definedtest = 1
  280. defined?(C_definedtest)
  281. }
  282. assert_equal %q{}, %q{
  283. defined?(::C_definedtest)
  284. }
  285. assert_equal %q{constant}, %q{
  286. C_definedtest = 1
  287. defined?(::C_definedtest)
  288. }
  289. assert_equal %q{}, %q{
  290. defined?(C_definedtestA::C_definedtestB::C_definedtestC)
  291. }
  292. assert_equal %q{constant}, %q{
  293. class C_definedtestA
  294. class C_definedtestB
  295. C_definedtestC = 1
  296. end
  297. end
  298. defined?(C_definedtestA::C_definedtestB::C_definedtestC)
  299. }
  300. assert_equal %q{30}, %q{
  301. sum = 0
  302. 30.times{|ib|
  303. if ib % 10 == 0 .. true
  304. sum += ib
  305. end
  306. }
  307. sum
  308. }
  309. assert_equal %q{63}, %q{
  310. sum = 0
  311. 30.times{|ib|
  312. if ib % 10 == 0 ... true
  313. sum += ib
  314. end
  315. }
  316. sum
  317. }
  318. assert_equal %q{[["NUM", "Type: NUM\n"], ["NUM", "123\n"], ["NUM", "456\n"], ["NUM", "Type: ARP\n"], ["NUM", "aaa\n"], ["NUM", "bbb\n"], ["NUM", "\f\n"], ["ARP", "Type: ARP\n"], ["ARP", "aaa\n"], ["ARP", "bbb\n"]]}, %q{
  319. t = nil
  320. unless ''.respond_to? :lines
  321. class String
  322. def lines
  323. self
  324. end
  325. end
  326. end
  327. ary = []
  328. "this must not print
  329. Type: NUM
  330. 123
  331. 456
  332. Type: ARP
  333. aaa
  334. bbb
  335. \f
  336. this must not print
  337. hoge
  338. Type: ARP
  339. aaa
  340. bbb
  341. ".lines.each{|l|
  342. if (t = l[/^Type: (.*)/, 1])..(/^\f/ =~ l)
  343. ary << [t, l]
  344. end
  345. }
  346. ary
  347. }
  348. assert_equal %q{1}, %q{if true then 1 ; end}
  349. assert_equal %q{}, %q{if false then 1 ; end}
  350. assert_equal %q{1}, %q{if true then 1 ; else; 2; end}
  351. assert_equal %q{2}, %q{if false then 1 ; else; 2; end}
  352. assert_equal %q{}, %q{if true then ; elsif true then ; 1 ; end}
  353. assert_equal %q{1}, %q{if false then ; elsif true then ; 1 ; end}
  354. assert_equal %q{}, %q{unless true then 1 ; end}
  355. assert_equal %q{1}, %q{unless false then 1 ; end}
  356. assert_equal %q{2}, %q{unless true then 1 ; else; 2; end}
  357. assert_equal %q{1}, %q{unless false then 1 ; else; 2; end}
  358. assert_equal %q{1}, %q{1 if true}
  359. assert_equal %q{}, %q{1 if false}
  360. assert_equal %q{}, %q{1 if nil}
  361. assert_equal %q{}, %q{1 unless true}
  362. assert_equal %q{1}, %q{1 unless false}
  363. assert_equal %q{1}, %q{1 unless nil}
  364. assert_equal %q{1}, %q{1 || 2 || 3 || 4}
  365. assert_equal %q{1}, %q{1 || false || 3 || 4}
  366. assert_equal %q{2}, %q{nil || 2 || 3 || 4}
  367. assert_equal %q{2}, %q{false || 2 || 3 || 4}
  368. assert_equal %q{false}, %q{nil || false || nil || false}
  369. assert_equal %q{1}, %q{1 or 2 or 3 or 4}
  370. assert_equal %q{1}, %q{1 or false or 3 or 4}
  371. assert_equal %q{2}, %q{nil or 2 or 3 or 4}
  372. assert_equal %q{2}, %q{false or 2 or 3 or 4}
  373. assert_equal %q{false}, %q{nil or false or nil or false}
  374. assert_equal %q{elseng}, %q{
  375. case
  376. when 1==2, 2==3
  377. :ng1
  378. when false, 4==5
  379. :ok
  380. when false
  381. :ng2
  382. else
  383. :elseng
  384. end
  385. }
  386. assert_equal %q{ok}, %q{
  387. case
  388. when nil, nil
  389. :ng1
  390. when 1,2,3
  391. :ok
  392. when false, false
  393. :ng2
  394. else
  395. :elseng
  396. end
  397. }
  398. assert_equal %q{elseok}, %q{
  399. case
  400. when nil
  401. :ng1
  402. when false
  403. :ng2
  404. else
  405. :elseok
  406. end}
  407. assert_equal %q{}, %q{
  408. case
  409. when 1
  410. end
  411. }
  412. assert_equal %q{ok}, %q{
  413. r = nil
  414. ary = []
  415. case
  416. when false
  417. r = :ng1
  418. when false, false
  419. r = :ng2
  420. when *ary
  421. r = :ng3
  422. when false, *ary
  423. r = :ng4
  424. when true, *ary
  425. r = :ok
  426. end
  427. r
  428. }
  429. assert_equal %q{ok}, %q{
  430. ary = []
  431. case
  432. when false, *ary
  433. :ng
  434. else
  435. :ok
  436. end
  437. }
  438. assert_equal %q{ok}, %q{
  439. ary = [false, nil]
  440. case
  441. when *ary
  442. :ng
  443. else
  444. :ok
  445. end
  446. }
  447. assert_equal %q{ok}, %q{
  448. ary = [false, nil]
  449. case
  450. when *ary
  451. :ng
  452. when true
  453. :ok
  454. else
  455. :ng2
  456. end
  457. }
  458. assert_equal %q{ng}, %q{
  459. ary = [false, nil]
  460. case
  461. when *ary
  462. :ok
  463. else
  464. :ng
  465. end
  466. }
  467. assert_equal %q{ok}, %q{
  468. ary = [false, true]
  469. case
  470. when *ary
  471. :ok
  472. else
  473. :ng
  474. end
  475. }
  476. assert_equal %q{ok}, %q{
  477. ary = [false, true]
  478. case
  479. when false, false
  480. when false, *ary
  481. :ok
  482. else
  483. :ng
  484. end
  485. }
  486. assert_equal %q{}, %q{
  487. i = 0
  488. while i < 10
  489. i+=1
  490. end}
  491. assert_equal %q{10}, %q{
  492. i = 0
  493. while i < 10
  494. i+=1
  495. end; i}
  496. assert_equal %q{}, %q{
  497. i = 0
  498. until i > 10
  499. i+=1
  500. end}
  501. assert_equal %q{11}, %q{
  502. i = 0
  503. until i > 10
  504. i+=1
  505. end; i}
  506. assert_equal %q{1}, %q{
  507. i = 0
  508. begin
  509. i+=1
  510. end while false
  511. i
  512. }
  513. assert_equal %q{1}, %q{
  514. i = 0
  515. begin
  516. i+=1
  517. end until true
  518. i
  519. }
  520. def assert_syntax_error expected, code, message = ''
  521. assert_equal "#{expected}",
  522. "begin eval(%q{#{code}}, nil, '', 0)"'; rescue SyntaxError => e; e.message[/\A:(?:\d+:)? (.*)/, 1] end', message
  523. end
  524. assert_syntax_error "unterminated string meets end of file", '().."', '[ruby-dev:29732]'
  525. assert_equal %q{[]}, %q{$&;[]}, '[ruby-dev:31068]'
  526. assert_syntax_error "syntax error, unexpected tSTAR, expecting '}'", %q{{*0}}, '[ruby-dev:31072]'
  527. assert_syntax_error "`@0' is not allowed as an instance variable name", %q{@0..0}, '[ruby-dev:31095]'
  528. assert_syntax_error "identifier $00 is not valid to get", %q{$00..0}, '[ruby-dev:31100]'
  529. assert_syntax_error "identifier $00 is not valid to set", %q{0..$00=1}
  530. assert_equal %q{0}, %q{[*0];0}, '[ruby-dev:31102]'
  531. assert_syntax_error "syntax error, unexpected ')'", %q{v0,(*,v1,) = 0}, '[ruby-dev:31104]'
  532. assert_equal %q{1}, %q{
  533. class << (ary=[]); def []; 0; end; def []=(x); super(0,x);end;end; ary[]+=1
  534. }, '[ruby-dev:31110]'
  535. assert_syntax_error "Can't set variable $1", %q{0..$1=1}, '[ruby-dev:31118]'
  536. assert_valid_syntax %q{1.times{1+(1&&next)}}, '[ruby-dev:31119]'
  537. assert_valid_syntax %q{x=-1;loop{x+=1&&redo if (x+=1).zero?}}, '[ruby-dev:31119]'
  538. assert_syntax_error %q{syntax error, unexpected $end}, %q{!}, '[ruby-dev:31243]'
  539. assert_equal %q{[nil]}, %q{[()]}, '[ruby-dev:31252]'
  540. assert_equal %q{true}, %q{!_=()}, '[ruby-dev:31263]'
  541. assert_equal 'ok', %q{while true; redo; end if 1 == 2; :ok}, '[ruby-dev:31360]'
  542. assert_equal 'ok', %q{
  543. 1.times {
  544. begin
  545. ensure
  546. next
  547. end
  548. }; :ok
  549. }, '[ruby-dev:31373]'
  550. assert_equal 'ok', %q{
  551. flag = false
  552. 1.times {
  553. next if flag
  554. flag = true
  555. begin
  556. ensure
  557. redo
  558. end
  559. }; :ok
  560. }, '[ruby-dev:31373]'
  561. assert_equal 'ok', %q{
  562. 1.times{
  563. p(1, (next; 2))
  564. }; :ok
  565. }
  566. assert_equal '3', %q{
  567. i = 0
  568. 1 + (while true
  569. break 2 if (i+=1) > 1
  570. next
  571. end)
  572. }
  573. assert_equal '3', %q{
  574. i = 0
  575. 1 + (while true
  576. break 2 if (i+=1) > 1
  577. p(1, (next; 2))
  578. end)
  579. }
  580. # redo
  581. assert_equal 'ok', %q{
  582. i = 0
  583. 1.times{
  584. break if i>1
  585. i+=1
  586. p(1, (redo; 2))
  587. }; :ok
  588. }
  589. assert_equal '3', %q{
  590. i = 0
  591. 1 + (while true
  592. break 2 if (i+=1) > 1
  593. redo
  594. end)
  595. }
  596. assert_equal '3', %q{
  597. i = 0
  598. 1 + (while true
  599. break 2 if (i+=1) > 1
  600. p(1, (redo; 2))
  601. end)
  602. }
  603. assert_equal '1', %q{
  604. a = [0]
  605. a[*a]+=1
  606. }
  607. assert_equal '2', %q{
  608. ary = [0]
  609. case 1
  610. when *ary, 1
  611. 1
  612. end +
  613. case
  614. when *ary
  615. 1
  616. end
  617. }
  618. assert_match /invalid multibyte char/, %q{
  619. STDERR.reopen(STDOUT)
  620. eval("\"\xf0".force_encoding("utf-8"))
  621. }, '[ruby-dev:32429]'
  622. # method ! and !=
  623. assert_equal 'true', %q{!false}
  624. assert_equal 'true', %q{1 == 1}
  625. assert_equal 'true', %q{1 != 2}
  626. assert_equal 'true', %q{
  627. class C; def !=(obj); true; end; end
  628. C.new != 1
  629. }
  630. assert_equal 'true', %q{
  631. class C; def !@; true; end; end
  632. !C.new
  633. }
  634. assert_normal_exit %q{
  635. eval "while true; return; end rescue p $!"
  636. }, '[ruby-dev:31663]'
  637. assert_equal '1', %q{
  638. def bar
  639. raise
  640. end
  641. def foo
  642. 1.times{
  643. begin
  644. return bar
  645. rescue
  646. :ok
  647. end
  648. }
  649. end
  650. foo
  651. }
  652. assert_equal 'ok', %q{
  653. counter = 2
  654. while true
  655. counter -= 1
  656. next if counter != 0
  657. break
  658. end
  659. :ok
  660. }, '[ruby-core:14385]'
  661. assert_equal 'ok', %q{
  662. counter = 2
  663. while true
  664. counter -= 1
  665. next if counter != 0
  666. break :ok
  667. end # direct
  668. }, '[ruby-core:14385]'
  669. assert_equal 'ok', %q{
  670. counter = 2
  671. while true
  672. counter -= 1
  673. break if counter == 0
  674. "#{next}"
  675. end
  676. :ok
  677. }, 'reported by Yusuke ENDOH'
  678. assert_equal 'ok', %q{
  679. counter = 2
  680. while true
  681. counter -= 1
  682. break if counter == 0
  683. next
  684. redo
  685. end
  686. :ok
  687. }, 'reported by Yusuke ENDOH'
  688. assert_equal 'ok', %q{
  689. counter = 2
  690. while true
  691. counter -= 1
  692. break if counter == 0
  693. next
  694. "#{ redo }"
  695. end
  696. :ok
  697. }, 'reported by Yusuke ENDOH'
  698. assert_normal_exit %q{
  699. begin
  700. raise
  701. rescue
  702. counter = 2
  703. while true
  704. counter -= 1
  705. break if counter == 0
  706. next
  707. retry
  708. end
  709. end
  710. }, 'reported by Yusuke ENDOH'
  711. assert_normal_exit %q{
  712. counter = 2
  713. while true
  714. counter -= 1
  715. break if counter == 0
  716. next
  717. "#{ break }"
  718. end
  719. }, 'reported by Yusuke ENDOH'
  720. assert_normal_exit %q{
  721. counter = 2
  722. while true
  723. counter -= 1
  724. next if counter != 0
  725. "#{ break }"
  726. end
  727. }, 'reported by Yusuke ENDOH'
  728. assert_equal 'ok', %q{
  729. 1.times do
  730. [
  731. 1, 2, 3, 4, 5, 6, 7, 8,
  732. begin
  733. false ? next : p
  734. break while true
  735. end
  736. ]
  737. end
  738. :ok
  739. }, '[ruby-dev:32882]'
  740. assert_equal "1\n2\n", %q{
  741. i = 0
  742. while i<2
  743. i += 1
  744. next p(i)
  745. end
  746. }
  747. assert_valid_syntax('1.times {|i|print (42),1;}', '[ruby-list:44479]')
  748. assert_equal 'ok', %q{
  749. def a() end
  750. begin
  751. if defined?(a(1).a)
  752. :ng
  753. else
  754. :ok
  755. end
  756. rescue
  757. :ng
  758. end
  759. }, '[ruby-core:16010]'
  760. assert_equal 'ok', %q{
  761. def a() end
  762. begin
  763. if defined?(a::B)
  764. :ng
  765. else
  766. :ok
  767. end
  768. rescue
  769. :ng
  770. end
  771. }, '[ruby-core:16010]'
  772. assert_normal_exit %q{
  773. defined? C && 0
  774. }
  775. assert_normal_exit %q{
  776. class C
  777. def m
  778. defined?(super())
  779. end
  780. end
  781. C.new.m
  782. }
  783. assert_equal 'ok', %q{
  784. class X < RuntimeError;end
  785. x = [X]
  786. begin
  787. raise X
  788. rescue *x
  789. :ok
  790. end
  791. }, '[ruby-core:14537]'
  792. assert_equal 'ok', %q{
  793. a = [false]
  794. (a[0] &&= true) == false ? :ok : :ng
  795. }, '[ruby-dev:34679]'
  796. assert_normal_exit %q{
  797. a = []
  798. 100.times {|i| a << i << nil << nil }
  799. p a.compact!
  800. }
  801. assert_equal 'ok', %q{
  802. "#{}""#{}ok"
  803. }, '[ruby-dev:38968]'
  804. assert_equal 'ok', %q{
  805. "o" "#{}k"
  806. }, '[ruby-dev:38980]'
  807. bug2415 = '[ruby-core:26961]'
  808. assert_normal_exit %q{
  809. 0.times do
  810. 0.times do
  811. def x(a=1, b, *rest); nil end
  812. end
  813. end
  814. }, bug2415
  815. assert_normal_exit %q{
  816. 0.times do
  817. 0.times do
  818. def x@; nil end
  819. end
  820. end
  821. }, bug2415
  822. assert_normal_exit %q{
  823. 0.times do
  824. 0.times do
  825. def x(a = 0.times do
  826. def y(a=1, b, *rest); nil; end
  827. end)
  828. nil
  829. end
  830. end
  831. end
  832. }, bug2415
  833. assert_normal_exit %q{
  834. 0.times do
  835. 0.times do
  836. def x(a = 0.times do
  837. def x@; nil; end
  838. end)
  839. nil
  840. end
  841. end
  842. end
  843. }, bug2415
  844. assert_normal_exit %q{
  845. a {
  846. b {|c.d| }
  847. e
  848. }
  849. }, '[ruby-dev:39861]'