gionuibk's picture
Upload folder using huggingface_hub
61d39e2 verified
/* eslint-disable */
// TODO: Make these more compatible with eslint
window.kvTests = [
{
name: "testSetKeyWithValue",
description: "Test setting a key-value pair and verify it returns true",
test: async function() {
try {
const result = await puter.kv.set('testKey', 'testValue');
assert(result === true, "Failed to set key with value");
pass("testSetKeyWithValue passed");
} catch (error) {
fail("testSetKeyWithValue failed:", error);
}
}
},
{
name: "testUpdateKey",
description: "Test updating an existing key with a new value and verify it returns true",
test: async function() {
try {
await puter.kv.set('updateKey', 'initialValue');
const result = await puter.kv.set('updateKey', 'updatedValue');
assert(result === true, "Failed to update existing key");
pass("testUpdateKey passed");
} catch (error) {
fail("testUpdateKey failed:", error);
}
}
},
{
name: "testKeySizeLimit",
description: "Test setting a key that exceeds the size limit and verify it throws an error",
test: async function() {
try {
const largeKey = 'a'.repeat(1025); // 1 KB + 1 byte
await puter.kv.set(largeKey, 'value');
fail("testKeySizeLimit failed: No error thrown for large key");
} catch (error) {
pass("testKeySizeLimit passed:", error.message);
}
}
},
{
name: "testInvalidParameters",
description: "Test setting a key with invalid parameters and verify it throws an error",
test: async function() {
try {
await puter.kv.set(undefined, 'value');
fail("testInvalidParameters failed: No error thrown for undefined key");
} catch (error) {
pass("testInvalidParameters passed:", error.message);
}
}
},
{
name: "testEmptyKey",
description: "Test setting an empty key and verify it throws an error",
test: async function() {
try {
await puter.kv.set('', 'value');
fail("testEmptyKey failed: No error thrown for empty key");
} catch (error) {
pass("testEmptyKey passed:", error.message);
}
}
},
{
name: "testSetNullValue",
description: "Test setting a null value and verify it returns true",
test: async function() {
try {
const result = await puter.kv.set('nullValueKey', null);
assert(result === true, "Failed to set null value");
pass("testSetNullValue passed");
} catch (error) {
fail("testSetNullValue failed:", error);
}
}
},
{
name: "testSetObjectValue",
description: "Test setting an object as a value and verify it returns true",
test: async function() {
try {
const result = await puter.kv.set('objectKey', { a: 1 });
assert(result === true, "Failed to set object as value");
pass("testSetObjectValue passed");
} catch (error) {
fail("testSetObjectValue failed:", error);
}
}
},
{
name: "testSetKeyWithSpecialCharacters",
description: "Test setting a key with special characters and verify it returns true",
test: async function() {
try {
const result = await puter.kv.set('special@Key#', 'value');
assert(result === true, "Failed to set key with special characters");
pass("testSetKeyWithSpecialCharacters passed");
} catch (error) {
fail("testSetKeyWithSpecialCharacters failed:", error);
}
}
},
{
name: "testSetLargeValue",
description: "Test setting a large value and verify it returns true",
test: async function() {
try {
const largeValue = 'a'.repeat(10000); // 10 KB
const result = await puter.kv.set('largeValueKey', largeValue);
assert(result === true, "Failed to set large value");
pass("testSetLargeValue passed");
} catch (error) {
fail("testSetLargeValue failed:", error);
}
}
},
{
name: "testSetBooleanValue",
description: "Test setting a boolean value and verify it returns true",
test: async function() {
try {
const result = await puter.kv.set('booleanKey', true);
assert(result === true, "Failed to set boolean value");
pass("testSetBooleanValue passed");
} catch (error) {
fail("testSetBooleanValue failed:", error);
}
}
},
{
name: "testSetNumericKey",
description: "Test setting a numeric key and verify it returns true",
test: async function() {
try {
const result = await puter.kv.set(123, 'value');
assert(result === true, "Failed to set numeric key");
pass("testSetNumericKey passed");
} catch (error) {
fail("testSetNumericKey failed:", error);
}
}
},
{
name: "testSetConcurrentKeys",
description: "Test setting multiple keys concurrently and verify all return true",
test: async function() {
try {
const promises = [puter.kv.set('key1', 'value1'), puter.kv.set('key2', 'value2')];
const results = await Promise.all(promises);
assert(results.every(result => result === true), "Failed to set concurrent keys");
pass("testSetConcurrentKeys passed");
} catch (error) {
fail("testSetConcurrentKeys failed:", error);
}
}
},
{
name: "testSetValueAndRetrieve",
description: "Test setting a value and then retrieving it to verify it matches",
test: async function() {
try {
await puter.kv.set('retrieveKey', 'testValue');
const value = await puter.kv.get('retrieveKey');
assert(value === 'testValue', "Failed to retrieve correct value");
pass("testSetValueAndRetrieve passed");
} catch (error) {
fail("testSetValueAndRetrieve failed:", error);
}
}
},
{
name: "testUpdateValueAndRetrieve",
description: "Test updating a value and then retrieving it to verify it matches the updated value",
test: async function() {
try {
await puter.kv.set('updateKey', 'initialValue');
await puter.kv.set('updateKey', 'updatedValue');
const value = await puter.kv.get('updateKey');
assert(value === 'updatedValue', "Failed to retrieve updated value");
pass("testUpdateValueAndRetrieve passed");
} catch (error) {
fail("testUpdateValueAndRetrieve failed:", error);
}
}
},
{
name: "testSetNumericValueAndRetrieve",
description: "Test setting a numeric value and then retrieving it to verify it matches",
test: async function() {
try {
await puter.kv.set('numericKey', 123);
const value = await puter.kv.get('numericKey');
assert(value === 123, "Failed to retrieve numeric value");
pass("testSetNumericValueAndRetrieve passed");
} catch (error) {
fail("testSetNumericValueAndRetrieve failed:", error);
}
}
},
{
name: "testSetBooleanValueAndRetrieve",
description: "Test setting a boolean value and then retrieving it to verify it matches",
test: async function() {
try {
await puter.kv.set('booleanKey', true);
const value = await puter.kv.get('booleanKey');
assert(value === true, "Failed to retrieve boolean value");
pass("testSetBooleanValueAndRetrieve passed");
} catch (error) {
fail("testSetBooleanValueAndRetrieve failed:", error);
}
}
},
{
name: "testSetAndDeleteKey",
description: "Test setting a key and then deleting it to verify it returns true",
test: async function() {
try {
await puter.kv.set('deleteKey', 'value');
const result = await puter.kv.del('deleteKey');
assert(result === true, "Failed to delete key");
pass("testSetAndDeleteKey passed");
} catch (error) {
fail("testSetAndDeleteKey failed:", error);
}
}
},
{
name: "testGetNonexistentKey",
description: "Test getting a non-existent key and verify it returns null",
test: async function() {
try {
const value = await puter.kv.get('nonexistentKey_102mk');
assert(value === null, "Failed to return `null` for nonexistent key");
pass("testGetNonexistentKey passed");
} catch (error) {
fail("testGetNonexistentKey failed:", error);
}
}
},
{
name: "testSetObjectValueAndRetrieve",
description: "Test setting an object value and then retrieving it to verify it matches",
test: async function() {
try {
const result = await puter.kv.set('objectKey', { a: 1 });
assert(result === true, "Failed to set object as value");
const value = await puter.kv.get('objectKey');
assert(value.a === 1, "Failed to retrieve object value");
pass("testSetObjectValueAndRetrieve passed");
} catch (error) {
fail("testSetObjectValueAndRetrieve failed:", error);
}
}
},
{
name: "testSetArrayValue",
description: "Test setting an array as a value and verify it returns true",
test: async function() {
try {
const result = await puter.kv.set('arrayKey', [1, 2, 3]);
assert(result === true, "Failed to set array as value");
const value = await puter.kv.get('arrayKey');
assert(value[0] === 1, "Failed to retrieve array value");
pass("testSetArrayValue passed");
} catch (error) {
fail("testSetArrayValue failed:", error);
}
}
},
{
name: "testSetKeyWithSpecialCharactersAndRetrieve",
description: "Test setting a key with special characters and then retrieving it to verify it matches",
test: async function() {
try {
await puter.kv.set('special@Key#', 'value');
const value = await puter.kv.get('special@Key#');
assert(value === 'value', "Failed to retrieve value for key with special characters");
pass("testSetKeyWithSpecialCharactersAndRetrieve passed");
} catch (error) {
fail("testSetKeyWithSpecialCharactersAndRetrieve failed:", error);
}
}
},
{
name: "testConcurrentSetOperations",
description: "Test setting multiple keys concurrently and verify all return true",
test: async function() {
try {
const promises = [puter.kv.set('key1', 'value1'), puter.kv.set('key2', 'value2')];
const results = await Promise.all(promises);
assert(results.every(result => result === true), "Failed to set concurrent keys");
pass("testConcurrentSetOperations passed");
} catch (error) {
fail("testConcurrentSetOperations failed:", error);
}
}
},
{
name: "testFlush",
description: "Test flushing a bunch of keys and verify they no longer exist",
test: async function() {
try {
const keys = [];
for(let i = 0; i < 10; i++){
keys.push('key' + i);
}
await Promise.all(keys.map(key => puter.kv.set(key, 'value')));
await puter.kv.flush();
const results = await Promise.all(keys.map(key => puter.kv.get(key)));
assert(results.every(result => result === null), "Failed to flush keys");
pass("testFlush passed");
} catch (error) {
fail("testFlush failed:", error);
}
}
},
{
name: "testIncr",
description: "Test incrementing a key and verify it returns 1",
test: async function() {
try {
const result = await puter.kv.incr(puter.randName());
assert(result === 1, "Failed to increment key");
pass("testIncr passed");
} catch (error) {
fail("testIncr failed:", error);
}
}
},
{
name: "testDecr",
description: "Test decrementing a key and verify it returns -1",
test: async function() {
try {
const result = await puter.kv.decr(puter.randName());
assert(result === -1, "Failed to decrement key");
pass("testDecr passed");
} catch (error) {
fail("testDecr failed:", error);
}
}
},
{
name: "testIncrExistingKey",
description: "Test incrementing an existing key and verify it returns 2",
test: async function() {
try {
await puter.kv.set('incrKey', 1);
const result = await puter.kv.incr('incrKey');
assert(result === 2, "Failed to increment existing key");
pass("testIncrExistingKey passed");
} catch (error) {
fail("testIncrExistingKey failed:", error);
}
}
},
{
name: "testDecrExistingKey",
description: "Test decrementing an existing key and verify it returns 1",
test: async function() {
try {
await puter.kv.set('decrKey', 2);
const result = await puter.kv.decr('decrKey');
assert(result === 1, "Failed to decrement existing key");
pass("testDecrExistingKey passed");
} catch (error) {
fail("testDecrExistingKey failed:", error);
}
}
},
{
name: "testIncrByAmount",
description: "Test incrementing a key by a specified amount and verify it returns the correct value",
test: async function() {
try {
await puter.kv.set('incrKey', 1);
const result = await puter.kv.incr('incrKey', 5);
assert(result === 6, "Failed to increment key by amount");
pass("testIncrByAmount passed");
} catch (error) {
fail("testIncrByAmount failed:", error);
}
}
},
{
name: "testDecrByAmount",
description: "Test decrementing a key by a specified amount and verify it returns the correct value",
test: async function() {
try {
await puter.kv.set('decrKey', 10);
const result = await puter.kv.decr('decrKey', 5);
assert(result === 5, "Failed to decrement key by amount");
pass("testDecrByAmount passed");
} catch (error) {
fail("testDecrByAmount failed:", error);
}
}
},
{
name: "testIncrByAmountExistingKey",
description: "Test incrementing an existing key by a specified amount and verify it returns the correct value",
test: async function() {
try {
await puter.kv.set('incrKey', 1);
const result = await puter.kv.incr('incrKey', 5);
assert(result === 6, "Failed to increment existing key by amount");
pass("testIncrByAmountExistingKey passed");
} catch (error) {
fail("testIncrByAmountExistingKey failed:", error);
}
}
},
{
name: "testDecrByAmountExistingKey",
description: "Test decrementing an existing key by a specified amount and verify it returns the correct value",
test: async function() {
try {
await puter.kv.set('decrKey', 10);
const result = await puter.kv.decr('decrKey', 5);
assert(result === 5, "Failed to decrement existing key by amount");
pass("testDecrByAmountExistingKey passed");
} catch (error) {
fail("testDecrByAmountExistingKey failed:", error);
}
}
},
{
name: "testIncrByNegativeAmount",
description: "Test incrementing a key by a negative amount and verify it returns the correct value",
test: async function() {
try {
await puter.kv.set('incrKey', 1);
const result = await puter.kv.incr('incrKey', -5);
assert(result === -4, "Failed to increment key by negative amount");
pass("testIncrByNegativeAmount passed");
} catch (error) {
fail("testIncrByNegativeAmount failed:", error);
}
}
},
{
name: "testDecrByNegativeAmount",
description: "Test decrementing a key by a negative amount and verify it returns the correct value",
test: async function() {
try {
await puter.kv.set('decrKey', 10);
const result = await puter.kv.decr('decrKey', -5);
assert(result === 15, "Failed to decrement key by negative amount");
pass("testDecrByNegativeAmount passed");
} catch (error) {
fail("testDecrByNegativeAmount failed:", error);
}
}
},
{
name: "testListKeys",
description: "Test listing all keys and verify the count is correct",
test: async function() {
try {
const keys = [];
// flush first
await puter.kv.flush();
// create 10 keys
for(let i = 0; i < 10; i++){
keys.push('key' + i);
}
// set all keys
await Promise.all(keys.map(key => puter.kv.set(key, 'value')));
// list keys
const result = await puter.kv.list();
assert(result.length === 10, "Failed to list keys");
pass("testListKeys passed");
} catch (error) {
fail("testListKeys failed:", error);
}
}
},
{
name: "testListKeysGlob",
description: "Test listing keys using a glob pattern and verify the count is correct",
test: async function() {
try {
const keys = [];
// flush first
await puter.kv.flush();
// create 10 keys
for(let i = 0; i < 10; i++){
keys.push('key' + i);
}
// set all keys
await Promise.all(keys.map(key => puter.kv.set(key, 'value')));
// list keys
const result = await puter.kv.list('k*');
assert(result.length === 10, "Failed to list keys using glob");
pass("testListKeysGlob passed");
} catch (error) {
fail("testListKeysGlob failed:", error);
}
}
},
{
name: "testGetPerformance",
description: "Test that get method takes less than 100ms",
test: async function() {
try {
// Set up a key-value pair first
await puter.kv.set('performanceTestKey', 'testValue');
// Measure the time it takes to get the value
const startTime = performance.now();
const value = await puter.kv.get('performanceTestKey');
const endTime = performance.now();
const duration = endTime - startTime;
// Assert that the value is correct and timing is under 100ms
assert(value === 'testValue', "Failed to retrieve correct value");
assert(duration < 100, `Get method took ${duration}ms, which exceeds the 100ms limit`);
pass(`testGetPerformance passed: get took ${duration.toFixed(2)}ms`);
} catch (error) {
fail("testGetPerformance failed:", error);
}
}
},
{
name: "testSetPerformance",
description: "Test that set method takes less than 100ms",
test: async function() {
try {
// Set up a key-value pair first
const startTime = performance.now();
await puter.kv.set('performanceTestKey', 'testValue');
const endTime = performance.now();
const duration = endTime - startTime;
assert(duration < 100, `Set method took ${duration}ms, which exceeds the 100ms limit`);
pass(`testSetPerformance passed: set took ${duration.toFixed(2)}ms`);
} catch (error) {
fail("testSetPerformance failed:", error);
}
}
}
]