## # Literals ISO Test assert('Literals Numerical', '8.7.6.2') do # signed and unsigned integer 1 == 1 and -1 == -1 and +1 == +1 and # signed and unsigned float 1.0 == 1.0 and -1.0 == -1.0 and # binary 0b10000000 == 128 and 0B10000000 == 128 # octal 0o10 == 8 and 0O10 == 8 and 0_10 == 8 # hex 0xff == 255 and 0Xff == 255 and # decimal 0d999 == 999 and 0D999 == 999 and # decimal seperator 10_000_000 == 10000000 and 1_0 == 10 and # integer with exponent 1e1 == 10.0 and 1e-1 == 0.1 and 1e+1 == 10.0 # float with exponent 1.0e1 == 10.0 and 1.0e-1 == 0.1 and 1.0e+1 == 10.0 end assert('Literals Strings Single Quoted', '8.7.6.3.2') do 'abc' == 'abc' and '\'' == '\'' and '\\' == '\\' end assert('Literals Strings Double Quoted', '8.7.6.3.3') do a = "abc" "abc" == "abc" and "\"" == "\"" and "\\" == "\\" and "#{a}" == "abc" end assert('Literals Strings Quoted Non-Expanded', '8.7.6.3.4') do a = %q{abc} b = %q(abc) c = %q[abc] d = %q e = %q/abc/ f = %q/ab\/c/ g = %q{#{a}} a == 'abc' and b == 'abc' and c == 'abc' and d == 'abc' and e == 'abc' and f == 'ab/c' and g == '#{a}' end assert('Literals Strings Quoted Expanded', '8.7.6.3.5') do a = %Q{abc} b = %Q(abc) c = %Q[abc] d = %Q e = %Q/abc/ f = %Q/ab\/c/ g = %Q{#{a}} a == 'abc' and b == 'abc' and c == 'abc' and d == 'abc' and e == 'abc' and f == 'ab/c' and g == 'abc' end assert('Literals Strings Here documents', '8.7.6.3.6') do a = < e = %W// f = %W[[ab cd][ef]] g = %W{ ab #{-1}1 2#{2} } h = %W(a\nb test\ abc c\ d x\y x\\y x\\\y) test1 = (a == ['abc3def', '}g'] and b == ['abc', '5', 'def', '(g'] and c == ['7'] and d == ['9'] and e == [] and f == ['[ab', 'cd][ef]'] and g == ['ab', '-11', '22'] and h == ["a\nb", 'test abc', "c\nd", "xy", "x\\y", "x\\y"] ) a = %w{abc#{1+2}def \}g} b = %w(abc #{2+3} def \(g) c = %w[#{3+4}] d = %w< #{4+5} > e = %w// f = %w[[ab cd][ef]] g = %w{ ab #{-1}1 2#{2} } h = %w(a\nb test\ abc c\ d x\y x\\y x\\\y) test2 = (a == ['abc#{1+2}def', '}g'] and b == ['abc', '#{2+3}', 'def', '(g'] and c == ['#{3+4}'] and d == ['#{4+5}'] and e == [] and f == ['[ab', 'cd][ef]'] and g == ['ab', '#{-1}1', '2#{2}'] and h == ["a\\nb", "test abc", "c\nd", "x\\y", "x\\y", "x\\\\y"] ) test1 and test2 end assert('Literals Array of symbols') do a = %I{abc#{1+2}def \}g} b = %I(abc #{2+3} def \(g) c = %I[#{3+4}] d = %I< #{4+5} > e = %I// f = %I[[ab cd][ef]] g = %I{ ab #{-1}1 2#{2} } test1 = (a == [:'abc3def', :'}g'] and b == [:'abc', :'5', :'def', :'(g'] and c == [:'7'] and d == [:'9'] and e == [] and f == [:'[ab', :'cd][ef]'] and g == [:'ab', :'-11', :'22'] ) a = %i{abc#{1+2}def \}g} b = %i(abc #{2+3} def \(g) c = %i[#{3+4}] d = %i< #{4+5} > e = %i// f = %i[[ab cd][ef]] g = %i{ ab #{-1}1 2#{2} } test2 = (a == [:'abc#{1+2}def', :'}g'] and b == [:'abc', :'#{2+3}', :'def', :'(g'] and c == [:'#{3+4}'] and d == [:'#{4+5}'] and e == [] and f == [:'[ab', :'cd][ef]'] and g == [:'ab', :'#{-1}1', :'2#{2}'] ) test1 and test2 end assert('Literals Symbol', '8.7.6.6') do # do not compile error :$asd :@asd :@@asd :asd= :asd! :asd? :+ :+@ :if :BEGIN a = :"asd qwe" b = :'foo bar' c = :"a#{1+2}b" d = %s(asd) e = %s( foo \)) f = %s[asd \[ qwe] g = %s/foo#{1+2}bar/ h = %s{{foo bar}} a == :'asd qwe' and b == :"foo bar" and c == :a3b and d == :asd and e == :' foo )' and f == :"asd [\nqwe" and g == :'foo#{1+2}bar' and h == :'{foo bar}' end # Not Implemented ATM assert('Literals Regular expression', '8.7.6.5') do