8a254391582e6a0100f5afafdd46006683d038df
1 module( 'jquery.autoEllipsis.js' );
3 test( '-- Initial check', function() {
5 ok( $.fn
.autoEllipsis
, 'jQuery.fn.autoEllipsis defined' );
8 function createWrappedDiv( text
) {
9 var $wrapper
= $( '<div />' ).css( 'width', '100px' );
10 var $div
= $( '<div />' ).text( text
);
11 $wrapper
.append( $div
);
15 function findDivergenceIndex( a
, b
) {
17 while ( i
< a
.length
&& i
< b
.length
&& a
[i
] == b
[i
] ) {
23 test( 'Position right', function() {
26 // We need this thing to be visible, so append it to the DOM
27 var origText
= 'This is a really long random string and there is no way it fits in 100 pixels.';
28 var $wrapper
= createWrappedDiv( origText
);
29 $( 'body' ).append( $wrapper
);
30 $wrapper
.autoEllipsis( { position
: 'right' } );
32 // Verify that, and only one, span element was created
33 var $span
= $wrapper
.find( '> span' );
34 strictEqual( $span
.length
, 1, 'autoEllipsis wrapped the contents in a span element' );
36 // Check that the text fits by turning on word wrapping
37 $span
.css( 'whiteSpace', 'nowrap' );
38 strictEqual( $span
.width() <= $span
.parent().width(), true, "Text fits (span's width is no larger than its parent's width)" );
40 // Add one character using scary black magic
41 var spanText
= $span
.text();
42 var d
= findDivergenceIndex( origText
, spanText
);
43 spanText
= spanText
.substr( 0, d
) + origText
[d
] + '...';
45 // Put this text in the span and verify it doesn't fit
46 $span
.text( spanText
);
47 strictEqual( $span
.width() > $span
.parent().width(), true, 'Fit is maximal (adding one character makes it not fit any more)' );