|
399 | 399 | ow.test.assert(malformedToon.format === "toon", true, "malformed validate-toon should report toon format") |
400 | 400 | } |
401 | 401 |
|
402 | | - exports.testTodoOps = function() { |
| 402 | + exports.testMemoryStoreOps = function() { |
403 | 403 | var tool = new MiniUtilsTool() |
404 | 404 |
|
405 | | - var writeResult = tool.kvStore({ operation: "todo-write", items: ["first", "second"] }) |
| 405 | + var setResult = tool.memoryStore({ operation: "set", key: "alpha", value: 123 }) |
| 406 | + ow.test.assert(setResult.stored === true, true, "Should store memory entry") |
| 407 | + |
| 408 | + var getResult = tool.memoryStore({ operation: "get", key: "alpha" }) |
| 409 | + ow.test.assert(getResult.found === true, true, "Should get stored memory entry") |
| 410 | + ow.test.assert(getResult.value === 123, true, "Should return stored memory value") |
| 411 | + |
| 412 | + var listResult = tool.memoryStore({ operation: "list" }) |
| 413 | + ow.test.assert(listResult.count === 1, true, "Should list stored memory keys") |
| 414 | + ow.test.assert(listResult.keys.indexOf("alpha") >= 0, true, "Should include stored key") |
| 415 | + |
| 416 | + var deleteResult = tool.memoryStore({ operation: "delete", key: "alpha" }) |
| 417 | + ow.test.assert(deleteResult.deleted === true, true, "Should delete stored memory entry") |
| 418 | + |
| 419 | + var expiredSetResult = tool.memoryStore({ operation: "set", key: "ttl-key", value: "soon gone", ttl: 1 }) |
| 420 | + ow.test.assert(expiredSetResult.stored === true, true, "Should store ttl entry") |
| 421 | + sleep(20, true) |
| 422 | + |
| 423 | + var expiredGetResult = tool.memoryStore({ operation: "get", key: "ttl-key" }) |
| 424 | + ow.test.assert(expiredGetResult.found === false, true, "Should expire ttl entry") |
| 425 | + ow.test.assert(expiredGetResult.expired === true, true, "Should flag expired ttl entry") |
| 426 | + |
| 427 | + tool.memoryStore({ operation: "set", key: "beta", value: "x" }) |
| 428 | + tool.memoryStore({ operation: "set", key: "gamma", value: "y" }) |
| 429 | + var clearResult = tool.memoryStore({ operation: "clear" }) |
| 430 | + ow.test.assert(clearResult.cleared === 2, true, "Should clear all remaining memory entries") |
| 431 | + } |
| 432 | + |
| 433 | + exports.testTodoListOps = function() { |
| 434 | + var tool = new MiniUtilsTool() |
| 435 | + |
| 436 | + var writeResult = tool.todoList({ operation: "write", items: ["first", "second"] }) |
406 | 437 | ow.test.assert(writeResult.count === 2, true, "Should write todo items") |
407 | 438 |
|
408 | | - var appendResult = tool.kvStore({ operation: "todo-write", item: "third", append: true }) |
| 439 | + var appendResult = tool.todoList({ operation: "write", item: "third", append: true }) |
409 | 440 | ow.test.assert(appendResult.count === 3, true, "Should append todo items") |
410 | 441 |
|
411 | | - var readResult = tool.kvStore({ operation: "todo-read" }) |
| 442 | + var overwriteResult = tool.todoList({ operation: "write", item: "reset" }) |
| 443 | + ow.test.assert(overwriteResult.count === 1, true, "Should overwrite todo items when append is false") |
| 444 | + ow.test.assert(overwriteResult.items[0] === "reset", true, "Should replace todo list contents") |
| 445 | + |
| 446 | + var readResult = tool.todoList({ operation: "read" }) |
| 447 | + ow.test.assert(readResult.count === 1, true, "Should read todo items") |
| 448 | + ow.test.assert(readResult.items[0] === "reset", true, "Should read latest todo item") |
| 449 | + } |
| 450 | + |
| 451 | + exports.testTodoListValidation = function() { |
| 452 | + var tool = new MiniUtilsTool() |
| 453 | + |
| 454 | + var invalidItemsResult = tool.todoList({ operation: "write", items: "nope" }) |
| 455 | + ow.test.assert(isString(invalidItemsResult) && invalidItemsResult.indexOf("[ERROR]") === 0, true, "Should reject non-array todo items") |
| 456 | + |
| 457 | + var missingItemsResult = tool.todoList({ operation: "write" }) |
| 458 | + ow.test.assert(isString(missingItemsResult) && missingItemsResult.indexOf("[ERROR]") === 0, true, "Should require todo items or item") |
| 459 | + } |
| 460 | + |
| 461 | + exports.testMemoryStoreValidation = function() { |
| 462 | + var tool = new MiniUtilsTool() |
| 463 | + |
| 464 | + var missingKeyResult = tool.memoryStore({ operation: "get" }) |
| 465 | + ow.test.assert(isString(missingKeyResult) && missingKeyResult.indexOf("[ERROR]") === 0, true, "Should require key for memory get") |
| 466 | + |
| 467 | + var missingValueResult = tool.memoryStore({ operation: "set", key: "alpha" }) |
| 468 | + ow.test.assert(isString(missingValueResult) && missingValueResult.indexOf("[ERROR]") === 0, true, "Should require value for memory set") |
| 469 | + } |
| 470 | + |
| 471 | + exports.testTodoOps = function() { |
| 472 | + var tool = new MiniUtilsTool() |
| 473 | + |
| 474 | + var writeResult = tool.todoList({ operation: "write", items: ["first", "second"] }) |
| 475 | + ow.test.assert(writeResult.count === 2, true, "Should write todo items through todoList") |
| 476 | + |
| 477 | + var appendResult = tool.todoList({ operation: "write", item: "third", append: true }) |
| 478 | + ow.test.assert(appendResult.count === 3, true, "Should append todo items through todoList") |
| 479 | + |
| 480 | + var readResult = tool.todoList({ operation: "read" }) |
412 | 481 | ow.test.assert(readResult.count === 3, true, "Should read todo items") |
413 | 482 | } |
414 | 483 |
|
|
563 | 632 | ow.test.assert(methods.indexOf("skills") >= 0, true, "Should include skills method") |
564 | 633 | ow.test.assert(methods.indexOf("mathematics") >= 0, true, "Should include mathematics method") |
565 | 634 | ow.test.assert(methods.indexOf("timeUtilities") >= 0, true, "Should include timeUtilities method") |
| 635 | + ow.test.assert(methods.indexOf("memoryStore") >= 0, true, "Should include memoryStore method") |
| 636 | + ow.test.assert(methods.indexOf("todoList") >= 0, true, "Should include todoList method") |
| 637 | + ow.test.assert(methods.indexOf("kvStore") === -1, true, "Should not include kvStore method") |
566 | 638 |
|
567 | 639 | var queryOps = metadata.filesystemQuery.inputSchema.properties.operation.enum || [] |
568 | 640 | ow.test.assert(queryOps.indexOf("glob") >= 0, true, "Should include glob operation in filesystemQuery") |
|
573 | 645 | ow.test.assert(textOps.indexOf("json-to-toon") >= 0, true, "Should include json-to-toon operation in textUtilities") |
574 | 646 | var validationOps = metadata.validationUtilities.inputSchema.properties.operation.enum || [] |
575 | 647 | ow.test.assert(validationOps.indexOf("validate-toon") >= 0, true, "Should include validate-toon operation in validationUtilities") |
576 | | - var kvOps = metadata.kvStore.inputSchema.properties.operation.enum || [] |
577 | | - ow.test.assert(kvOps.indexOf("todo-write") >= 0, true, "Should include todo-write operation in kvStore") |
| 648 | + ow.test.assert(isUnDef(metadata.kvStore), true, "Should not include kvStore metadata") |
| 649 | + var memoryOps = metadata.memoryStore.inputSchema.properties.operation.enum || [] |
| 650 | + ow.test.assert(memoryOps.indexOf("set") >= 0, true, "Should include set operation in memoryStore") |
| 651 | + var todoOps = metadata.todoList.inputSchema.properties.operation.enum || [] |
| 652 | + ow.test.assert(todoOps.indexOf("write") >= 0, true, "Should include write operation in todoList") |
578 | 653 | var markdownOps = metadata.markdownFiles.inputSchema.properties.operation.enum || [] |
579 | 654 | ow.test.assert(markdownOps.indexOf("search") >= 0, true, "Should include search operation in markdownFiles") |
580 | 655 | var skillOps = metadata.skills.inputSchema.properties.operation.enum || [] |
|
0 commit comments