/*______________
| ______ | U I Z E J A V A S C R I P T F R A M E W O R K
| / / | ---------------------------------------------------
| / O / | MODULE : Uize.Test.Uize.Str.Whitespace Class
| / / / |
| / / / /| | ONLINE : http://uize.com
| /____/ /__/_| | COPYRIGHT : (c)2014-2016 UIZE
| /___ | LICENSE : Available under MIT License or GNU General Public License
|_______________| http://uize.com/license.html
*/
/* Module Meta Data
type: Test
importance: 1
codeCompleteness: 100
docCompleteness: 100
*/
/*?
Introduction
The =Uize.Test.Uize.Str.Whitespace= module defines a suite of unit tests for the =Uize.Str.Whitespace= module.
*DEVELOPERS:* `Chris van Rensburg`
*/
Uize.module ({
name:'Uize.Test.Uize.Str.Whitespace',
builder:function () {
'use strict';
var
_inlineWhitespaceChars = [
'\t',
'\x0b',
' ',
'\f',
'\xa0',
'\u2000',
'\u2001',
'\u2002',
'\u2003',
'\u2004',
'\u2005',
'\u2006',
'\u2007',
'\u2008',
'\u2009',
'\u200a',
'\u200b',
'\u2028',
'\u2029',
'\u3000'
],
_linebreakWhitespaceChars = [
'\n',
'\r'
],
_whitespaceChars = _inlineWhitespaceChars.concat (_linebreakWhitespaceChars),
_whitespaceStr = _whitespaceChars.join ('')
;
return Uize.Test.resolve ({
title:'Test for Uize.Str.Whitespace Module',
test:[
Uize.Test.requiredModulesTest ('Uize.Str.Whitespace'),
Uize.Test.staticMethodsTest ([
['Uize.Str.Whitespace.isWhitespace',[
['A string containing only whitespace characters is considered whitespace',
_whitespaceStr,
true
],
['A string that is all whitespace characters except for a single non-whitespace character is not considered whitespace',
'#' + _whitespaceStr,
false
],
['An empty string is not considered whitespace, since it contains no whitespace characters',
'',
false
]
]],
['Uize.Str.Whitespace.isNonWhitespace',[
['A string containing only non-whitespace characters is considered non-whitespace',
'foobar',
true
],
['A string that is all non-whitespace characters except for a single whitespace character is not considered non-whitespace',
'foo bar',
false
],
['An empty string is not considered non-whitespace, since it contains no non-whitespace characters',
'',
false
]
]],
['Uize.Str.Whitespace.hasWhitespace',[
['A string containing only non-whitespace characters is not considered to have whitespace',
'foobar',
false
],
['A string that starts with whitespace characters is considered to have whitespace',
' \t foobar',
true
],
['A string that ends with whitespace characters is considered to have whitespace',
'foobar \t ',
true
],
['A string with whitespace characters in the middle is considered to have whitespace',
'foo \t bar',
true
],
['A string that is all whitespace characters is considered to have whitespace',
_whitespaceStr,
true
],
['An empty string is not considered to have whitespace',
'',
false
]
]],
['Uize.Str.Whitespace.hasNonWhitespace',[
['A string containing only non-whitespace characters is considered to have non-whitespace',
'foobar',
true
],
['A string that starts with non-whitespace characters is considered to have non-whitespace',
'foobar \t\n\r',
true
],
['A string that ends with non-whitespace characters is considered to have non-whitespace',
' \t\n\rfoobar',
true
],
['A string with non-whitespace characters in the middle is considered to have non-whitespace',
' \t\n\rfoobar \t\n\r',
true
],
['A string that is all whitespace characters is not considered to have non-whitespace',
_whitespaceStr,
false
],
['An empty string is not considered to have non-whitespace',
'',
false
]
]],
['Uize.Str.Whitespace.indexOfWhitespace',[
['When the source string is empty, the value -1 is returned',
'',
-1
],
['When the source string contains only non-whitespace characters, the value -1 is returned',
'foobar',
-1
],
['When the source string starts with whitespace, the value 0 is returned',
' foobar',
0
],
['When the source string contains multiple whitespace segments, the index of the first whitespace segment is returned',
'foo bar baz qux ',
3
],
['When the optional start pos argument is specified, the index of the first whitespace segment after the start pos is returned',
['foo bar baz qux ',4],
7
],
['When the optional start pos lies in the middle of a whitespace segment, then the start pos value is returned',
['foo \r\n\t\n \rbar',5],
5
],
['When the optional start pos is less than 0, then the index of the first whitespace character is returned',
['foo barbazqux ',-100],
3
],
['When the optional start pos argument is specified and there is no whitespace segment after the start pos, then the value -1 is returned',
['foo barbazqux',4],
-1
],
['When the optional start pos lies after the end of the source string, then the value -1 is returned',
['foo barbazqux ',100],
-1
]
]],
['Uize.Str.Whitespace.indexOfNonWhitespace',[
['When the source string is empty, the value -1 is returned',
'',
-1
],
['When the source string contains only whitespace characters, the value -1 is returned',
' \r\t\n ',
-1
],
['When the source string starts with a non-whitespace character, the value 0 is returned',
'foo bar',
0
],
['When the source string ends with a non-whitespace segment, the index of the first character in that segment is returned',
' foo',
8
],
['When the source string contains multiple non-whitespace segments, the index of the first non-whitespace character is returned',
' foo bar ',
3
],
['When the optional start pos argument is specified, the index of the first non-whitespace character after the start pos is returned',
['foo bar baz',3],
5
],
['When the optional start pos lies in the middle of a non-whitespace segment, then the start pos value is returned',
[' foobarbaz ',8],
8
],
['When the optional start pos is less than 0, then the index of the first non-whitespace character is returned',
[' foobarbaz ',-100],
3
],
['When the optional start pos argument is specified and there are no non-whitespace characters after the start pos, then the value -1 is returned',
['foo \r\n\t ',3],
-1
],
['When the optional start pos lies after the end of the source string, then the value -1 is returned',
['foobarbazqux',100],
-1
]
]],
['Uize.Str.Whitespace.lastIndexOfWhitespace',[
['When the source string is empty, the value -1 is returned',
'',
-1
],
['When the source string contains only non-whitespace characters, the value -1 is returned',
'foobar',
-1
],
['When the source string ends with whitespace, the index of the last character in the string is returned',
'foobar ',
8
],
['When the source string contains multiple whitespace segments, the index of the last whitespace character is returned',
'foo bar baz',
9
],
['When the optional start pos argument is specified, the index of the last whitespace segment before the start pos is returned',
['foo bar baz qux ',10],
7
],
['When the optional start pos lies in the middle of a whitespace segment, then the start pos value is returned',
['foo \r\n\t\n \rbar',8],
8
],
['When the optional start pos lies after the end of the source string, then the index of the last whitespace character before the end of the string is returned',
['foo bar',100],
4
],
['When the optional start pos argument is specified and there is no whitespace segment before the start pos, then the value -1 is returned',
['foobarbaz qux',8],
-1
],
['When the optional start pos is less than 0, then the value -1 is returned',
['foo barbazqux ',-100],
-1
]
]],
['Uize.Str.Whitespace.lastIndexOfNonWhitespace',[
['When the source string is empty, the value -1 is returned',
'',
-1
],
['When the source string contains only whitespace characters, the value -1 is returned',
' \r\n\t\n ',
-1
],
['When the source string ends with non-whitespace, the index of the last character in the string is returned',
' foobar',
8
],
['When the source string contains multiple non-whitespace segments, the index of the last non-whitespace character is returned',
' foo bar ',
9
],
['When the optional start pos argument is specified, the index of the last non-whitespace segment before the start pos is returned',
[' foo bar ',7],
4
],
['When the optional start pos lies in the middle of a non-whitespace segment, then the start pos value is returned',
[' foobar ',6],
6
],
['When the optional start pos lies after the end of the source string, then the index of the last non-whitespace character before the end of the string is returned',
[' foo bar ',100],
9
],
['When the optional start pos argument is specified and there is no non-whitespace segment before the start pos, then the value -1 is returned',
[' \r\n\t foobar ',5],
-1
],
['When the optional start pos is less than 0, then the value -1 is returned',
['foo barbazqux ',-100],
-1
]
]]
]),
/*** tests for static properties ***/
Uize.Test.staticPropertyTest ('Uize.Str.Whitespace.inlineWhitespaceCharCodes','object'),
{
title:'The Uize.Str.Whitespace.inlineWhitespaceCharCodes static property contains a list of the character codes for all the inline whitespace characters',
test:function () {
return this.expect (
_inlineWhitespaceChars.sort (),
Uize.map (Uize.Str.Whitespace.inlineWhitespaceCharCodes,'String.fromCharCode (value)').sort ()
);
}
},
Uize.Test.staticPropertyTest ('Uize.Str.Whitespace.linebreakCharCodes','object'),
{
title:'The Uize.Str.Whitespace.linebreakCharCodes static property contains a list of the character codes for all the line break whitespace characters',
test:function () {
return this.expect (
_linebreakWhitespaceChars.sort (),
Uize.map (Uize.Str.Whitespace.linebreakCharCodes,'String.fromCharCode (value)').sort ()
);
}
}
]
});
}
});