|
| 1 | +## Sequence Matcher |
| 2 | +```py |
| 3 | +from django.test import TestCase |
| 4 | +from difflib import SequenceMatcher |
| 5 | + |
| 6 | + |
| 7 | +class SimilarTestCase(TestCase): |
| 8 | + data = [ |
| 9 | + ("Asim", "Asim", 1.00), |
| 10 | + ("Asim", "Asim", 0.75), |
| 11 | + ("Asim", "asim", 0.75), |
| 12 | + ("Asim", "ASIM", 0.25), |
| 13 | + ("Asim", "Bader", 0.00), |
| 14 | + ("Asim", "EDCBA", 0.222), |
| 15 | + ("Asim", "MMMM", 0.00), |
| 16 | + ("Asim", "asim", 0.75), |
| 17 | + ("أحمد محمد محمود", "احمد", 0.316), |
| 18 | + ("أحمد محمد محمود", "خالد", 0.105), |
| 19 | + ("أحمد محمد محمود", "المهندس حمد احمد محمود محمد خالد صالح", 0.500), |
| 20 | + ("أحمد محمد محمود", "احــمـــد", 0.25), |
| 21 | + ("أحمد محمد محمود", "بسم الله الرحمن الرحيم", 0.216), |
| 22 | + ("أحمد محمد محمود", "محمود محمد احمد", 0.8), |
| 23 | + ("أحمد محمد محمود", "أحمدمحمدمحمود", 0.929), |
| 24 | + ("أحمد محمد محمود", "احمـد مجمد ممود", 0.533), |
| 25 | + ("أحمد محمد محمود", "عمر", 0.111), |
| 26 | + ("أحمد محمد محمود", "م", 0.125), |
| 27 | + ("أحمد محمد محمود", "ح", 0.125), |
| 28 | + ("أحمد محمد محمود", "د", 0.125), |
| 29 | + ] |
| 30 | + |
| 31 | + def test_similar(self): |
| 32 | + for text_1, text_2, expected in self.data: |
| 33 | + actual = SequenceMatcher(None, text_1, text_2).ratio() |
| 34 | + self.assertEqual(expected, round(actual, 3), |
| 35 | + f"{text_1} :: {text_2}") |
| 36 | +``` |
0 commit comments