Mercurial > hg > xemacs-beta
comparison tests/automated/regexp-tests.el @ 5647:1d9f603e9125
Turn on character classes in regex.c by default; test them in regexp-tests.el
2012-04-21 Aidan Kehoe <kehoea@parhasard.net>
* regex.h (RE_SYNTAX_EMACS):
Turn on character classes ([:alnum:] and friends) by default. This
implementation is incomplete, am working on a version that handles
non-ASCII characters correctly.
tests/ChangeLog addition:
2012-04-21 Aidan Kehoe <kehoea@parhasard.net>
* automated/regexp-tests.el:
* automated/regexp-tests.el (Assert-char-class):
Test the character classes functionality that was always in
regex.c but that has only just been turned on. These tests pass on
GNU Emacs 24.0.94.2.
author | Aidan Kehoe <kehoea@parhasard.net> |
---|---|
date | Sat, 21 Apr 2012 09:41:27 +0100 |
parents | 308d34e9f07d |
children | 3f4a234f4672 |
comparison
equal
deleted
inserted
replaced
5646:7aa144d1404b | 5647:1d9f603e9125 |
---|---|
594 (Assert (eql (string-match "[\x7f\x80-\x9e]" "\x80") 0)) | 594 (Assert (eql (string-match "[\x7f\x80-\x9e]" "\x80") 0)) |
595 ;; Used to succeed even with the bug. | 595 ;; Used to succeed even with the bug. |
596 (Assert (eql (string-match "[\x7f\x80\x9f]" "\x80") 0)) | 596 (Assert (eql (string-match "[\x7f\x80\x9f]" "\x80") 0)) |
597 (Assert (eql (string-match "[\x7e\x80-\x9f]" "\x80") 0)) | 597 (Assert (eql (string-match "[\x7e\x80-\x9f]" "\x80") 0)) |
598 (Assert (eql (string-match "[\x7f\x81-\x9f]" "\x81") 0)) | 598 (Assert (eql (string-match "[\x7f\x81-\x9f]" "\x81") 0)) |
599 | |
600 ;; Test character classes | |
601 (macrolet | |
602 ((Assert-char-class (class matching-char non-matching-char) | |
603 (if (and (not (featurep 'mule)) | |
604 (or (eq (car-safe matching-char) 'decode-char) | |
605 (eq (car-safe non-matching-char) 'decode-char))) | |
606 ;; Don't attempt expansion if these clauses require Mule and we | |
607 ;; don't have it. | |
608 (return-from Assert-char-class nil) | |
609 (setq matching-char (eval matching-char) | |
610 non-matching-char (eval non-matching-char))) | |
611 `(progn | |
612 (Assert (eql (string-match ,(concat "[" class "]") | |
613 ,(concat (string matching-char) | |
614 (string non-matching-char))) | |
615 0)) | |
616 (Assert (eql (string-match ,(concat "[" class class class "]") | |
617 ,(concat (string matching-char) | |
618 (string non-matching-char))) | |
619 0)) | |
620 (Assert (eql (string-match ,(concat "[^" class "]") | |
621 ,(concat (string non-matching-char) | |
622 (string matching-char))) | |
623 0)) | |
624 (Assert (eql (string-match ,(concat "[^" class class class "]") | |
625 ,(concat (string non-matching-char) | |
626 (string matching-char))) | |
627 0)) | |
628 (Assert (eql (string-match ,(concat "[" class "]") | |
629 ,(concat (string non-matching-char) | |
630 (string matching-char))) | |
631 1)) | |
632 (Assert (eql (string-match ,(concat "[" class class class "]") | |
633 ,(concat (string non-matching-char) | |
634 (string matching-char))) | |
635 1)) | |
636 (Assert (eql (string-match ,(concat "[^" class "]") | |
637 ,(concat (string matching-char) | |
638 (string non-matching-char))) | |
639 1)) | |
640 (Assert (eql (string-match ,(concat "[^" class class class "]") | |
641 ,(concat (string matching-char) | |
642 (string non-matching-char))) | |
643 1)) | |
644 (Assert (null (string-match ,(concat "[" class "]") | |
645 ,(string non-matching-char)))) | |
646 (Assert (null (string-match ,(concat "[^" class "]") | |
647 ,(string matching-char)))) | |
648 (Assert (null (string-match ,(concat "[^" class | |
649 (string non-matching-char) "]") | |
650 ,(concat (string matching-char) | |
651 (string non-matching-char)))))))) | |
652 (Assert-char-class "[:alpha:]" ?a ?0) | |
653 (Assert-char-class "[:alpha:]" ?z ?9) | |
654 (Assert-char-class "[:alpha:]" ?A ?0) | |
655 (Assert-char-class "[:alpha:]" ?Z ?9) | |
656 (Assert-char-class "[:alpha:]" ?b ?\x00) | |
657 (Assert-char-class "[:alpha:]" ?c ?\x09) | |
658 (Assert-char-class "[:alpha:]" ?d ?\ ) | |
659 (Assert-char-class "[:alpha:]" ?e ?\x7f) | |
660 | |
661 (Assert-char-class "[:alnum:]" ?a ?.) | |
662 (Assert-char-class "[:alnum:]" ?z ?') | |
663 (Assert-char-class "[:alnum:]" ?A ?/) | |
664 (Assert-char-class "[:alnum:]" ?Z ?!) | |
665 (Assert-char-class "[:alnum:]" ?0 ?,) | |
666 (Assert-char-class "[:alnum:]" ?9 ?$) | |
667 | |
668 (Assert-char-class "[:alnum:]" ?b ?\x00) | |
669 (Assert-char-class "[:alnum:]" ?c ?\x09) | |
670 (Assert-char-class "[:alnum:]" ?d ?\ ) | |
671 (Assert-char-class "[:alnum:]" ?e ?\x7f) | |
672 | |
673 (let ((case-fold-search nil)) | |
674 (Assert-char-class "[:upper:]" ?A ?a) | |
675 (Assert-char-class "[:upper:]" ?Z ?z) | |
676 (Assert-char-class "[:upper:]" ?B ?0) | |
677 (Assert-char-class "[:upper:]" ?C ?9) | |
678 (Assert-char-class "[:upper:]" ?D ?\x00) | |
679 (Assert-char-class "[:upper:]" ?E ?\x09) | |
680 (Assert-char-class "[:upper:]" ?F ?\ ) | |
681 (Assert-char-class "[:upper:]" ?G ?\x7f) | |
682 | |
683 (Assert-char-class "[:lower:]" ?a ?A) | |
684 (Assert-char-class "[:lower:]" ?z ?Z) | |
685 (Assert-char-class "[:lower:]" ?b ?0) | |
686 (Assert-char-class "[:lower:]" ?c ?9) | |
687 (Assert-char-class "[:lower:]" ?d ?\x00) | |
688 (Assert-char-class "[:lower:]" ?e ?\x09) | |
689 (Assert-char-class "[:lower:]" ?f ? ) | |
690 (Assert-char-class "[:lower:]" ?g ?\x7f)) | |
691 | |
692 (let ((case-fold-search t)) | |
693 ;; These currently fail, because we don't take into account the buffer's | |
694 ;; case table. | |
695 (Assert-char-class "[:upper:]" ?a ?\x00) | |
696 (Assert-char-class "[:upper:]" ?z ?\x01) | |
697 (Assert-char-class "[:upper:]" ?b ?{) | |
698 (Assert-char-class "[:upper:]" ?c ?}) | |
699 (Assert-char-class "[:upper:]" ?d ?<) | |
700 (Assert-char-class "[:upper:]" ?e ?>) | |
701 (Assert-char-class "[:upper:]" ?f ?\ ) | |
702 (Assert-char-class "[:upper:]" ?g ?\x7f) | |
703 | |
704 (Assert-char-class "[:lower:]" ?A ?\x00) | |
705 (Assert-char-class "[:lower:]" ?Z ?\x01) | |
706 (Assert-char-class "[:lower:]" ?B ?{) | |
707 (Assert-char-class "[:lower:]" ?C ?}) | |
708 (Assert-char-class "[:lower:]" ?D ?<) | |
709 (Assert-char-class "[:lower:]" ?E ?>) | |
710 (Assert-char-class "[:lower:]" ?F ?\ ) | |
711 (Assert-char-class "[:lower:]" ?G ?\x7F)) | |
712 | |
713 (Assert-char-class "[:digit:]" ?0 ?a) | |
714 (Assert-char-class "[:digit:]" ?9 ?z) | |
715 (Assert-char-class "[:digit:]" ?1 ?A) | |
716 (Assert-char-class "[:digit:]" ?2 ?Z) | |
717 (Assert-char-class "[:digit:]" ?3 ?\x00) | |
718 (Assert-char-class "[:digit:]" ?4 ?\x09) | |
719 (Assert-char-class "[:digit:]" ?5 ? ) | |
720 (Assert-char-class "[:digit:]" ?6 ?\x7f) | |
721 | |
722 (Assert-char-class "[:xdigit:]" ?0 ?g) | |
723 (Assert-char-class "[:xdigit:]" ?9 ?G) | |
724 (Assert-char-class "[:xdigit:]" ?A ?{) | |
725 (Assert-char-class "[:xdigit:]" ?a ?}) | |
726 (Assert-char-class "[:xdigit:]" ?1 ? ) | |
727 (Assert-char-class "[:xdigit:]" ?2 ?Z) | |
728 (Assert-char-class "[:xdigit:]" ?3 ?\x00) | |
729 (Assert-char-class "[:xdigit:]" ?4 ?\x09) | |
730 (Assert-char-class "[:xdigit:]" ?5 ?\x7f) | |
731 (Assert-char-class "[:xdigit:]" ?6 ?z) | |
732 | |
733 (Assert-char-class "[:space:]" ?\ ?0) | |
734 (Assert-char-class "[:space:]" ?\t ?9) | |
735 (Assert-char-class "[:space:]" ?\ ?A) | |
736 (Assert-char-class "[:space:]" ?\t ?Z) | |
737 (Assert-char-class "[:space:]" ?\ ?\x00) | |
738 (Assert-char-class "[:space:]" ?\ ?\x7f) | |
739 (Assert-char-class "[:space:]" ?\t ?a) | |
740 (Assert-char-class "[:space:]" ?\ ?z) | |
741 | |
742 (Assert-char-class "[:print:]" ?\ ?\x00) | |
743 (Assert-char-class "[:print:]" ?0 ?\x09) | |
744 (Assert-char-class "[:print:]" ?9 ?\x7f) | |
745 (Assert-char-class "[:print:]" ?A ?\x01) | |
746 (Assert-char-class "[:print:]" ?Z ?\x02) | |
747 (Assert-char-class "[:print:]" ?B ?\t) | |
748 (Assert-char-class "[:print:]" ?a ?\x03) | |
749 (Assert-char-class "[:print:]" ?z ?\x04) | |
750 | |
751 (Assert-char-class "[:punct:]" ?\( ?0) | |
752 (Assert-char-class "[:punct:]" ?. ?9) | |
753 (Assert-char-class "[:punct:]" ?{ ?A) | |
754 (Assert-char-class "[:punct:]" ?} ?Z) | |
755 (Assert-char-class "[:punct:]" ?: ?\t) | |
756 (Assert-char-class "[:punct:]" ?\; ?\x00) | |
757 (Assert-char-class "[:punct:]" ?< ?\x09) | |
758 (Assert-char-class "[:punct:]" ?> ?\x7f) | |
759 (Assert-char-class "[:punct:]" ?= ?a) | |
760 (Assert-char-class "[:punct:]" ?\? ?z)) |