<commit_before>﻿/**
 * Unit tests for String.prototype
 */

// References for Resharper
/// <reference path="../qunit/qunit.js"/>
/// <reference path="../../src/firebolt.js"/>

module('String.prototype');

test('endsWith', function() {
	var str = 'Who am I, Gamling?';

	//True
	ok(str.endsWith('Gamling?'));				// 1
	ok(str.endsWith('Gamling?', 99));			// 2
	ok(str.endsWith('Gamling?', str.length));	// 3
	ok(str.endsWith('am I', 8));				// 4
	ok(str.endsWith('a', 5));					// 5

	//False
	equal(str.endsWith('Gamling?', -1), false);	// 6
	equal(str.endsWith('am I'), false);			// 7
	equal(str.endsWith('am I', 9), false);		// 8
	equal(str.endsWith('am I', 7), false);		// 9
	equal(str.endsWith('a', 6), false);			// 10
	equal(str.endsWith('a', 4), false);			// 11
	equal(str.endsWith(str + 'a'), false);		// 12
	equal(str.endsWith('?', 0), false);			// 13
});

test('escapeHTML', function() {
	ok('<img src="site.com" data-a="a&b\'c" />'.escapeHTML() === '&lt;img src="site.com" data-a="a&amp;b\'c" /&gt;',
		'escapes "<", ">", and "&"');

	ok('  a \n\t  '.escapeHTML() === '  a \n\t  ', 'preserves whitespace');
});

test('repeat', function() {
	expect(7);

	var str = 'abc';

	//Test return value
	equal(str.repeat(), '');			// 1
	equal(str.repeat(0), '');			// 2
	equal(str.repeat(1), 'abc');		// 3
	equal(str.repeat(2), 'abcabc');		// 4
	equal(str.repeat(2.5), 'abcabc');	// 5

	//Test for throwing errors

	// 6
	try {
		str.repeat(-1);
	}
	catch (e) {
		ok(true);
	}

	// 7
	try {
		str.repeat(1/0);
	}
	catch (e) {
		ok(true);
	}
});

test('startsWith', function() {
	var str = 'Who am I, Gamling?';

	//True
	ok(str.startsWith('Who'));		// 1
	ok(str.startsWith('am I', 4));	// 2

	//False
	ok(!str.startsWith('Who are'));	// 3
	ok(!str.startsWith('am I'));	// 4
});

test('unescapeHTML', function() {
	ok('&lt;img src="site.com" data-a="a&amp;b\'c" /&gt;'.unescapeHTML() === '<img src="site.com" data-a="a&b\'c" />',
		'unescapes "<", ">", and "&"');

	ok('  a \n\t  '.escapeHTML() === '  a \n\t  ', 'preserves whitespace');
});<commit_msg>Fixed up current String tests.<commit_after>﻿/**
 * Unit tests for String.prototype
 */

// References for Resharper
/// <reference path="../qunit/qunit.js"/>
/// <reference path="../../src/firebolt.js"/>

module('String.prototype');

test('endsWith', function() {
	var str = 'Who am I, Gamling?';

	//True
	strictEqual(str.endsWith('Gamling?'), true);             // 1
	strictEqual(str.endsWith('Gamling?', 99), true);         // 2
	strictEqual(str.endsWith('Gamling?', str.length), true); // 3
	strictEqual(str.endsWith('am I', 8), true);              // 4
	strictEqual(str.endsWith('a', 5), true);                 // 5

	//False
	strictEqual(str.endsWith('Gamling?', -1), false); // 6
	strictEqual(str.endsWith('am I'), false);         // 7
	strictEqual(str.endsWith('am I', 9), false);      // 8
	strictEqual(str.endsWith('am I', 7), false);      // 9
	strictEqual(str.endsWith('a', 6), false);         // 10
	strictEqual(str.endsWith('a', 4), false);         // 11
	strictEqual(str.endsWith(str + 'a'), false);      // 12
	strictEqual(str.endsWith('?', 0), false);         // 13
});

test('escapeHTML', function() {
	equal('<img src="site.com" data-a="a&b\'c" />'.escapeHTML(), '&lt;img src="site.com" data-a="a&amp;b\'c" /&gt;',
		'Escapes "<", ">", and "&".');

	equal('  a& \n\t  '.escapeHTML(), '  a&amp; \n\t  ', 'Preserves whitespace.');
});

test('repeat', function() {
	expect(7);

	var str = 'abc';

	//Test return value
	strictEqual(str.repeat(), '', 'Returns an empty string when no input is given.');
	strictEqual(str.repeat(0), '', 'Returns an empty string when given 0 as input.');
	strictEqual(str.repeat(1), str, 'Returns the original string when given 1 as input.');
	strictEqual(str.repeat(3), 'abcabcabc', 'Correctly repeats the string the specified number of times.');
	strictEqual(str.repeat(2.5), 'abcabc', 'Rounds down the input number before repeating the string.');

	//Test for throwing errors
	try {
		str.repeat(-1);
	}
	catch (e) {
		ok(true, 'Thows an error when given a negative number as input.');
	}

	try {
		str.repeat(1/0);
	}
	catch (e) {
		ok(true, 'Thows an error when given infinity as input.');
	}
});

test('startsWith', function() {
	var str = 'Who am I, Gamling?';

	//True
	strictEqual(str.startsWith('Who'), true);      // 1
	strictEqual(str.startsWith('am I', 4), true);  // 2

	//False
	strictEqual(str.startsWith('Who are'), false); // 3
	strictEqual(str.startsWith('am I'), false);    // 4
});

test('unescapeHTML', function() {
	equal('&lt;img src="site.com" data-a="a&amp;b\'c" /&gt;'.unescapeHTML(), '<img src="site.com" data-a="a&b\'c" />',
		'Unescapes "<", ">", and "&".');

	equal('  a&amp; \n\t  '.unescapeHTML(), '  a& \n\t  ', 'Preserves whitespace.');
});
{'fraction_non_alphanumeric': 0.2451802179379715, 'fraction_numerical': 0.019069572506286672, 'mean_word_length': 3.2426666666666666, 'pattern_counts': {'":': 0, '<': 15, '<?xml version=': 0, '>': 15, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2057479', 'n_tokens_mistral': 1946, 'n_tokens_neox': 1842, 'n_words': 411}