aboutsummaryrefslogtreecommitdiffstats
path: root/test/src
diff options
context:
space:
mode:
Diffstat (limited to 'test/src')
-rw-r--r--test/src/regex-emacs-tests.el120
1 files changed, 120 insertions, 0 deletions
diff --git a/test/src/regex-emacs-tests.el b/test/src/regex-emacs-tests.el
index 0ae50c94d4c..50ed3e870a5 100644
--- a/test/src/regex-emacs-tests.el
+++ b/test/src/regex-emacs-tests.el
@@ -683,4 +683,124 @@ This evaluates the TESTS test cases from glibc."
683 (should-not (string-match "\\`x\\{65535\\}" (make-string 65534 ?x))) 683 (should-not (string-match "\\`x\\{65535\\}" (make-string 65534 ?x)))
684 (should-error (string-match "\\`x\\{65536\\}" "X") :type 'invalid-regexp)) 684 (should-error (string-match "\\`x\\{65536\\}" "X") :type 'invalid-regexp))
685 685
686(ert-deftest regexp-unibyte-unibyte ()
687 "Test matching a unibyte regexp against a unibyte string."
688 ;; Sanity check
689 (should-not (multibyte-string-p "ab"))
690 (should-not (multibyte-string-p "\xff"))
691 ;; ASCII
692 (should (string-match "a[b]" "ab"))
693 ;; Raw
694 (should (string-match "\xf1" "\xf1"))
695 (should-not (string-match "\xf1" "\xc1\xb1"))
696 ;; Raw, char alt
697 (should (string-match "[\xf1]" "\xf1"))
698 (should-not (string-match "[\xf1]" "\xc1\xb1"))
699 ;; Raw range
700 (should (string-match "[\x82-\xd3]" "\xbb"))
701 (should-not (string-match "[\x82-\xd3]" "a"))
702 (should-not (string-match "[\x82-\xd3]" "\x81"))
703 (should-not (string-match "[\x82-\xd3]" "\xd4"))
704 ;; ASCII-raw range
705 (should (string-match "[f-\xd3]" "q"))
706 (should (string-match "[f-\xd3]" "\xbb"))
707 (should-not (string-match "[f-\xd3]" "e"))
708 (should-not (string-match "[f-\xd3]" "\xd4")))
709
710(ert-deftest regexp-multibyte-multibyte ()
711 "Test matching a multibyte regexp against a multibyte string."
712 ;; Sanity check
713 (should (multibyte-string-p "åü"))
714 ;; ASCII
715 (should (string-match (string-to-multibyte "a[b]")
716 (string-to-multibyte "ab")))
717 ;; Unicode
718 (should (string-match "å[ü]z" "åüz"))
719 (should-not (string-match "ü" (string-to-multibyte "\xc3\xbc")))
720 ;; Raw
721 (should (string-match (string-to-multibyte "\xf1")
722 (string-to-multibyte "\xf1")))
723 (should-not (string-match (string-to-multibyte "\xf1")
724 (string-to-multibyte "\xc1\xb1")))
725 (should-not (string-match (string-to-multibyte "\xc1\xb1")
726 (string-to-multibyte "\xf1")))
727 ;; Raw, char alt
728 (should (string-match (string-to-multibyte "[\xf1]")
729 (string-to-multibyte "\xf1")))
730 ;; Raw range
731 (should (string-match (string-to-multibyte "[\x82-\xd3]")
732 (string-to-multibyte "\xbb")))
733 (should-not (string-match (string-to-multibyte "[\x82-\xd3]") "a"))
734 (should-not (string-match (string-to-multibyte "[\x82-\xd3]") "Å"))
735 (should-not (string-match (string-to-multibyte "[\x82-\xd3]") "ü"))
736 (should-not (string-match (string-to-multibyte "[\x82-\xd3]") "\x81"))
737 (should-not (string-match (string-to-multibyte "[\x82-\xd3]") "\xd4"))
738 ;; ASCII-raw range: should exclude U+0100..U+10FFFF
739 (should (string-match (string-to-multibyte "[f-\xd3]")
740 (string-to-multibyte "q")))
741 (should (string-match (string-to-multibyte "[f-\xd3]")
742 (string-to-multibyte "\xbb")))
743 (should-not (string-match (string-to-multibyte "[f-\xd3]") "e"))
744 (should-not (string-match (string-to-multibyte "[f-\xd3]") "Å"))
745 (should-not (string-match (string-to-multibyte "[f-\xd3]") "ü"))
746 (should-not (string-match (string-to-multibyte "[f-\xd3]") "\xd4"))
747 ;; Unicode-raw range: should be empty
748 (should-not (string-match "[å-\xd3]" "å"))
749 (should-not (string-match "[å-\xd3]" (string-to-multibyte "\xd3")))
750 (should-not (string-match "[å-\xd3]" (string-to-multibyte "\xbb")))
751 (should-not (string-match "[å-\xd3]" "ü"))
752 ;; No equivalence between raw bytes and latin-1
753 (should-not (string-match "å" (string-to-multibyte "\xe5")))
754 (should-not (string-match "[å]" (string-to-multibyte "\xe5")))
755 (should-not (string-match "\xe5" "å"))
756 (should-not (string-match "[\xe5]" "å")))
757
758(ert-deftest regexp-unibyte-multibyte ()
759 "Test matching a unibyte regexp against a multibyte string."
760 ;; ASCII
761 (should (string-match "a[b]" (string-to-multibyte "ab")))
762 ;; Unicode
763 (should (string-match "a.[^b]c" (string-to-multibyte "aåüc")))
764 ;; Raw
765 (should (string-match "\xf1" (string-to-multibyte "\xf1")))
766 (should-not (string-match "\xc1\xb1" (string-to-multibyte "\xf1")))
767 ;; Raw, char alt
768 (should (string-match "[\xf1]" (string-to-multibyte "\xf1")))
769 (should-not (string-match "[\xc1][\xb1]" (string-to-multibyte "\xf1")))
770 ;; ASCII-raw range: should exclude U+0100..U+10FFFF
771 (should (string-match "[f-\xd3]" (string-to-multibyte "q")))
772 (should (string-match "[f-\xd3]" (string-to-multibyte "\xbb")))
773 (should-not (string-match "[f-\xd3]" "e"))
774 (should-not (string-match "[f-\xd3]" "Å"))
775 (should-not (string-match "[f-\xd3]" "ü"))
776 (should-not (string-match "[f-\xd3]" "\xd4"))
777 ;; No equivalence between raw bytes and latin-1
778 (should-not (string-match "\xe5" "å"))
779 (should-not (string-match "[\xe5]" "å")))
780
781(ert-deftest regexp-multibyte-unibyte ()
782 "Test matching a multibyte regexp against a unibyte string."
783 ;; ASCII
784 (should (string-match (string-to-multibyte "a[b]") "ab"))
785 ;; Unicode
786 (should (string-match "a[^ü]c" "abc"))
787 (should-not (string-match "ü" "\xc3\xbc"))
788 ;; Raw
789 (should (string-match (string-to-multibyte "\xf1") "\xf1"))
790 (should-not (string-match (string-to-multibyte "\xf1") "\xc1\xb1"))
791 ;; Raw, char alt
792 (should (string-match (string-to-multibyte "[\xf1]") "\xf1"))
793 (should-not (string-match (string-to-multibyte "[\xf1]") "\xc1\xb1"))
794 ;; ASCII-raw range: should exclude U+0100..U+10FFFF
795 (should (string-match (string-to-multibyte "[f-\xd3]") "q"))
796 (should (string-match (string-to-multibyte "[f-\xd3]") "\xbb"))
797 (should-not (string-match (string-to-multibyte "[f-\xd3]") "e"))
798 (should-not (string-match (string-to-multibyte "[f-\xd3]") "\xd4"))
799 ;; Unicode-raw range: should be empty
800 (should-not (string-match "[å-\xd3]" "\xd3"))
801 (should-not (string-match "[å-\xd3]" "\xbb"))
802 ;; No equivalence between raw bytes and latin-1
803 (should-not (string-match "å" "\xe5"))
804 (should-not (string-match "[å]" "\xe5")))
805
686;;; regex-emacs-tests.el ends here 806;;; regex-emacs-tests.el ends here