From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: =?UTF-8?B?UHJ6ZW15c8WCYXcgV29qbm93c2tp?= Newsgroups: gmane.emacs.devel Subject: [PATCH] Unit tests for sgml-delete-tag Date: Mon, 18 May 2015 09:15:17 +0200 Message-ID: <55599185.9060903@cumego.com> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------040707010803070402010503" X-Trace: ger.gmane.org 1431933345 2377 80.91.229.3 (18 May 2015 07:15:45 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Mon, 18 May 2015 07:15:45 +0000 (UTC) To: emacs-devel@gnu.org Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Mon May 18 09:15:33 2015 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1YuFGu-0005Bg-Ls for ged-emacs-devel@m.gmane.org; Mon, 18 May 2015 09:15:32 +0200 Original-Received: from localhost ([::1]:39394 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YuFGt-0006eX-AI for ged-emacs-devel@m.gmane.org; Mon, 18 May 2015 03:15:31 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:44470) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YuFGn-0006eF-9U for emacs-devel@gnu.org; Mon, 18 May 2015 03:15:26 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1YuFGj-0004ZW-3d for emacs-devel@gnu.org; Mon, 18 May 2015 03:15:25 -0400 Original-Received: from smtp23.iq.pl ([86.111.242.228]:47979) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YuFGi-0004Yr-QI for emacs-devel@gnu.org; Mon, 18 May 2015 03:15:21 -0400 Original-Received: (qmail 22003 invoked from network); 18 May 2015 07:15:18 -0000 Original-Received: from unknown (HELO [192.168.1.106]) (esperanto@cumego.com@[159.205.25.146]) (envelope-sender ) by smtp23.iq.pl with AES128-SHA encrypted SMTP for ; 18 May 2015 07:15:18 -0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.6.0 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x X-Received-From: 86.111.242.228 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:186573 Archived-At: This is a multi-part message in MIME format. --------------040707010803070402010503 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Hello everybody, Unit tests for sgml-delete-tag. I did run them from command line too. ;-) Cheers, Przemysław --------------040707010803070402010503 Content-Type: text/x-patch; name="0001-test-automated-sgml-mode-tests.el-Tests-for-sgml-del.patch" Content-Transfer-Encoding: 8bit Content-Disposition: attachment; filename*0="0001-test-automated-sgml-mode-tests.el-Tests-for-sgml-del.pa"; filename*1="tch" >From 5996f483ad5ee1a14436c4239dc2f83e9d097e9f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Przemys=C5=82aw=20Wojnowski?= Date: Sun, 17 May 2015 21:49:05 +0200 Subject: [PATCH] * test/automated/sgml-mode-tests.el: Tests for sgml-delete-tag A test case for (Bug#8203). --- test/automated/sgml-mode-tests.el | 135 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 135 insertions(+) create mode 100644 test/automated/sgml-mode-tests.el diff --git a/test/automated/sgml-mode-tests.el b/test/automated/sgml-mode-tests.el new file mode 100644 index 0000000..0e9272d --- /dev/null +++ b/test/automated/sgml-mode-tests.el @@ -0,0 +1,135 @@ +;;; sgml-mode-tests.el --- Tests for sgml-mode + +;; Copyright (C) 2015 Free Software Foundation, Inc. + +;; Author: Przemysław Wojnowski +;; Keywords: tests + +;; This file is part of GNU Emacs. + +;; GNU Emacs is free software: you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; GNU Emacs 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 General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs. If not, see . + +;;; Commentary: + +;;; Code: + +(require 'sgml-mode) +(require 'ert) + +(defmacro with-content (content &rest body) + "Insert CONTENT into a temporary `sgml-mode' buffer and execute BODY on it. +The point is set to the beginning of the buffer." + `(with-temp-buffer + (sgml-mode) + (insert ,content) + (goto-char (point-min)) + ,@body)) + + +;;; sgml-delete-tag tests: +(ert-deftest should-not-delete-tags-when-wrong-args () + "Don't delete tag, when number of tags to delete is not positive number." + (let ((content "

Valar Morghulis

")) + (with-content + content + (sgml-delete-tag -1) + (should (string= content (buffer-string))) + (sgml-delete-tag 0) + (should (string= content (buffer-string)))))) + +(ert-deftest should-delete-tags-n-times () + ;; Delete only 1, when 1 available: + (with-content + "
" + (sgml-delete-tag 1) + (should (string= "" (buffer-string)))) + ;; Delete from position on whitespaces before tag: + (with-content + " \t\n
" + (sgml-delete-tag 1) + (should (string= "" (buffer-string)))) + ;; Delete from position on tag: + (with-content + "
" + (goto-char 3) + (sgml-delete-tag 1) + (should (string= "" (buffer-string)))) + ;; Delete one by one: + (with-content + "

You know nothing, Jon Snow.

" + (sgml-delete-tag 1) + (should (string= "

You know nothing, Jon Snow.

" (buffer-string))) + (sgml-delete-tag 1) + (should (string= "You know nothing, Jon Snow." (buffer-string)))) + ;; Delete 2 at a time, when 2 available: + (with-content + "

You know nothing, Jon Snow.

" + (sgml-delete-tag 2) + (should (string= "You know nothing, Jon Snow." (buffer-string))))) + +(ert-deftest should-delete-unclosed-tag () + (with-content + "
  • Keep your stones connected.
" + (goto-char 5) ; position on "li" tag + (sgml-delete-tag 1) + (should (string= "
    Keep your stones connected.
" (buffer-string))))) + +(ert-deftest should-signal-error-for-malformed-tags () + (let ((content "

Drakaris!

")) + ;; Delete outside tag: + (with-content + content + (sgml-delete-tag 1) + (should (string= "

Drakaris!

" (buffer-string)))) + ;; Delete inner tag: + (with-content + content + (goto-char 5) ; position the inner tag + (sgml-delete-tag 1) + (should (string= "

Drakaris!

" (buffer-string)))))) + +(ert-deftest should-signal-error-when-deleting-too-much () + (let ((content "Drakaris!")) + ;; No tags to delete: + (with-content + "Drakaris!" + (should-error (sgml-delete-tag 1) :type 'error) + (should (string= "Drakaris!" (buffer-string)))) + ;; Trying to delete 2 tags, when only 1 available: + (with-content + content + (should-error (sgml-delete-tag 2) :type 'error) + (should (string= "Drakaris!" (buffer-string)))) + ;; Trying to delete a tag, but not on/before a tag: + (with-content + content + (goto-char 7) ; D in Drakaris + (should-error (sgml-delete-tag 1) :type 'error) + (should (string= content (buffer-string)))) + ;; Trying to delete a tag from position outside tag: + (with-content + content + (goto-char (point-max)) + (should-error (sgml-delete-tag 1) :type 'error) + (should (string= content (buffer-string)))))) + +(ert-deftest bug-8203-sgml-delete-tag-should-not-delete-apostrophe () + :expected-result :failed + (with-content + "Winter is comin'" + (sgml-delete-tag 1) + (should (string= "Winter is comin'" (buffer-string))))) + +(provide 'sgml-mode-tests) +;;; sgml-mode-tests.el ends here -- 2.1.0 --------------040707010803070402010503--