[前][次][番号順一覧][スレッド一覧]

ruby-changes:6971

From: kouji <ko1@a...>
Date: Mon, 11 Aug 2008 16:58:18 +0900 (JST)
Subject: [ruby-changes:6971] Ruby:r18489 (trunk): * test/readline/test_readline.rb: added test for Readline's class

kouji	2008-08-11 16:58:02 +0900 (Mon, 11 Aug 2008)

  New Revision: 18489

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=18489

  Log:
    * test/readline/test_readline.rb: added test for Readline's class
      methods.

  Modified files:
    trunk/ChangeLog
    trunk/test/readline/test_readline.rb

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 18488)
+++ ChangeLog	(revision 18489)
@@ -1,3 +1,8 @@
+Mon Aug 11 16:56:40 2008  TAKAO Kouji  <kouji@t...>
+
+	* test/readline/test_readline.rb: added test for Readline's class
+	  methods.
+
 Mon Aug 11 16:34:48 2008  Tanaka Akira  <akr@f...>
 
 	* enc/trans/iso2022.trans: renamed from iso2022.erb.c.
Index: test/readline/test_readline.rb
===================================================================
--- test/readline/test_readline.rb	(revision 18488)
+++ test/readline/test_readline.rb	(revision 18489)
@@ -1,14 +1,77 @@
 begin
   require "readline"
+=begin
+  class << Readline
+    [
+     "vi_editing_mode",
+     "emacs_editing_mode",
+     "completion_append_character=",
+     "completion_append_character",
+     "basic_word_break_characters=",
+     "basic_word_break_characters",
+     "completer_word_break_characters=",
+     "completer_word_break_characters",
+     "basic_quote_characters=",
+     "basic_quote_characters",
+     "completer_quote_characters=",
+     "completer_quote_characters",
+     "filename_quote_characters=",
+     "filename_quote_characters",
+    ].each do |method_name|
+      define_method(method_name.to_sym) do |*args|
+        raise NotImplementedError
+      end
+    end
+  end
+=end
 rescue LoadError
+else
+  require "test/unit"
+  require "tempfile"
 end
 
-if defined?(Readline) && !/EditLine/n.match(Readline::VERSION)
+class TestReadline < Test::Unit::TestCase
+  def teardown
+    Readline.instance_variable_set("@completion_proc", nil)
+  end
+  
+  def test_safe_level_4
+    method_args =
+      [
+       ["readline"],
+       ["input=", $stdin],
+       ["output=", $stdout],
+       ["completion_proc=", proc {}],
+       ["completion_proc"],
+       ["completion_case_fold=", true],
+       ["completion_case_fold"],
+       ["vi_editing_mode"],
+       ["emacs_editing_mode"],
+       ["completion_append_character=", "s"],
+       ["completion_append_character"],
+       ["basic_word_break_characters=", "s"],
+       ["basic_word_break_characters"],
+       ["completer_word_break_characters=", "s"],
+       ["completer_word_break_characters"],
+       ["basic_quote_characters=", "\\"],
+       ["basic_quote_characters"],
+       ["completer_quote_characters=", "\\"],
+       ["completer_quote_characters"],
+       ["filename_quote_characters=", "\\"],
+       ["filename_quote_characters"],
+      ]
+    method_args.each do |method_name, *args|
+      assert_raises(SecurityError, NotImplementedError,
+                    "method=<#{method_name}>") do
+        Thread.start {
+          $SAFE = 4
+          Readline.send(method_name.to_sym, *args)
+          assert(true)
+        }.join
+      end
+    end
+  end
 
-require "test/unit"
-require "tempfile"
-
-class TestReadline < Test::Unit::TestCase
   def test_readline
     stdin = Tempfile.new("test_readline_stdin")
     stdout = Tempfile.new("test_readline_stdout")
@@ -43,8 +106,38 @@
       stdin.close(true)
       stdout.close(true)
     end
+  end if !/EditLine/n.match(Readline::VERSION)
+
+  def test_input=
+    assert_raise(TypeError) do
+      Readline.input = "This is not a file."
+    end
   end
+  
+  def test_output=
+    assert_raise(TypeError) do
+      Readline.output = "This is not a file."
+    end
+  end
 
+  def test_completion_proc
+    expected = proc { |input| input }
+    Readline.completion_proc = expected
+    assert_equal(expected, Readline.completion_proc)
+
+    assert_raise(ArgumentError) do
+      Readline.completion_proc = "This does not have call method."
+    end
+  end
+
+  def test_completion_case_fold
+    expected = [true, false, "string", {"a" => "b"}]
+    expected.each do |e|
+      Readline.completion_case_fold = e
+      assert_equal(e, Readline.completion_case_fold)
+    end
+  end
+
   def test_completion_append_character
     begin
       Readline.completion_append_character = "x"
@@ -59,6 +152,36 @@
     end
   end
 
+  # basic_word_break_characters
+  # completer_word_break_characters
+  # basic_quote_characters
+  # completer_quote_characters
+  # filename_quote_characters
+  def test_some_characters_methods
+    method_names = [
+                    "basic_word_break_characters",
+                    "completer_word_break_characters",
+                    "basic_quote_characters",
+                    "completer_quote_characters",
+                    "filename_quote_characters",
+                   ]
+    method_names.each do |method_name|
+      begin
+        begin
+          saved = Readline.send(method_name.to_sym)
+          expecteds = [" ", " .,|\t", ""]
+          expecteds.each do |e|
+            Readline.send((method_name + "=").to_sym, e)
+            assert_equal(e, Readline.send(method_name.to_sym))
+          end
+        ensure
+          Readline.send((method_name + "=").to_sym, saved) if saved
+        end
+      rescue NotImplementedError
+      end
+    end
+  end
+
   private
 
   def replace_stdio(stdin_path, stdout_path)
@@ -81,6 +204,4 @@
       }
     }
   end
-end
-
-end
+end if defined?(::Readline)

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]