Download
(let ((table (standard-category-table))
(test-bidi-alist
'((0 . bidi-category-bn)
(1 . bidi-category-bn)
(2 . bidi-category-bn)
(3 . bidi-category-bn)
(4 . bidi-category-bn)
(5 . bidi-category-bn)
(6 . bidi-category-bn)
(7 . bidi-category-bn)
(8 . bidi-category-bn)
(9 . bidi-category-s)
(10 . bidi-category-b)
(11 . bidi-category-s)
(12 . bidi-category-ws)
(13 . bidi-category-b)
(14 . bidi-category-bn)
(15 . bidi-category-bn)
(16 . bidi-category-bn)
(17 . bidi-category-bn)
(18 . bidi-category-bn)
(19 . bidi-category-bn)
(20 . bidi-category-bn)
(21 . bidi-category-bn)
(22 . bidi-category-bn)
(23 . bidi-category-bn)
(24 . bidi-category-bn)
(25 . bidi-category-bn)
(26 . bidi-category-bn)
(27 . bidi-category-bn)
(28 . bidi-category-b)
(29 . bidi-category-b)
(30 . bidi-category-b)
(31 . bidi-category-s)
(32 . bidi-category-ws)
(33 . bidi-category-on)
(34 . bidi-category-on)
(35 . bidi-category-et)
(36 . bidi-category-et)
(37 . bidi-category-et)
(38 . bidi-category-on)
(39 . bidi-category-on)
(40 . bidi-category-on)
(41 . bidi-category-on)
(42 . bidi-category-on)
(43 . bidi-category-et)
(44 . bidi-category-cs)
(45 . bidi-category-et)
(46 . bidi-category-cs)
(47 . bidi-category-es)
(48 . bidi-category-en)
(49 . bidi-category-en)
(50 . bidi-category-en)
(51 . bidi-category-en)
(52 . bidi-category-en)
(53 . bidi-category-en)
(54 . bidi-category-en)
(55 . bidi-category-en)
(56 . bidi-category-en)
(57 . bidi-category-en)
(58 . bidi-category-cs)
(59 . bidi-category-on)
(60 . bidi-category-on)
(61 . bidi-category-on)
(62 . bidi-category-on)
(63 . bidi-category-on)
(64 . bidi-category-on)
(65 . bidi-category-r)
(66 . bidi-category-r)
(67 . bidi-category-r)
(68 . bidi-category-r)
(69 . bidi-category-r)
(70 . bidi-category-r)
(71 . bidi-category-r)
(72 . bidi-category-r)
(73 . bidi-category-r)
(74 . bidi-category-r)
(75 . bidi-category-r)
(76 . bidi-category-r)
(77 . bidi-category-r)
(78 . bidi-category-r)
(79 . bidi-category-r)
(80 . bidi-category-r)
(81 . bidi-category-r)
(82 . bidi-category-r)
(83 . bidi-category-r)
(84 . bidi-category-r)
(85 . bidi-category-r)
(86 . bidi-category-r)
(87 . bidi-category-r)
(88 . bidi-category-r)
(89 . bidi-category-r)
(90 . bidi-category-r)
(91 . bidi-category-on)
(92 . bidi-category-on)
(93 . bidi-category-on)
(94 . bidi-category-on)
(95 . bidi-category-on)
(96 . bidi-category-on)
(97 . bidi-category-l)
(98 . bidi-category-l)
(99 . bidi-category-l)
(100 . bidi-category-l)
(101 . bidi-category-l)
(102 . bidi-category-l)
(103 . bidi-category-l)
(104 . bidi-category-l)
(105 . bidi-category-l)
(106 . bidi-category-l)
(107 . bidi-category-l)
(108 . bidi-category-l)
(109 . bidi-category-l)
(110 . bidi-category-l)
(111 . bidi-category-l)
(112 . bidi-category-l)
(113 . bidi-category-l)
(114 . bidi-category-l)
(115 . bidi-category-l)
(116 . bidi-category-l)
(117 . bidi-category-l)
(118 . bidi-category-l)
(119 . bidi-category-l)
(120 . bidi-category-l)
(121 . bidi-category-l)
(122 . bidi-category-l)
(123 . bidi-category-on)
(124 . bidi-category-on)
(125 . bidi-category-on)
(126 . bidi-category-on)
(127 . bidi-category-bn))))
(dolist (pair test-bidi-alist)
(let ((char (car pair))
(bidi-type (symbol-value (cdr pair))))
(modify-category-entry char bidi-type table))))
(assert (aref (char-category-set ?a) bidi-category-l))
(assert (aref (char-category-set ?A) bidi-category-r))
(assert (not (aref (char-category-set ?a) bidi-category-r)))
(assert (not (aref (char-category-set ?A) bidi-category-l)))
(assert (aref (char-category-set ? ) bidi-category-ws))
(setq bidi-mirroring-table '((125 . 123)
(123 . 125)
(93 . 91)
(91 . 93)
(62 . 60)
(60 . 62)
(41 . 40)
(40 . 41)))
(assert (not (assq ?a bidi-mirroring-table)))
(assert (eq ?\) (cdr (assq ?\( bidi-mirroring-table))))
(assert (eq ?\[ (cdr (assq ?\] bidi-mirroring-table))))