From fcbf63e62c627deae76c1b8cb8c0876c536ed811 Mon Sep 17 00:00:00 2001 From: Jari Vetoniemi Date: Mon, 16 Mar 2020 18:49:26 +0900 Subject: Fresh start --- jni/ruby/test/ripper/test_sexp.rb | 44 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 jni/ruby/test/ripper/test_sexp.rb (limited to 'jni/ruby/test/ripper/test_sexp.rb') diff --git a/jni/ruby/test/ripper/test_sexp.rb b/jni/ruby/test/ripper/test_sexp.rb new file mode 100644 index 0000000..2c5bcda --- /dev/null +++ b/jni/ruby/test/ripper/test_sexp.rb @@ -0,0 +1,44 @@ +begin + require 'ripper' + require 'test/unit' + ripper_test = true + module TestRipper; end +rescue LoadError +end + +class TestRipper::Sexp < Test::Unit::TestCase + def test_compile_error + assert_nil Ripper.sexp("/") + assert_nil Ripper.sexp("-") + assert_nil Ripper.sexp("+") + assert_nil Ripper.sexp("*") + assert_nil Ripper.sexp("end") + assert_nil Ripper.sexp("end 1") + assert_nil Ripper.sexp("/*") + assert_nil Ripper.sexp("/*/") + assert_nil Ripper.sexp("/+/") + end + + def test_regexp_content + sexp = Ripper.sexp('//') + assert_nil search_sexp(:@tstring_content, search_sexp(:regexp_literal, sexp)) + + sexp = Ripper.sexp('/foo/') + assert_equal 'foo', search_sexp(:@tstring_content, search_sexp(:regexp_literal, sexp))[1] + + sexp = Ripper.sexp("/foo\nbar/") + assert_equal "foo\nbar", search_sexp(:@tstring_content, search_sexp(:regexp_literal, sexp))[1] + + sexp = Ripper.sexp('/(?a(b|\g))/') + assert_equal '(?a(b|\g))', search_sexp(:@tstring_content, search_sexp(:regexp_literal, sexp))[1] + end + + def search_sexp(sym, sexp) + return sexp if !sexp or sexp[0] == sym + sexp.find do |e| + if Array === e and e = search_sexp(sym, e) + return e + end + end + end +end if ripper_test -- cgit v1.2.3