mirror of
https://github.moeyy.xyz/https://github.com/trekhleb/javascript-algorithms.git
synced 2024-12-25 14:36:10 +08:00
Add jest tests.
This commit is contained in:
parent
eb3eadaf10
commit
ad0921d05e
10
.babelrc
10
.babelrc
@ -1,11 +1,3 @@
|
|||||||
{
|
{
|
||||||
"presets": [
|
"presets": ["env"]
|
||||||
[
|
|
||||||
"env", {
|
|
||||||
"targets": {
|
|
||||||
"node": "current"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
|
8
.eslintrc
Normal file
8
.eslintrc
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
{
|
||||||
|
"root": true,
|
||||||
|
"extends": "airbnb",
|
||||||
|
"plugins": ["jest"],
|
||||||
|
"env": {
|
||||||
|
"jest/globals": true
|
||||||
|
}
|
||||||
|
}
|
1
.gitignore
vendored
1
.gitignore
vendored
@ -1,3 +1,2 @@
|
|||||||
node_modules
|
node_modules
|
||||||
build
|
|
||||||
.idea
|
.idea
|
||||||
|
5681
package-lock.json
generated
5681
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
14
package.json
14
package.json
@ -4,8 +4,8 @@
|
|||||||
"description": "Data structures on JavaScript",
|
"description": "Data structures on JavaScript",
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"build": "babel src -d build",
|
"lint": "eslint ./src/*",
|
||||||
"babel-node": "babel-node"
|
"test": "jest"
|
||||||
},
|
},
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
@ -19,7 +19,15 @@
|
|||||||
},
|
},
|
||||||
"homepage": "https://github.com/trekhleb/data-structures#readme",
|
"homepage": "https://github.com/trekhleb/data-structures#readme",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
"@types/jest": "^22.2.2",
|
||||||
"babel-cli": "^6.26.0",
|
"babel-cli": "^6.26.0",
|
||||||
"babel-preset-env": "^1.6.1"
|
"babel-preset-env": "^1.6.1",
|
||||||
|
"eslint": "^4.19.1",
|
||||||
|
"eslint-config-airbnb": "^16.1.0",
|
||||||
|
"eslint-plugin-import": "^2.9.0",
|
||||||
|
"eslint-plugin-jest": "^21.15.0",
|
||||||
|
"eslint-plugin-jsx-a11y": "^6.0.3",
|
||||||
|
"eslint-plugin-react": "^7.7.0",
|
||||||
|
"jest": "^22.4.3"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import { Node } from './Node';
|
import Node from './Node';
|
||||||
|
|
||||||
export class LinkedList {
|
export default class LinkedList {
|
||||||
constructor() {
|
constructor() {
|
||||||
this.head = null;
|
this.head = null;
|
||||||
}
|
}
|
||||||
@ -17,12 +17,12 @@ export class LinkedList {
|
|||||||
|
|
||||||
// Rewind to last node.
|
// Rewind to last node.
|
||||||
let currentNode = this.head;
|
let currentNode = this.head;
|
||||||
while (currentNode.nextNode !== null) {
|
while (currentNode.next !== null) {
|
||||||
currentNode = currentNode.nextNode;
|
currentNode = currentNode.next;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Attach new node to the end of linked list.
|
// Attach new node to the end of linked list.
|
||||||
currentNode.nextNode = newNode;
|
currentNode.next = newNode;
|
||||||
|
|
||||||
return newNode;
|
return newNode;
|
||||||
}
|
}
|
||||||
@ -31,21 +31,19 @@ export class LinkedList {
|
|||||||
this.head = new Node(value, this.head);
|
this.head = new Node(value, this.head);
|
||||||
}
|
}
|
||||||
|
|
||||||
deleteWithValue(value) {
|
toArray() {
|
||||||
|
const listArray = [];
|
||||||
}
|
|
||||||
|
|
||||||
render() {
|
|
||||||
let currentNode = this.head;
|
let currentNode = this.head;
|
||||||
let index = 0;
|
|
||||||
|
|
||||||
while(currentNode.nextNode !== null) {
|
while (currentNode) {
|
||||||
console.log(`Node #${index} data: ${currentNode.value}`);
|
listArray.push(currentNode.value);
|
||||||
currentNode = currentNode.nextNode;
|
currentNode = currentNode.next;
|
||||||
index++;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Print the tail.
|
return listArray;
|
||||||
console.log(`Node #${index} data: ${currentNode.value}`);
|
}
|
||||||
|
|
||||||
|
toString() {
|
||||||
|
return this.toArray().toString();
|
||||||
}
|
}
|
||||||
}
|
}
|
6
src/data-structures/linked-list/Node.js
Normal file
6
src/data-structures/linked-list/Node.js
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
export default class Node {
|
||||||
|
constructor(value, next = null) {
|
||||||
|
this.value = value;
|
||||||
|
this.next = next;
|
||||||
|
}
|
||||||
|
}
|
23
src/data-structures/linked-list/__test__/LinkedList.test.js
Normal file
23
src/data-structures/linked-list/__test__/LinkedList.test.js
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
import LinkedList from '../LinkedList';
|
||||||
|
|
||||||
|
describe('LinkedList', () => {
|
||||||
|
it('should create empty linked list', () => {
|
||||||
|
const linkedList = new LinkedList();
|
||||||
|
expect(linkedList).toBeDefined();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should append node to linked list', () => {
|
||||||
|
const linkedList = new LinkedList();
|
||||||
|
linkedList.append(1);
|
||||||
|
linkedList.append(2);
|
||||||
|
expect(linkedList.toString()).toBe('1,2');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should prepend node to linked list', () => {
|
||||||
|
const linkedList = new LinkedList();
|
||||||
|
linkedList.append(1);
|
||||||
|
linkedList.append(2);
|
||||||
|
linkedList.prepend(3);
|
||||||
|
expect(linkedList.toString()).toBe('3,1,2');
|
||||||
|
});
|
||||||
|
});
|
9
src/data-structures/linked-list/__test__/Node.test.js
Normal file
9
src/data-structures/linked-list/__test__/Node.test.js
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
import Node from '../Node';
|
||||||
|
|
||||||
|
describe('Node', () => {
|
||||||
|
it('should create list node with value', () => {
|
||||||
|
const node = new Node(1);
|
||||||
|
expect(node.value).toBe(1);
|
||||||
|
expect(node.next).toBeNull();
|
||||||
|
});
|
||||||
|
});
|
@ -1,6 +0,0 @@
|
|||||||
export class Node {
|
|
||||||
constructor(value, nextNode = null) {
|
|
||||||
this.value = value;
|
|
||||||
this.nextNode = nextNode;
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,11 +0,0 @@
|
|||||||
import { LinkedList } from "./LinkedList";
|
|
||||||
|
|
||||||
const linkedList = new LinkedList();
|
|
||||||
|
|
||||||
linkedList.append(1);
|
|
||||||
linkedList.append(2);
|
|
||||||
linkedList.append(3);
|
|
||||||
linkedList.prepend(4);
|
|
||||||
linkedList.prepend(5);
|
|
||||||
|
|
||||||
linkedList.render();
|
|
Loading…
Reference in New Issue
Block a user