]> code.delx.au - gnu-emacs-elpa/blobdiff - packages/company-statistics/company-statistics-tests.el
Merge commit '45bc13aec56fcd0b55686d2305cf6e6852d467e8' from company-statistics
[gnu-emacs-elpa] / packages / company-statistics / company-statistics-tests.el
index 6e0b4605792645776970b7bfaaef7682ca4f4a1c..3fa336a43a1cc495e4269de73f2716a005367b53 100644 (file)
@@ -1,6 +1,6 @@
-;;; company-statistics-tests.el --- company-statistics tests
+;;; company-statistics-tests.el --- company-statistics tests  -*- lexical-binding: t -*-
 
-;; Copyright (C) 2014  Free Software Foundation, Inc.
+;; Copyright (C) 2014-2015  Free Software Foundation, Inc.
 
 ;; Author: Ingo Lohmar
 
@@ -21,7 +21,7 @@
 
 
 ;;; Commentary:
-;; emacs -batch -L . -l ert -l company-statistics-tests.el  -f ert-run-tests-batch-and-exit
+;; emacs -batch -L . -L ../company-mode/ -l ert -l company-statistics-tests.el  -f ert-run-tests-batch-and-exit
 
 ;;; Code:
 
@@ -77,16 +77,25 @@ V2 (starting at index I2) satisfy the binary predicate PRED, default
        (let ((company-statistics-size 5))
          (company-statistics--init)
          (let ((major-mode 'foo-mode)
-               (buffer-file-name nil))
+               (company-statistics--context
+                '((:keyword "if")
+                  (:symbol "parent")
+                  (:file "foo-file"))))
            (company-statistics--finished "foo"))
          (let ((major-mode 'foo-mode)
-               (buffer-file-name "bar-file"))
+               (company-statistics--context
+                '((:symbol "statistics")
+                  (:file "bar-file"))))
            (company-statistics--finished "bar"))
          (let ((major-mode 'baz-mode)
-               (buffer-file-name nil))
+               (company-statistics--context
+                '((:keyword "unless")
+                  (:symbol "company"))))
            (company-statistics--finished "baz"))
          (let ((major-mode 'baz-mode)
-               (buffer-file-name "quux-file"))
+               (company-statistics--context
+                '((:keyword "when")
+                  (:file "quux-file"))))
            (company-statistics--finished "quux"))
          ,@body)
      ;; tear down to clean slate
@@ -155,43 +164,82 @@ V2 (starting at index I2) satisfy the binary predicate PRED, default
       (should (equal company-statistics--log cs-history))
       (should (equal company-statistics--index cs-index))))))
 
