123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368 |
- if (!dojo._hasResource["dojox.uuid.tests.uuid"]) { // _hasResource checks added
- // by build. Do not use
- // _hasResource directly in
- // your code.
- dojo._hasResource["dojox.uuid.tests.uuid"] = true;
- dojo.provide("dojox.uuid.tests.uuid");
- dojo.require("dojox.uuid");
- dojo.require("dojox.uuid.Uuid");
- dojo.require("dojox.uuid.generateRandomUuid");
- dojo.require("dojox.uuid.generateTimeBasedUuid");
- dojox.uuid.tests.uuid.checkValidityOfUuidString = function(
- /* String */ uuidString) {
- // summary:
- // A helper function that's used by the registered test functions
- var NIL_UUID = "00000000-0000-0000-0000-000000000000";
- if (uuidString == NIL_UUID) {
- // We'll consider the Nil UUID to be valid, so now
- // we can just return, with not further checks.
- return;
- }
- doh.assertTrue(uuidString.length == 36); // UUIDs have 36 characters
- var validCharacters = "0123456789abcedfABCDEF-";
- var character;
- var position;
- for (var i = 0; i < 36; ++i) {
- character = uuidString.charAt(i);
- position = validCharacters.indexOf(character);
- doh.assertTrue(position != -1); // UUIDs have only valid characters
- }
- var arrayOfParts = uuidString.split("-");
- doh.assertTrue(arrayOfParts.length == 5); // UUIDs have 5 sections
- // separated by 4 hyphens
- doh.assertTrue(arrayOfParts[0].length == 8); // Section 0 has 8
- // characters
- doh.assertTrue(arrayOfParts[1].length == 4); // Section 1 has 4
- // characters
- doh.assertTrue(arrayOfParts[2].length == 4); // Section 2 has 4
- // characters
- doh.assertTrue(arrayOfParts[3].length == 4); // Section 3 has 4
- // characters
- doh.assertTrue(arrayOfParts[4].length == 12); // Section 4 has 8
- // characters
- // check to see that the "UUID variant code" starts with the binary bits
- // '10'
- var section3 = arrayOfParts[3];
- var HEX_RADIX = 16;
- var hex3 = parseInt(section3, HEX_RADIX);
- var binaryString = hex3.toString(2);
- // alert("section3 = " + section3 + "\n binaryString = " +
- // binaryString);
- doh.assertTrue(binaryString.length == 16); // section 3 has 16 bits
- doh.assertTrue(binaryString.charAt(0) == '1'); // first bit of section
- // 3 is 1
- doh.assertTrue(binaryString.charAt(1) == '0'); // second bit of section
- // 3 is 0
- }
- dojox.uuid.tests.uuid.checkValidityOfTimeBasedUuidString = function(
- /* String */ uuidString) {
- // summary:
- // A helper function that's used by the registered test functions
- dojox.uuid.tests.uuid.checkValidityOfUuidString(uuidString);
- var arrayOfParts = uuidString.split("-");
- var section2 = arrayOfParts[2];
- doh.assertTrue(section2.charAt(0) == "1"); // Section 2 starts with a 1
- }
- dojox.uuid.tests.uuid.checkForPseudoNodeBitInTimeBasedUuidString = function(
- /* String */ uuidString) {
- // summary:
- // A helper function that's used by the registered test functions
- var arrayOfParts = uuidString.split("-");
- var section4 = arrayOfParts[4];
- var firstChar = section4.charAt(0);
- var HEX_RADIX = 16;
- var hexFirstChar = parseInt(firstChar, HEX_RADIX);
- var binaryString = hexFirstChar.toString(2);
- var firstBit;
- if (binaryString.length == 4) {
- firstBit = binaryString.charAt(0);
- } else {
- firstBit = '0';
- }
- doh.assertTrue(firstBit == '1'); // first bit of section 4 is 1
- }
- doh.register("dojox.uuid.tests.uuid", [
- /*
- * function test_uuid_performance(){ var start = allGetServerTime(); var
- * startMS = start.valueOf(); var nowMS = startMS; var i; var now;
- * var numTrials = 100000;
- *
- * while(nowMS == startMS){ now = allGetServerTime(); nowMS = now.valueOf(); }
- *
- * startMS = nowMS; for(i = 0; i < numTrials; ++i){ var a =
- * dojox.uuid.LightweightGenerator.generate(); } now = allGetServerTime();
- * nowMS = now.valueOf(); var elapsedMS = nowMS - startMS; //
- * dojo.log.debug("created " + numTrials + " UUIDs in " + elapsedMS + "
- * milliseconds"); },
- */
- function test_uuid_capitalization() {
- var randomLowercaseString = "3b12f1df-5232-4804-897e-917bf397618a";
- var randomUppercaseString = "3B12F1DF-5232-4804-897E-917BF397618A";
- var timebasedLowercaseString = "b4308fb0-86cd-11da-a72b-0800200c9a66";
- var timebasedUppercaseString = "B4308FB0-86CD-11DA-A72B-0800200C9A66";
- var uuidRL = new dojox.uuid.Uuid(randomLowercaseString);
- var uuidRU = new dojox.uuid.Uuid(randomUppercaseString);
- var uuidTL = new dojox.uuid.Uuid(timebasedLowercaseString);
- var uuidTU = new dojox.uuid.Uuid(timebasedUppercaseString);
- doh.assertTrue(uuidRL.isEqual(uuidRU));
- doh.assertTrue(uuidRU.isEqual(uuidRL));
- doh.assertTrue(uuidTL.isEqual(uuidTU));
- doh.assertTrue(uuidTU.isEqual(uuidTL));
- },
- function test_uuid_constructor() {
- var uuid, uuidToo;
- var nilUuid = '00000000-0000-0000-0000-000000000000';
- uuid = new dojox.uuid.Uuid();
- doh.assertTrue(uuid == nilUuid); // 'new dojox.uuid.Uuid()' returns
- // the Nil UUID
- var randomUuidString = "3b12f1df-5232-4804-897e-917bf397618a";
- uuid = new dojox.uuid.Uuid(randomUuidString);
- doh.assertTrue(uuid.isValid());
- doh.assertTrue(uuid.getVariant() == dojox.uuid.variant.DCE);
- doh.assertTrue(uuid.getVersion() == dojox.uuid.version.RANDOM);
- uuidToo = new dojox.uuid.Uuid(new String(randomUuidString));
- doh.assertTrue(uuid.isEqual(uuidToo));
- var timeBasedUuidString = "b4308fb0-86cd-11da-a72b-0800200c9a66";
- uuid = new dojox.uuid.Uuid(timeBasedUuidString);
- doh.assertTrue(uuid.isValid());
- doh.assertTrue(uuid.getVariant() == dojox.uuid.variant.DCE);
- doh.assertTrue(uuid.getVersion() == dojox.uuid.version.TIME_BASED);
- doh.assertTrue(uuid.getNode() == "0800200c9a66");
- var timestamp = uuid.getTimestamp();
- var date = uuid.getTimestamp(Date);
- var dateString = uuid.getTimestamp(String);
- var hexString = uuid.getTimestamp("hex");
- var now = allGetServerTime();
- doh.assertTrue(timestamp.valueOf() == date.valueOf());
- doh.assertTrue(hexString == "1da86cdb4308fb0");
- doh.assertTrue(timestamp < now);
- },
- function test_uuid_generators() {
- var generators = [dojox.uuid.generateNilUuid,
- dojox.uuid.generateRandomUuid, dojox.uuid.generateTimeBasedUuid];
- for (var i in generators) {
- var generator = generators[i];
- var uuidString = generator();
- doh.assertTrue((typeof uuidString) == 'string');
- dojox.uuid.tests.uuid.checkValidityOfUuidString(uuidString);
- var uuid = new dojox.uuid.Uuid(uuidString);
- if (generator != dojox.uuid.generateNilUuid) {
- doh.assertTrue(uuid.getVariant() == dojox.uuid.variant.DCE);
- }
- doh.assertTrue(uuid.isEqual(uuid));
- doh.assertTrue(uuid.compare(uuid) == 0);
- doh.assertTrue(dojox.uuid.Uuid.compare(uuid, uuid) == 0);
- dojox.uuid.tests.uuid.checkValidityOfUuidString(uuid.toString());
- doh.assertTrue(uuid.toString().length == 36);
- if (generator != dojox.uuid.generateNilUuid) {
- var uuidStringOne = generator();
- var uuidStringTwo = generator();
- doh.assertTrue(uuidStringOne != uuidStringTwo);
- dojox.uuid.Uuid.setGenerator(generator);
- var uuidOne = new dojox.uuid.Uuid();
- var uuidTwo = new dojox.uuid.Uuid();
- doh.assertTrue(generator === dojox.uuid.Uuid.getGenerator());
- dojox.uuid.Uuid.setGenerator(null);
- doh.assertTrue(uuidOne != uuidTwo);
- doh.assertTrue(!uuidOne.isEqual(uuidTwo));
- doh.assertTrue(!uuidTwo.isEqual(uuidOne));
- var oneVsTwo = dojox.uuid.Uuid.compare(uuidOne, uuidTwo); // either
- // 1 or
- // -1
- var twoVsOne = dojox.uuid.Uuid.compare(uuidTwo, uuidOne); // either
- // -1
- // or 1
- doh.assertTrue(oneVsTwo + twoVsOne == 0);
- doh.assertTrue(oneVsTwo != 0);
- doh.assertTrue(twoVsOne != 0);
- doh.assertTrue(!uuidTwo.isEqual(uuidOne));
- }
- if (generator == dojox.uuid.generateRandomUuid) {
- doh.assertTrue(uuid.getVersion() == dojox.uuid.version.RANDOM);
- }
- if (generator == dojox.uuid.generateTimeBasedUuid) {
- dojox.uuid.tests.uuid.checkValidityOfTimeBasedUuidString(uuid
- .toString());
- doh
- .assertTrue(uuid.getVersion() == dojox.uuid.version.TIME_BASED);
- doh.assertTrue(dojo.isString(uuid.getNode()));
- doh.assertTrue(uuid.getNode().length == 12);
- var timestamp = uuid.getTimestamp();
- var date = uuid.getTimestamp(Date);
- var dateString = uuid.getTimestamp(String);
- var hexString = uuid.getTimestamp("hex");
- doh.assertTrue(date instanceof Date);
- doh.assertTrue(timestamp.valueOf() == date.valueOf());
- doh.assertTrue(hexString.length == 15);
- }
- }
- },
- function test_uuid_nilGenerator() {
- var nilUuidString = '00000000-0000-0000-0000-000000000000';
- var uuidString = dojox.uuid.generateNilUuid();
- doh.assertTrue(uuidString == nilUuidString);
- },
- function test_uuid_timeBasedGenerator() {
- var uuid; // an instance of dojox.uuid.Uuid
- var string; // a simple string literal
- var generator = dojox.uuid.generateTimeBasedUuid;
- var string1 = generator();
- var uuid2 = new dojox.uuid.Uuid(generator());
- var string3 = generator("017bf397618a"); // hardwareNode
- var string4 = generator("f17bf397618a"); // pseudoNode
- var string5 = generator(new String("017BF397618A"));
- dojox.uuid.generateTimeBasedUuid.setNode("017bf397618a");
- var string6 = generator(); // the generated UUID has node ==
- // "017bf397618a"
- var uuid7 = new dojox.uuid.Uuid(generator()); // the generated UUID
- // has node ==
- // "017bf397618a"
- var returnedNode = dojox.uuid.generateTimeBasedUuid.getNode();
- doh.assertTrue(returnedNode == "017bf397618a");
- function getNode(string) {
- var arrayOfStrings = string.split('-');
- return arrayOfStrings[4];
- }
- dojox.uuid.tests.uuid
- .checkForPseudoNodeBitInTimeBasedUuidString(string1);
- dojox.uuid.tests.uuid.checkForPseudoNodeBitInTimeBasedUuidString(uuid2
- .toString());
- dojox.uuid.tests.uuid
- .checkForPseudoNodeBitInTimeBasedUuidString(string4);
- doh.assertTrue(getNode(string3) == "017bf397618a");
- doh.assertTrue(getNode(string4) == "f17bf397618a");
- doh.assertTrue(getNode(string5) == "017bf397618a");
- doh.assertTrue(getNode(string6) == "017bf397618a");
- doh.assertTrue(uuid7.getNode() == "017bf397618a");
- dojox.uuid.tests.uuid.checkValidityOfTimeBasedUuidString(string1);
- dojox.uuid.tests.uuid.checkValidityOfTimeBasedUuidString(uuid2
- .toString());
- dojox.uuid.tests.uuid.checkValidityOfTimeBasedUuidString(string3);
- dojox.uuid.tests.uuid.checkValidityOfTimeBasedUuidString(string4);
- dojox.uuid.tests.uuid.checkValidityOfTimeBasedUuidString(string5);
- dojox.uuid.tests.uuid.checkValidityOfTimeBasedUuidString(string6);
- dojox.uuid.tests.uuid.checkValidityOfTimeBasedUuidString(uuid7
- .toString());
- },
- function test_uuid_invalidUuids() {
- var uuidStrings = [];
- uuidStrings.push("Hello world!"); // not a UUID
- uuidStrings.push("3B12F1DF-5232-1804-897E-917BF39761"); // too short
- uuidStrings.push("3B12F1DF-5232-1804-897E-917BF39761-8A"); // extra '-'
- uuidStrings.push("3B12F1DF-5232-1804-897E917BF39761-8A"); // last '-'
- // in wrong
- // place
- uuidStrings.push("HB12F1DF-5232-1804-897E-917BF397618A"); // "HB12F1DF"
- // is not a
- // hex
- // string
- var numberOfFailures = 0;
- for (var i in uuidStrings) {
- var uuidString = uuidStrings[i];
- try {
- new dojox.uuid.Uuid(uuidString);
- } catch (e) {
- ++numberOfFailures;
- }
- }
- doh.assertTrue(numberOfFailures == uuidStrings.length);
- }]);
- /*
- * function test_uuid_get64bitArrayFromFloat(){ // summary: // This is a
- * test we'd like to be able to run, but we can't run it // because it tests
- * a function which is private in generateTimeBasedUuid var x = Math.pow(2,
- * 63) + Math.pow(2, 15); var result =
- * dojox.uuid.generateTimeBasedUuid._get64bitArrayFromFloat(x);
- * doh.assertTrue(result[0] === 0x8000); doh.assertTrue(result[1] ===
- * 0x0000); doh.assertTrue(result[2] === 0x0000); doh.assertTrue(result[3]
- * === 0x8000);
- *
- * var date = allGetServerTime(); x = date.valueOf(); result =
- * dojox.uuid.generateTimeBasedUuid._get64bitArrayFromFloat(x); var
- * reconstructedFloat = result[0]; reconstructedFloat *= 0x10000;
- * reconstructedFloat += result[1]; reconstructedFloat *= 0x10000;
- * reconstructedFloat += result[2]; reconstructedFloat *= 0x10000;
- * reconstructedFloat += result[3];
- *
- * doh.assertTrue(reconstructedFloat === x); }
- *
- * function test_uuid_addTwo64bitArrays(){ // summary: // This is a test
- * we'd like to be able to run, but we can't run it // because it tests a
- * function which is private in generateTimeBasedUuid var a = [0x0000,
- * 0x0000, 0x0000, 0x0001]; var b = [0x0FFF, 0xFFFF, 0xFFFF, 0xFFFF]; var
- * result = dojox.uuid.generateTimeBasedUuid._addTwo64bitArrays(a, b);
- * doh.assertTrue(result[0] === 0x1000); doh.assertTrue(result[1] ===
- * 0x0000); doh.assertTrue(result[2] === 0x0000); doh.assertTrue(result[3]
- * === 0x0000);
- *
- * a = [0x4000, 0x8000, 0x8000, 0x8000]; b = [0x8000, 0x8000, 0x8000,
- * 0x8000]; result = dojox.uuid.generateTimeBasedUuid._addTwo64bitArrays(a,
- * b); doh.assertTrue(result[0] === 0xC001); doh.assertTrue(result[1] ===
- * 0x0001); doh.assertTrue(result[2] === 0x0001); doh.assertTrue(result[3]
- * === 0x0000);
- *
- * a = [7, 6, 2, 5]; b = [1, 0, 3, 4]; result =
- * dojox.uuid.generateTimeBasedUuid._addTwo64bitArrays(a, b);
- * doh.assertTrue(result[0] === 8); doh.assertTrue(result[1] === 6);
- * doh.assertTrue(result[2] === 5); doh.assertTrue(result[3] === 9); }
- *
- * function test_uuid_multiplyTwo64bitArrays(){ // summary: // This is a
- * test we'd like to be able to run, but we can't run it // because it tests
- * a function which is private in generateTimeBasedUuid var a = [ 0, 0x0000,
- * 0x0000, 0x0003]; var b = [0x1111, 0x1234, 0x0000, 0xFFFF]; var result =
- * dojox.uuid.generateTimeBasedUuid._multiplyTwo64bitArrays(a, b);
- * doh.assertTrue(result[0] === 0x3333); doh.assertTrue(result[1] ===
- * 0x369C); doh.assertTrue(result[2] === 0x0002); doh.assertTrue(result[3]
- * === 0xFFFD);
- *
- * a = [0, 0, 0, 5]; b = [0, 0, 0, 4]; result =
- * dojox.uuid.generateTimeBasedUuid._multiplyTwo64bitArrays(a, b);
- * doh.assertTrue(result[0] === 0); doh.assertTrue(result[1] === 0);
- * doh.assertTrue(result[2] === 0); doh.assertTrue(result[3] === 20);
- *
- * a = [0, 0, 2, 5]; b = [0, 0, 3, 4]; result =
- * dojox.uuid.generateTimeBasedUuid._multiplyTwo64bitArrays(a, b);
- * doh.assertTrue(result[0] === 0); doh.assertTrue(result[1] === 6);
- * doh.assertTrue(result[2] === 23); doh.assertTrue(result[3] === 20); }
- */
- }
|