// Run for enough iterations that we're likely to catch edge-cases, like
// failing to set a reserved bit:
const iterations = 256;
// Track all the UUIDs generated during test run, bail if we ever collide:
const uuids = new Set()
function randomUUID() {
    const uuid = self.crypto.randomUUID();
    if (uuids.has(uuid)) {
        throw new Error(`uuid collision ${uuid}`)
    }
    uuids.add(uuid);
    return uuid;
}

// UUID is in namespace format (16 bytes separated by dashes):
test(function() {
    const UUIDRegex = /^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/
    for (let i = 0; i < iterations; i++) {
        assert_true(UUIDRegex.test(randomUUID()));
    }
}, "namespace format");

// Set the 4 most significant bits of array[6], which represent the UUID
// version, to 0b0100:
test(function() {
    for (let i = 0; i < iterations; i++) {
        let value = parseInt(randomUUID().split('-')[2].slice(0, 2), 16);
        value &= 0b11110000;
        assert_true(value === 0b01000000);
    }
}, "version set");

// Set the 2 most significant bits of array[8], which represent the UUID
// variant, to 0b10:
test(function() {
    for (let i = 0; i < iterations; i++) {
        // Grab the byte representing array[8]:
        let value = parseInt(randomUUID().split('-')[3].slice(0, 2), 16);
        value &= 0b11000000
        assert_true(value === 0b10000000);
    }
}, "variant set");
