src/sap.ui.core/src/sap/ui/thirdparty/qunit.js
function generateHash( module, testName ) {
	var hex,
		i = 0,
		hash = 0,
		str = module + "\x1C" + testName,
		len = str.length;

	for ( ; i < len; i++ ) {
		hash  = ( ( hash << 5 ) - hash ) + str.charCodeAt( i );
		hash |= 0;
	}

	// Convert the possibly negative integer hash code into an 8 character hex string, which isn't
	// strictly necessary but increases user understanding that the id is a SHA-like hash
	hex = ( 0x100000000 + hash ).toString( 16 );
	if ( hex.length < 8 ) {
		hex = "0000000" + hex;
	}

	return hex.slice( -8 );
}
function generateHash( module, testName ) {
	var hex,
		i = 0,
		hash = 0,
		str = module + "\x1C" + testName,
		len = str.length;

	for ( ; i < len; i++ ) {
		hash  = ( ( hash << 5 ) - hash ) + str.charCodeAt( i );
		hash |= 0;
	}

	// Convert the possibly negative integer hash code into an 8 character hex string, which isn't
	// strictly necessary but increases user understanding that the id is a SHA-like hash
	hex = ( 0x100000000 + hash ).toString( 16 );
	if ( hex.length < 8 ) {
		hex = "0000000" + hex;
	}

	return hex.slice( -8 );
}
function generateHash ( module , testName ) { var hex , i = 0 , hash = 0 , str = module + "\x1C" + testName , len = str . length ; for ( ; i < len ; i ++ ) { hash = ( ( hash << 5 ) - hash ) + str . charCodeAt ( i ) ; hash |= 0 ; } // Convert the possibly negative integer hash code into an 8 character hex string, which isn't // strictly necessary but increases user understanding that the id is a SHA-like hash hex = ( 0x100000000 + hash ) . toString ( 16 ) ; if ( hex . length < 8 ) { hex = "0000000" + hex ; } return hex . slice ( - 8 ) ; }
Based on Java's String.hashCode, a simple but not rigorously collision resistant hashing function
Based on Java s String . hashCode a simple but not rigorously collision resistant hashing function