-(ert-deftest c-s-score-change-default ()
+(ert-deftest c-s-score-change-light ()
   "Test a few things about the default score updates."
-  (let ((major-mode 'foobar-mode)
-        (buffer-file-name nil))         ;must not generate context entries
-    (should (equal (company-statistics-score-change-default "dummy")
-                   '((nil . 1) (foobar-mode . 1))))
-    (let ((buffer-file-name "test-file.XYZ"))
-      (should (equal (company-statistics-score-change-default "dummy")
-                     '((nil . 1) (foobar-mode . 1) ("test-file.XYZ" . 1)))))))
+  (let ((major-mode 'foobar-mode))
+    (should (equal (company-statistics-score-change-light "dummy")
+                   '((nil . 1) (foobar-mode . 1))))))
 
-(ert-deftest c-s-score-calc-default ()
+(ert-deftest c-s-score-calc-light ()
   "Test score calculation default."
+  (cs-fixture
+   ;; FIXME assumes that light context is a subset of the heavy context?
+   (let ((major-mode 'foo-mode))
+     (should (eq (company-statistics-score-calc-light "foo") 2))
+     (should (eq (company-statistics-score-calc-light "bar") 2))
+     (should (eq (company-statistics-score-calc-light "baz") 1))
+     (should (eq (company-statistics-score-calc-light "quux") 1)))
+   (let ((major-mode 'baz-mode))
+     (should (eq (company-statistics-score-calc-light "foo") 1))
+     (should (eq (company-statistics-score-calc-light "bar") 1))
+     (should (eq (company-statistics-score-calc-light "baz") 2))
+     (should (eq (company-statistics-score-calc-light "quux") 2)))))
+
+(ert-deftest c-s-score-change-heavy ()
+  "Test a few things about the heavy score updates."
+  (let ((major-mode 'foobar-mode))
+    (should (equal (company-statistics-score-change-heavy "dummy")
+                   '((nil . 1) (foobar-mode . 1))))
+    (let ((company-statistics--context
+           '((:keyword "kwd")
+             nil                        ;deliberately omit parent symbol
+             (:file "test-file.XYZ"))))
+      (should (equal (company-statistics-score-change-heavy "dummy")
+                     '((nil . 1) (foobar-mode . 1)
+                       ((:keyword "kwd") . 1)
+                       ((:file "test-file.XYZ") . 1)))))))
+
+(ert-deftest c-s-score-calc-heavy ()
+  "Test heavy score calculation."
   (cs-fixture
    (let ((major-mode 'foo-mode)
-         (buffer-file-name nil))
-     (should (eq (company-statistics-score-calc-default "foo") 2))
-     (should (eq (company-statistics-score-calc-default "bar") 2))
-     (should (eq (company-statistics-score-calc-default "baz") 1))
-     (should (eq (company-statistics-score-calc-default "quux") 1)))
+         (company-statistics--context
+          '((:symbol "company")
+            (:file "foo-file"))))
+     (should (eq (company-statistics-score-calc-heavy "dummy") 0))
+     (should (eq (company-statistics-score-calc-heavy "foo") 3))
+     (should (eq (company-statistics-score-calc-heavy "bar") 2))
+     (should (eq (company-statistics-score-calc-heavy "baz") 2))
+     (should (eq (company-statistics-score-calc-heavy "quux") 1)))
    (let ((major-mode 'foo-mode)
-         (buffer-file-name "bar-file"))
-     (should (eq (company-statistics-score-calc-default "foo") 2))
-     (should (eq (company-statistics-score-calc-default "bar") 3))
-     (should (eq (company-statistics-score-calc-default "baz") 1))
-     (should (eq (company-statistics-score-calc-default "quux") 1)))
+         (company-statistics--context
+          '((:keyword "unless")
+            (:symbol "parent")
+            (:file "quux-file"))))
+     (should (eq (company-statistics-score-calc-heavy "dummy") 0))
+     (should (eq (company-statistics-score-calc-heavy "foo") 3))
+     (should (eq (company-statistics-score-calc-heavy "bar") 2))
+     (should (eq (company-statistics-score-calc-heavy "baz") 2))
+     (should (eq (company-statistics-score-calc-heavy "quux") 2)))
    (let ((major-mode 'baz-mode)
-         (buffer-file-name nil))
-     (should (eq (company-statistics-score-calc-default "foo") 1))
-     (should (eq (company-statistics-score-calc-default "bar") 1))
-     (should (eq (company-statistics-score-calc-default "baz") 2))
-     (should (eq (company-statistics-score-calc-default "quux") 2)))
+         (company-statistics--context
+          '((:keyword "when")
+            (:file "baz-file"))))
+     (should (eq (company-statistics-score-calc-heavy "dummy") 0))
+     (should (eq (company-statistics-score-calc-heavy "foo") 1))
+     (should (eq (company-statistics-score-calc-heavy "bar") 1))
+     (should (eq (company-statistics-score-calc-heavy "baz") 2))
+     (should (eq (company-statistics-score-calc-heavy "quux") 3)))
    (let ((major-mode 'baz-mode)
-         (buffer-file-name "quux-file"))
-     (should (eq (company-statistics-score-calc-default "foo") 1))
-     (should (eq (company-statistics-score-calc-default "bar") 1))
-     (should (eq (company-statistics-score-calc-default "baz") 2))
-     (should (eq (company-statistics-score-calc-default "quux") 3)))))
+         (company-statistics--context
+          '((:keyword "if")
+            (:symbol "statistics")
+            (:file "quux-file"))))
+     (should (eq (company-statistics-score-calc-heavy "dummy") 0))
+     (should (eq (company-statistics-score-calc-heavy "foo") 2))
+     (should (eq (company-statistics-score-calc-heavy "bar") 2))
+     (should (eq (company-statistics-score-calc-heavy "baz") 2))
+     (should (eq (company-statistics-score-calc-heavy "quux") 3)))))
 
 (ert-deftest c-s-alist-update ()
   "Test central helper function for context/score alist update."