diff --git a/scripts/dsa.js b/scripts/dsa.js index ae55f27..6d8c53b 100644 --- a/scripts/dsa.js +++ b/scripts/dsa.js @@ -1,11 +1,41 @@ module.exports = { + RingBuffer: { + generic: "", + type: "class", + methods: [{ + name: "push", + args: "item: T", + return: "void", + }, { + name: "get", + args: "idx: number", + return: "T | undefined", + }, { + name: "pop", + return: "T | undefined", + }], + getters: [{ + name: "length", + return: "number", + prop_name: "_length", + }], + properties: [{ + name: "_length", + type: "number", + scope: "private", + }] + }, ArrayList: { type: "class", + generic: "", methods: [{ name: "add", args: "item: T", return: "void", + }, { + name: "peek", + return: "T | undefined", }, { name: "remove", args: "item: T", @@ -27,15 +57,19 @@ module.exports = { }] }, SinglyLinkedList: { + generic: "", type: "class", }, DoublyLinkedList: { + generic: "", type: "class", }, Queue: { + generic: "", type: "class", }, Stack: { + generic: "", type: "class", }, diff --git a/scripts/generate b/scripts/generate index 10ecf4c..e1691fd 100755 --- a/scripts/generate +++ b/scripts/generate @@ -30,7 +30,7 @@ try { fs.unlinkSync(day_path); } catch (e) { } try { fs.mkdirSync(day_path); } catch (e) { } function generate_method(method) { - return `${method.name}(${method.args}): ${method.return || "void"} { + return `${method.name}(${method.args || ""}): ${method.return || "void"} { }`; } @@ -46,7 +46,7 @@ function generate_getter(getter) { } function create_class(name, item) { - fs.writeFileSync(path.join(day_path, `${name}.ts`), `export default class ${name} { + fs.writeFileSync(path.join(day_path, `${name}.ts`), `export default class ${name}${item.generic || ""} { ${(item.properties || []).map(generate_property).join("\n ")} ${(item.getters || []).map(generate_getter).join("\n ")} diff --git a/src/__tests__/RingBuffer.ts b/src/__tests__/RingBuffer.ts index b28b04f..cc2f782 100644 --- a/src/__tests__/RingBuffer.ts +++ b/src/__tests__/RingBuffer.ts @@ -1,3 +1,24 @@ - +import RingBuffer from "@code/RingBuffer"; + +test("RingBuffer", function() { + const buffer = new RingBuffer(); + + buffer.push(5); + expect(buffer.pop()).toEqual(5); + expect(buffer.pop()).toEqual(undefined); + + buffer.push(42); + buffer.push(9); + expect(buffer.pop()).toEqual(42); + expect(buffer.pop()).toEqual(9); + expect(buffer.pop()).toEqual(undefined); + + buffer.push(42); + buffer.push(9); + buffer.push(12); + expect(buffer.get(2)).toEqual(12); + expect(buffer.get(1)).toEqual(9); + expect(buffer.get(0)).toEqual(42); +});