123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- {SequenceMatcher} = require '..'
- suite 'SequenceMatcher'
- test '#setSeqs', ->
- s = new SequenceMatcher()
- s.setSeqs('abcd', 'bcde')
- s.ratio().should.eql 0.75
- test '#setSeq1', ->
- s = new SequenceMatcher(null, 'abcd', 'bcde')
- s.ratio().should.eql 0.75
- s.setSeq1('bcde')
- s.ratio().should.eql 1.0
- test '#setSeq2', ->
- s = new SequenceMatcher(null, 'abcd', 'bcde')
- s.ratio().should.eql 0.75
- s.setSeq2('abcd')
- s.ratio().should.eql 1.0
- test '#findLongestMatch', ->
- isjunk = (x) -> x is ' '
- s = new SequenceMatcher(isjunk, ' abcd', 'abcd abcd')
- m = s.findLongestMatch(0, 5, 0, 9)
- m.should.eql [1, 0, 4]
- s = new SequenceMatcher(null, 'ab', 'c')
- m = s.findLongestMatch(0, 2, 0, 1)
- m.should.eql [0, 0, 0]
- test '#getMatchingBlocks', ->
- s = new SequenceMatcher(null, 'abxcd', 'abcd')
- ms = s.getMatchingBlocks()
- ms.should.eql [[0, 0, 2], [3, 2, 2], [5, 4, 0]]
- isjunk = (x) -> x is ' '
- s = new SequenceMatcher(isjunk,
- 'private Thread currentThread;',
- 'private volatile Thread currentThread;')
- s.getMatchingBlocks().should.eql [ [0, 0, 8], [8, 17, 21], [29, 38, 0] ]
- test '#getOpcodes', ->
- s = new SequenceMatcher(null, 'qabxcd', 'abycdf')
- s.getOpcodes().should.eql [
- [ 'delete' , 0 , 1 , 0 , 0 ] ,
- [ 'equal' , 1 , 3 , 0 , 2 ] ,
- [ 'replace' , 3 , 4 , 2 , 3 ] ,
- [ 'equal' , 4 , 6 , 3 , 5 ] ,
- [ 'insert' , 6 , 6 , 5 , 6 ]
- ]
- isjunk = (x) -> x is ' '
- s = new SequenceMatcher(isjunk,
- 'private Thread currentThread;',
- 'private volatile Thread currentThread;')
- s.getOpcodes().should.eql [
- ['equal', 0, 8, 0, 8],
- ['insert', 8, 8, 8, 17],
- ['equal', 8, 29, 17, 38]
- ]
- test '#getGroupedOpcodes', ->
- a = [1...40].map(String)
- b = a.slice()
- b[8...8] = 'i'
- b[20] += 'x'
- b[23...28] = []
- b[30] += 'y'
- s = new SequenceMatcher(null, a, b)
- s.getGroupedOpcodes().should.eql [
- [
- [ 'equal' , 5 , 8 , 5 , 8 ],
- [ 'insert' , 8 , 8 , 8 , 9 ],
- [ 'equal' , 8 , 11 , 9 , 12 ]
- ],
- [
- [ 'equal' , 16 , 19 , 17 , 20 ],
- [ 'replace' , 19 , 20 , 20 , 21 ],
- [ 'equal' , 20 , 22 , 21 , 23 ],
- [ 'delete' , 22 , 27 , 23 , 23 ],
- [ 'equal' , 27 , 30 , 23 , 26 ]
- ],
- [
- [ 'equal' , 31 , 34 , 27 , 30 ],
- [ 'replace' , 34 , 35 , 30 , 31 ],
- [ 'equal' , 35 , 38 , 31 , 34 ]
- ]
- ]
- test '#ratio', ->
- s = new SequenceMatcher(null, 'abcd', 'bcde')
- s.ratio().should.equal 0.75
- isjunk = (x) -> x is ' '
- s = new SequenceMatcher(isjunk,
- 'private Thread currentThread;',
- 'private volatile Thread currentThread;')
- s.ratio().toPrecision(3).should.eql '0.866'
- test '#quickRatio', ->
- s = new SequenceMatcher(null, 'abcd', 'bcde')
- s.quickRatio().should.equal 0.75
- test '#realQuickRatio', ->
- s = new SequenceMatcher(null, 'abcd', 'bcde')
- s.realQuickRatio().should.equal 1.0
|