# Copyright (C) 2015-2017 Ruby-GNOME2 Project Team # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA class TestGtkTextBuffer < Test::Unit::TestCase include GtkTestUtils sub_test_case "instance methods" do def setup @text_buffer = Gtk::TextBuffer.new @text_buffer.text = "Hello World!" end sub_test_case "#insert" do test "no options" do iter = @text_buffer.get_iter_at(:offset => "Hello ".bytesize) @text_buffer.insert(iter, "Ruby ") assert_equal("Hello Ruby World!", @text_buffer.text) end test "GLib::Bytes" do iter = @text_buffer.get_iter_at(:offset => "Hello ".bytesize) @text_buffer.insert(iter, GLib::Bytes.new("Ruby ")) assert_equal("Hello Ruby World!", @text_buffer.text) end test ":interactive" do iter = @text_buffer.get_iter_at(:offset => "Hello ".bytesize) @text_buffer.insert(iter, "Ruby ", :interactive => true) assert_equal("Hello Ruby World!", @text_buffer.text) end test ":default_editable => true" do iter = @text_buffer.get_iter_at(:offset => "Hello ".bytesize) @text_buffer.insert(iter, "Ruby ", :interactive => true, :default_editable => true) assert_equal("Hello Ruby World!", @text_buffer.text) end test ":default_editable => false" do iter = @text_buffer.get_iter_at(:offset => "Hello ".bytesize) @text_buffer.insert(iter, "Ruby ", :interactive => true, :default_editable => false) assert_equal("Hello World!", @text_buffer.text) end end sub_test_case "#insert_markup" do setup do only_gtk_version(3, 16) end test "String" do iter = @text_buffer.get_iter_at(:offset => "Hello ".bytesize) @text_buffer.insert_markup(iter, "Ruby ") assert_equal("Hello Ruby World!", @text_buffer.text) end test "GLib::Bytes" do iter = @text_buffer.get_iter_at(:offset => "Hello ".bytesize) @text_buffer.insert_markup(iter, GLib::Bytes.new("Ruby ")) assert_equal("Hello Ruby World!", @text_buffer.text) end test "n_bytes" do iter = @text_buffer.get_iter_at(:offset => "Hello ".bytesize) @text_buffer.insert_markup(iter, "Ruby language", 12) assert_equal("Hello Ruby World!", @text_buffer.text) end end sub_test_case "#insert_at_cursor" do test "no options" do iter = @text_buffer.get_iter_at(:offset => "Hello ".bytesize) @text_buffer.place_cursor(iter) @text_buffer.insert_at_cursor("Ruby ") assert_equal("Hello Ruby World!", @text_buffer.text) end test ":interactive" do iter = @text_buffer.get_iter_at(:offset => "Hello ".bytesize) @text_buffer.place_cursor(iter) @text_buffer.insert_at_cursor("Ruby ", :interactive => true) assert_equal("Hello Ruby World!", @text_buffer.text) end test ":default_editable => true" do iter = @text_buffer.get_iter_at(:offset => "Hello ".bytesize) @text_buffer.place_cursor(iter) @text_buffer.insert_at_cursor("Ruby ", :interactive => true, :default_editable => true) assert_equal("Hello Ruby World!", @text_buffer.text) end test ":default_editable => false" do iter = @text_buffer.get_iter_at(:offset => "Hello ".bytesize) @text_buffer.place_cursor(iter) @text_buffer.insert_at_cursor("Ruby ", :interactive => true, :default_editable => false) assert_equal("Hello World!", @text_buffer.text) end end test "#text=" do @text_buffer.text = "Hello Ruby World!" assert_equal("Hello Ruby World!", @text_buffer.text) end test "#serialize_formats" do assert_equal([Gdk::Atom], @text_buffer.serialize_formats.collect(&:class)) end test "#deserialize_formats" do @text_buffer.register_deserialize_tagset(nil) assert_equal([Gdk::Atom], @text_buffer.deserialize_formats.collect(&:class)) end test "#serialize and #deserialize" do format = @text_buffer.serialize_formats[0] serialized = @text_buffer.serialize(@text_buffer, format, @text_buffer.start_iter, @text_buffer.end_iter) output_text_buffer = Gtk::TextBuffer.new output_format = output_text_buffer.register_deserialize_tagset(nil) output_text_buffer.deserialize(output_text_buffer, output_format, output_text_buffer.start_iter, serialized) assert_equal(@text_buffer.text, output_text_buffer.text) end sub_test_case "#selection_bounds" do test "selected" do insert_iter = @text_buffer.get_iter_at(:offset => "Hel".bytesize) selection_bound_iter = @text_buffer.get_iter_at(:offset => "Hello Wor".bytesize) @text_buffer.select_range(insert_iter, selection_bound_iter) assert_equal([insert_iter.offset, selection_bound_iter.offset], @text_buffer.selection_bounds.collect(&:offset)) end test "not selected" do assert_nil(@text_buffer.selection_bounds) end end sub_test_case "#create_tag" do test "default" do tag = @text_buffer.create_tag assert_nil(tag.name) end test "named" do tag = @text_buffer.create_tag("new-tag") assert_equal("new-tag", tag.name) end end end end