8
0

range.js 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. /**
  2. * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved.
  3. * For licensing, see LICENSE.md.
  4. */
  5. /* bender-tags: treeview */
  6. 'use strict';
  7. import Range from '/ckeditor5/engine/treeview/range.js';
  8. import Position from '/ckeditor5/engine/treeview/position.js';
  9. describe( 'Range', () => {
  10. describe( 'constructor', () => {
  11. it( 'creates range from provided positions', () => {
  12. const start = new Position( {}, 1 );
  13. const end = new Position( {}, 2 );
  14. const range = new Range( start, end );
  15. expect( range ).to.be.an.instanceof( Range );
  16. expect( range ).to.have.property( 'start' ).that.not.equals( start );
  17. expect( range ).to.have.property( 'end' ).that.not.equals( end );
  18. expect( range.start.parent ).to.equal( start.parent );
  19. expect( range.end.parent ).to.equal( end.parent );
  20. expect( range.start.offset ).to.equal( start.offset );
  21. expect( range.end.offset ).to.equal( end.offset );
  22. } );
  23. } );
  24. describe( 'isEqual', () => {
  25. it( 'should return true for the same range', () => {
  26. const start = new Position( {}, 1 );
  27. const end = new Position( {}, 2 );
  28. const range = new Range( start, end );
  29. expect( range.isEqual( range ) ).to.be.true;
  30. } );
  31. it( 'should return true for ranges with same start and end positions', () => {
  32. const start = new Position( {}, 1 );
  33. const end = new Position( {}, 2 );
  34. const range1 = new Range( start, end );
  35. const range2 = new Range( start, end );
  36. expect( range1.isEqual( range2 ) ).to.be.true;
  37. } );
  38. it( 'should return false if start position is different', () => {
  39. const start1 = new Position( {}, 1 );
  40. const start2 = new Position( {}, 1 );
  41. const end = new Position( {}, 2 );
  42. const range1 = new Range( start1, end );
  43. const range2 = new Range( start2, end );
  44. expect( range1.isEqual( range2 ) ).to.be.false;
  45. } );
  46. it( 'should return false if end position is different', () => {
  47. const start = new Position( {}, 1 );
  48. const end1 = new Position( {}, 2 );
  49. const end2 = new Position( {}, 2 );
  50. const range1 = new Range( start, end1 );
  51. const range2 = new Range( start, end2 );
  52. expect( range1.isEqual( range2 ) ).to.be.false;
  53. } );
  54. it( 'should return false for ranges with same root and different offsets', () => {
  55. const mockObject = {};
  56. const range1 = new Range( new Position( mockObject, 0 ), new Position( mockObject, 10 ) );
  57. const range2 = new Range( new Position( mockObject, 2 ), new Position( mockObject, 10 ) );
  58. expect( range1.isEqual( range2 ) ).to.be.false;
  59. } );
  60. } );
  61. describe( 'createFromRange', () => {
  62. it( 'should create a new instance of Range that is equal to passed range', () => {
  63. const range = new Range( new Position( {}, 0 ), new Position( {}, 1 ) );
  64. const clone = Range.createFromRange( range );
  65. expect( clone ).not.to.be.equal( range ); // clone is not pointing to the same object as position
  66. expect( clone.isEqual( range ) ).to.be.true; // but they are equal in the position-sense
  67. } );
  68. } );
  69. } );