diff.js 1.2 KB

123456789101112131415161718192021222324252627282930313233
  1. /**
  2. * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved.
  3. * For licensing, see LICENSE.md.
  4. */
  5. import diff from 'ckeditor5/utils/diff.js';
  6. describe( 'diff', () => {
  7. it( 'should diff strings', () => {
  8. expect( diff( 'aba', 'acca' ) ).to.deep.equals( [ 'equal', 'insert', 'insert', 'delete', 'equal' ] );
  9. } );
  10. it( 'should diff arrays', () => {
  11. expect( diff( Array.from( 'aba' ), Array.from( 'acca' ) ) ).to.deep.equals( [ 'equal', 'insert', 'insert', 'delete', 'equal' ] );
  12. } );
  13. it( 'should reverse result if the second string is shorter', () => {
  14. expect( diff( 'acca', 'aba' ) ).to.deep.equals( [ 'equal', 'delete', 'delete', 'insert', 'equal' ] );
  15. } );
  16. it( 'should diff if strings are same', () => {
  17. expect( diff( 'abc', 'abc' ) ).to.deep.equals( [ 'equal', 'equal', 'equal' ] );
  18. } );
  19. it( 'should diff if one string is empty', () => {
  20. expect( diff( '', 'abc' ) ).to.deep.equals( [ 'insert', 'insert', 'insert' ] );
  21. } );
  22. it( 'should use custom comparator', () => {
  23. expect( diff( 'aBc', 'abc' ) ).to.deep.equals( [ 'equal', 'insert', 'delete', 'equal' ] );
  24. expect( diff( 'aBc', 'abc', ( a, b ) => a.toLowerCase() == b.toLowerCase() ) ).to.deep.equals( [ 'equal', 'equal', 'equal' ] );
  25. } );
  26. } );