summaryrefslogtreecommitdiffstats
path: root/Lib/test
diff options
context:
space:
mode:
authorTim Peters <tim.peters@gmail.com>2001-02-10 08:00:53 (GMT)
committerTim Peters <tim.peters@gmail.com>2001-02-10 08:00:53 (GMT)
commit9ae2148adaa6320e6e1017d9786522f2b57e10f0 (patch)
tree0ea5ae804e3adbd3136166c0e8740c9c30c59936 /Lib/test
parent6db54c69a40a0358efc237292ee55a2de5122cd4 (diff)
downloadcpython-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_difflib280
-rw-r--r--Lib/test/test_difflib.py2
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)