diff options
author | Tim Peters <tim.peters@gmail.com> | 2001-02-10 08:00:53 (GMT) |
---|---|---|
committer | Tim Peters <tim.peters@gmail.com> | 2001-02-10 08:00:53 (GMT) |
commit | 9ae2148adaa6320e6e1017d9786522f2b57e10f0 (patch) | |
tree | 0ea5ae804e3adbd3136166c0e8740c9c30c59936 /Lib/test | |
parent | 6db54c69a40a0358efc237292ee55a2de5122cd4 (diff) | |
download | cpython-9ae2148adaa6320e6e1017d9786522f2b57e10f0.zip cpython-9ae2148adaa6320e6e1017d9786522f2b57e10f0.tar.gz cpython-9ae2148adaa6320e6e1017d9786522f2b57e10f0.tar.bz2 |
Moved SequenceMatcher from ndiff into new std library module difflib.py.
Guido told me to do this <wink>.
Greatly expanded docstrings, and fleshed out with examples.
New std test.
Added new get_close_matches() function for ESR.
Needs docs, but LaTeXification of the module docstring is all it needs.
\CVS: ----------------------------------------------------------------------
Diffstat (limited to 'Lib/test')
-rw-r--r-- | Lib/test/output/test_difflib | 280 | ||||
-rw-r--r-- | Lib/test/test_difflib.py | 2 |
2 files changed, 282 insertions, 0 deletions
diff --git a/Lib/test/output/test_difflib b/Lib/test/output/test_difflib new file mode 100644 index 0000000..0ea1048 --- /dev/null +++ b/Lib/test/output/test_difflib @@ -0,0 +1,280 @@ +test_difflib +Running difflib.__doc__ +Trying: get_close_matches("appel", ["ape", "apple", "peach", "puppy"]) +Expecting: ['apple', 'ape'] +ok +Trying: import keyword +Expecting: nothing +ok +Trying: get_close_matches("wheel", keyword.kwlist) +Expecting: ['while'] +ok +Trying: get_close_matches("apple", keyword.kwlist) +Expecting: [] +ok +Trying: get_close_matches("accept", keyword.kwlist) +Expecting: ['except'] +ok +Trying: +s = SequenceMatcher(lambda x: x == " ", + "private Thread currentThread;", + "private volatile Thread currentThread;") +Expecting: nothing +ok +Trying: print round(s.ratio(), 3) +Expecting: 0.866 +ok +Trying: +for block in s.get_matching_blocks(): + print "a[%d] and b[%d] match for %d elements" % block +Expecting: +a[0] and b[0] match for 8 elements +a[8] and b[17] match for 6 elements +a[14] and b[23] match for 15 elements +a[29] and b[38] match for 0 elements +ok +Trying: +for opcode in s.get_opcodes(): + print "%6s a[%d:%d] b[%d:%d]" % opcode +Expecting: + equal a[0:8] b[0:8] +insert a[8:8] b[8:17] + equal a[8:14] b[17:23] + equal a[14:29] b[23:38] +ok +Trying: s = SequenceMatcher() +Expecting: nothing +ok +Trying: s.set_seqs("abcd", "bcde") +Expecting: nothing +ok +Trying: s.ratio() +Expecting: 0.75 +ok +Trying: s = SequenceMatcher(None, "abcd", "bcde") +Expecting: nothing +ok +Trying: s.ratio() +Expecting: 0.75 +ok +Trying: s.set_seq1("bcde") +Expecting: nothing +ok +Trying: s.ratio() +Expecting: 1.0 +ok +Trying: s = SequenceMatcher(None, "abcd", "bcde") +Expecting: nothing +ok +Trying: s.ratio() +Expecting: 0.75 +ok +Trying: s.set_seq2("abcd") +Expecting: nothing +ok +Trying: s.ratio() +Expecting: 1.0 +ok +Trying: s = SequenceMatcher(None, " abcd", "abcd abcd") +Expecting: nothing +ok +Trying: s.find_longest_match(0, 5, 0, 9) +Expecting: (0, 4, 5) +ok +Trying: s = SequenceMatcher(lambda x: x==" ", " abcd", "abcd abcd") +Expecting: nothing +ok +Trying: s.find_longest_match(0, 5, 0, 9) +Expecting: (1, 0, 4) +ok +Trying: s = SequenceMatcher(None, "ab", "c") +Expecting: nothing +ok +Trying: s.find_longest_match(0, 2, 0, 1) +Expecting: (0, 0, 0) +ok +Trying: s = SequenceMatcher(None, "abxcd", "abcd") +Expecting: nothing +ok +Trying: s.get_matching_blocks() +Expecting: [(0, 0, 2), (3, 2, 2), (5, 4, 0)] +ok +Trying: a = "qabxcd" +Expecting: nothing +ok +Trying: b = "abycdf" +Expecting: nothing +ok +Trying: s = SequenceMatcher(None, a, b) +Expecting: nothing +ok +Trying: +for tag, i1, i2, j1, j2 in s.get_opcodes(): + print ("%7s a[%d:%d] (%s) b[%d:%d] (%s)" % + (tag, i1, i2, a[i1:i2], j1, j2, b[j1:j2])) +Expecting: + delete a[0:1] (q) b[0:0] () + equal a[1:3] (ab) b[0:2] (ab) +replace a[3:4] (x) b[2:3] (y) + equal a[4:6] (cd) b[3:5] (cd) + insert a[6:6] () b[5:6] (f) +ok +Trying: s = SequenceMatcher(None, "abcd", "bcde") +Expecting: nothing +ok +Trying: s.ratio() +Expecting: 0.75 +ok +Trying: s.quick_ratio() +Expecting: 0.75 +ok +Trying: s.real_quick_ratio() +Expecting: 1.0 +ok +0 of 36 examples failed in difflib.__doc__ +Running difflib.SequenceMatcher.__doc__ +0 of 0 examples failed in difflib.SequenceMatcher.__doc__ +Running difflib.SequenceMatcher.__init__.__doc__ +0 of 0 examples failed in difflib.SequenceMatcher.__init__.__doc__ +Running difflib.SequenceMatcher.find_longest_match.__doc__ +Trying: s = SequenceMatcher(None, " abcd", "abcd abcd") +Expecting: nothing +ok +Trying: s.find_longest_match(0, 5, 0, 9) +Expecting: (0, 4, 5) +ok +Trying: s = SequenceMatcher(lambda x: x==" ", " abcd", "abcd abcd") +Expecting: nothing +ok +Trying: s.find_longest_match(0, 5, 0, 9) +Expecting: (1, 0, 4) +ok +Trying: s = SequenceMatcher(None, "ab", "c") +Expecting: nothing +ok +Trying: s.find_longest_match(0, 2, 0, 1) +Expecting: (0, 0, 0) +ok +0 of 6 examples failed in difflib.SequenceMatcher.find_longest_match.__doc__ +Running difflib.SequenceMatcher.get_opcodes.__doc__ +Trying: a = "qabxcd" +Expecting: nothing +ok +Trying: b = "abycdf" +Expecting: nothing +ok +Trying: s = SequenceMatcher(None, a, b) +Expecting: nothing +ok +Trying: +for tag, i1, i2, j1, j2 in s.get_opcodes(): + print ("%7s a[%d:%d] (%s) b[%d:%d] (%s)" % + (tag, i1, i2, a[i1:i2], j1, j2, b[j1:j2])) +Expecting: + delete a[0:1] (q) b[0:0] () + equal a[1:3] (ab) b[0:2] (ab) +replace a[3:4] (x) b[2:3] (y) + equal a[4:6] (cd) b[3:5] (cd) + insert a[6:6] () b[5:6] (f) +ok +0 of 4 examples failed in difflib.SequenceMatcher.get_opcodes.__doc__ +Running difflib.SequenceMatcher.quick_ratio.__doc__ +0 of 0 examples failed in difflib.SequenceMatcher.quick_ratio.__doc__ +Running difflib.SequenceMatcher.set_seqs.__doc__ +Trying: s = SequenceMatcher() +Expecting: nothing +ok +Trying: s.set_seqs("abcd", "bcde") +Expecting: nothing +ok +Trying: s.ratio() +Expecting: 0.75 +ok +0 of 3 examples failed in difflib.SequenceMatcher.set_seqs.__doc__ +Running difflib.SequenceMatcher.set_seq2.__doc__ +Trying: s = SequenceMatcher(None, "abcd", "bcde") +Expecting: nothing +ok +Trying: s.ratio() +Expecting: 0.75 +ok +Trying: s.set_seq2("abcd") +Expecting: nothing +ok +Trying: s.ratio() +Expecting: 1.0 +ok +0 of 4 examples failed in difflib.SequenceMatcher.set_seq2.__doc__ +Running difflib.SequenceMatcher.set_seq1.__doc__ +Trying: s = SequenceMatcher(None, "abcd", "bcde") +Expecting: nothing +ok +Trying: s.ratio() +Expecting: 0.75 +ok +Trying: s.set_seq1("bcde") +Expecting: nothing +ok +Trying: s.ratio() +Expecting: 1.0 +ok +0 of 4 examples failed in difflib.SequenceMatcher.set_seq1.__doc__ +Running difflib.SequenceMatcher.get_matching_blocks.__doc__ +Trying: s = SequenceMatcher(None, "abxcd", "abcd") +Expecting: nothing +ok +Trying: s.get_matching_blocks() +Expecting: [(0, 0, 2), (3, 2, 2), (5, 4, 0)] +ok +0 of 2 examples failed in difflib.SequenceMatcher.get_matching_blocks.__doc__ +Running difflib.SequenceMatcher.real_quick_ratio.__doc__ +0 of 0 examples failed in difflib.SequenceMatcher.real_quick_ratio.__doc__ +Running difflib.SequenceMatcher.ratio.__doc__ +Trying: s = SequenceMatcher(None, "abcd", "bcde") +Expecting: nothing +ok +Trying: s.ratio() +Expecting: 0.75 +ok +Trying: s.quick_ratio() +Expecting: 0.75 +ok +Trying: s.real_quick_ratio() +Expecting: 1.0 +ok +0 of 4 examples failed in difflib.SequenceMatcher.ratio.__doc__ +Running difflib.get_close_matches.__doc__ +Trying: get_close_matches("appel", ["ape", "apple", "peach", "puppy"]) +Expecting: ['apple', 'ape'] +ok +Trying: import keyword +Expecting: nothing +ok +Trying: get_close_matches("wheel", keyword.kwlist) +Expecting: ['while'] +ok +Trying: get_close_matches("apple", keyword.kwlist) +Expecting: [] +ok +Trying: get_close_matches("accept", keyword.kwlist) +Expecting: ['except'] +ok +0 of 5 examples failed in difflib.get_close_matches.__doc__ +4 items had no tests: + difflib.SequenceMatcher + difflib.SequenceMatcher.__init__ + difflib.SequenceMatcher.quick_ratio + difflib.SequenceMatcher.real_quick_ratio +9 items passed all tests: + 36 tests in difflib + 6 tests in difflib.SequenceMatcher.find_longest_match + 2 tests in difflib.SequenceMatcher.get_matching_blocks + 4 tests in difflib.SequenceMatcher.get_opcodes + 4 tests in difflib.SequenceMatcher.ratio + 4 tests in difflib.SequenceMatcher.set_seq1 + 4 tests in difflib.SequenceMatcher.set_seq2 + 3 tests in difflib.SequenceMatcher.set_seqs + 5 tests in difflib.get_close_matches +68 tests in 13 items. +68 passed and 0 failed. +Test passed. diff --git a/Lib/test/test_difflib.py b/Lib/test/test_difflib.py new file mode 100644 index 0000000..b1bcbd8 --- /dev/null +++ b/Lib/test/test_difflib.py @@ -0,0 +1,2 @@ +import doctest, difflib +doctest.testmod(difflib, verbose=1) |