Files
blockly/tests/mocha/utils_test.js
Neil Fraser 4e2f8e6e02 Use SPDX licences.
This is a followup to #3127.
At the time, SPDX licenses were pending approval by Google.
2020-02-11 13:27:20 -08:00

97 lines
4.2 KiB
JavaScript

/**
* @license
* Copyright 2019 Google LLC
* SPDX-License-Identifier: Apache-2.0
*/
suite('Utils', function() {
test('genUid', function() {
var uuids = {};
chai.assert.equal([1,2,3].indexOf(4), -1);
for (var i = 0; i < 1000; i++) {
var uuid = Blockly.utils.genUid();
chai.assert.isFalse(uuid in uuids, 'UUID different: ' + uuid);
uuids[uuid] = true;
}
});
suite('DOM', function() {
test('addClass', function() {
var p = document.createElement('p');
Blockly.utils.dom.addClass(p, 'one');
assertEquals('Adding "one"', 'one', p.className);
Blockly.utils.dom.addClass(p, 'one');
assertEquals('Adding duplicate "one"', 'one', p.className);
Blockly.utils.dom.addClass(p, 'two');
assertEquals('Adding "two"', 'one two', p.className);
Blockly.utils.dom.addClass(p, 'two');
assertEquals('Adding duplicate "two"', 'one two', p.className);
Blockly.utils.dom.addClass(p, 'three');
assertEquals('Adding "three"', 'one two three', p.className);
});
test('hasClass', function() {
var p = document.createElement('p');
p.className = ' one three two three ';
assertTrue('Has "one"', Blockly.utils.dom.hasClass(p, 'one'));
assertTrue('Has "two"', Blockly.utils.dom.hasClass(p, 'two'));
assertTrue('Has "three"', Blockly.utils.dom.hasClass(p, 'three'));
assertFalse('Has no "four"', Blockly.utils.dom.hasClass(p, 'four'));
assertFalse('Has no "t"', Blockly.utils.dom.hasClass(p, 't'));
});
test('removeClass', function() {
var p = document.createElement('p');
p.className = ' one three two three ';
Blockly.utils.dom.removeClass(p, 'two');
assertEquals('Removing "two"', 'one three three', p.className);
Blockly.utils.dom.removeClass(p, 'four');
assertEquals('Removing "four"', 'one three three', p.className);
Blockly.utils.dom.removeClass(p, 'three');
assertEquals('Removing "three"', 'one', p.className);
Blockly.utils.dom.removeClass(p, 'ne');
assertEquals('Removing "ne"', 'one', p.className);
Blockly.utils.dom.removeClass(p, 'one');
assertEquals('Removing "one"', '', p.className);
Blockly.utils.dom.removeClass(p, 'zero');
assertEquals('Removing "zero"', '', p.className);
});
});
suite('String', function() {
test('shortest string length', function() {
var len = Blockly.utils.string.shortestStringLength('one,two,three,four,five'.split(','));
assertEquals('Length of "one"', 3, len);
len = Blockly.utils.string.shortestStringLength('one,two,three,four,five,'.split(','));
assertEquals('Length of ""', 0, len);
len = Blockly.utils.string.shortestStringLength(['Hello World']);
assertEquals('List of one', 11, len);
len = Blockly.utils.string.shortestStringLength([]);
assertEquals('Empty list', 0, len);
});
test('comment word prefix', function() {
var len = Blockly.utils.string.commonWordPrefix('one,two,three,four,five'.split(','));
assertEquals('No prefix', 0, len);
len = Blockly.utils.string.commonWordPrefix('Xone,Xtwo,Xthree,Xfour,Xfive'.split(','));
assertEquals('No word prefix', 0, len);
len = Blockly.utils.string.commonWordPrefix('abc de,abc de,abc de,abc de'.split(','));
assertEquals('Full equality', 6, len);
len = Blockly.utils.string.commonWordPrefix('abc deX,abc deY'.split(','));
assertEquals('One word prefix', 4, len);
len = Blockly.utils.string.commonWordPrefix('abc de,abc deY'.split(','));
assertEquals('Overflow no', 4, len);
len = Blockly.utils.string.commonWordPrefix('abc de,abc de Y'.split(','));
assertEquals('Overflow yes', 6, len);
len = Blockly.utils.string.commonWordPrefix(['Hello World']);
assertEquals('List of one', 11, len);
len = Blockly.utils.string.commonWordPrefix([]);
assertEquals('Empty list', 0, len);
len = Blockly.utils.string.commonWordPrefix('turn&nbsp;left,turn&nbsp;right'.split(','));
assertEquals('No prefix due to &amp;nbsp;', 0, len);
len = Blockly.utils.string.commonWordPrefix('turn\u00A0left,turn\u00A0right'.split(','));
assertEquals('No prefix due to \\u00A0', 0, len);
});
});
});