]> git.eshelyaron.com Git - emacs.git/commitdiff
Semantic Symref testing.
authorzappo <zappo@users.sourceforge.net>
Sun, 18 Apr 2010 00:33:36 +0000 (00:33 +0000)
committerEdward John Steere <edward.steere@gmail.com>
Wed, 25 Jan 2017 15:48:36 +0000 (17:48 +0200)
test/manual/cedet/cit-symref.el [new file with mode: 0644]

diff --git a/test/manual/cedet/cit-symref.el b/test/manual/cedet/cit-symref.el
new file mode 100644 (file)
index 0000000..e24ae48
--- /dev/null
@@ -0,0 +1,99 @@
+;;; cit-symref.el ---
+;;
+;; Copyright (C) 2010 Eric M. Ludlam
+;;
+;; Author: Eric M. Ludlam <eric@siege-engine.com>
+;; X-RCS: $Id: cit-symref.el,v 1.1 2010-04-18 00:33:36 zappo Exp $
+;;
+;; This program 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 2, or (at
+;; your option) any later version.
+
+;; This program 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 this program; see the file COPYING.  If not, write to
+;; the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+;; Boston, MA 02110-1301, USA.
+
+;;; Commentary:
+;;
+;; Test the Symref refactoring tool against this made up project.
+;;
+;; We can't test much in symref in the utest setup because they can't
+;; do the refactoring steps, so we have to do them here instead.
+
+;;; Code:
+
+
+(defun cit-symref ()
+  "Test the symref tool."
+  ;; Start in a C++ file.
+  (find-file (cit-file "src/main.cpp"))
+
+  (let* ((target (car cit-symref-operations))
+        (dest (car (cdr cit-symref-operations)))
+        )
+    ;; 7 - Run the symref tool
+    ;; Create the UI
+    (semantic-symref-symbol target)
+    (cit-symref-count '(2 3 0 0))
+
+    ;; expand them all
+    (semantic-symref-list-expand-all)
+    (cit-symref-count '(2 3 4 0))
+
+    ;; Perform a rename.
+    (semantic-symref-list-rename-open-hits dest)
+    (save-some-buffers t)
+    (cit-symref-count '(2 3 4 0))
+
+    ;; Create a new symref buffer!
+    (find-file (cit-file "src/main.cpp"))
+    (semantic-symref-symbol dest)
+    (cit-symref-count '(2 3 0 0))
+
+    ;; Compile and run the refactored code.
+    (find-file (cit-file "src/main.cpp"))
+    (cit-compile-and-wait)
+    (find-file (cit-file "src/main.cpp"))
+    (cit-run-target "./Prog")
+    ))
+
+(defun cit-symref-count (expected)
+  "Count the current results, and return a list of the results.
+Argument EXPECTED is the expected result count."
+  (save-excursion
+    (goto-char (point-min))
+    (sit-for 0)
+    (let ((files 0)
+         (hits 0)
+         (res 0)
+         (other 0))
+      (while (not (eobp))
+       (beginning-of-line)
+       (cond ((looking-at "[^ ]")
+              (setq files (1+ files)))
+             ((looking-at "  \\[")
+              (setq hits (1+ hits)))
+             ((looking-at "    ")
+              (setq res (1+ res)))
+             (t (setq other (1+ other))))
+       (forward-line 1)
+       (end-of-line))
+      (unless (and (= files (nth 0 expected))
+                  (= hits (nth 1 expected))
+                  (= res (nth 2 expected))
+                  (= other (nth 3 expected)))
+       (error "Symref Missmatch: %S != %S"
+              (list files hits res other)
+              expected)))))
+
+
+(provide 'cit-symref)
+
+;;; cit-symref.el ends here