1+ const linked = require ( './LinkedList' ) ;
2+ const node = require ( './Node' ) ;
3+ let LinkedList = linked . LinkedList ;
4+ let Node = node . Node ;
5+
6+ test ( 'we can create a new linked list' , ( ) => {
7+ const ll = new LinkedList ( ) ;
8+ expect ( ll ) . toBeDefined ( ) ;
9+ expect ( ll ) . toHaveProperty ( 'head' ) ;
10+ } ) ;
11+
12+ test ( 'we can create a new node' , ( ) => {
13+ const ll = new LinkedList ( ) ;
14+ const data = { 'repoName' : 'JavaScriptAlgorithms' , 'owner' : 'vJechsmayr' } ;
15+ const node = new Node ( data ) ;
16+
17+ expect ( ll ) . toBeDefined ( ) ;
18+ expect ( node . data ) . toEqual ( data ) ;
19+ } ) ;
20+
21+ test ( 'we can append to the linked list' , ( ) => {
22+ const ll = new LinkedList ( ) ;
23+ const data = { 'repoName' : 'JavaScriptAlgorithms' , 'owner' : 'vJechsmayr' } ;
24+ const node = new Node ( data ) ;
25+ ll . append ( data ) ;
26+ expect ( ll . head ) . toEqual ( node ) ;
27+ } ) ;
28+
29+ test ( 'we can prepend to the linked list' , ( ) => {
30+ const ll = new LinkedList ( ) ;
31+ const firstData = { 'repoName' : 'JavaScriptAlgorithms' , 'owner' : 'vJechsmayr' } ;
32+ const secondData = { 'repoName' : 'jest' , 'owner' : 'facebook' } ;
33+ const firstNode = new Node ( firstData ) ;
34+ const secondNode = new Node ( secondData ) ;
35+
36+ ll . append ( firstData ) ;
37+ ll . prepend ( secondData ) ;
38+ secondNode . next = firstNode ;
39+
40+ expect ( ll . head ) . toEqual ( secondNode )
41+ } ) ;
42+
43+ test ( 'we can delete from the linked list' , ( ) => {
44+ const ll = new LinkedList ( ) ;
45+
46+ const firstData = { 'repoName' : 'JavaScriptAlgorithms' , 'owner' : 'vJechsmayr' } ;
47+ const firstNode = new Node ( firstData ) ;
48+
49+ ll . append ( firstData ) ;
50+ expect ( ll . head ) . toEqual ( firstNode ) ;
51+
52+ ll . deleteWithValue ( 'repoName' , 'JavaScriptAlgorithms' ) ;
53+
54+ expect ( ll . head ) . toEqual ( null ) ;
55+ } ) ;
56+
57+ test ( 'we receive false when trying to delete from an empty linked list' , ( ) => {
58+ const ll = new LinkedList ( ) ;
59+ expect ( ll . deleteWithValue ( 'repoName' , 'nothing' ) ) . toBe ( false ) ;
60+ } ) ;
61+
62+ test ( 'we receive true when trying to delete from an empty linked list' , ( ) => {
63+ const ll = new LinkedList ( ) ;
64+ const firstData = { 'repoName' : 'JavaScriptAlgorithms' , 'owner' : 'vJechsmayr' } ;
65+
66+ ll . append ( firstData ) ;
67+
68+ expect ( ll . deleteWithValue ( 'repoName' , 'JavaScriptAlgorithms' ) ) . toBe ( true ) ;
69+ } ) ;
70+
71+ test ( 'we can retrieve a node from the linked list' , ( ) => {
72+ const ll = new LinkedList ( ) ;
73+
74+ const firstData = { 'repoName' : 'JavaScriptAlgorithms' , 'owner' : 'vJechsmayr' } ;
75+ const secondData = { 'repoName' : 'jest' , 'owner' : 'facebook' } ;
76+ const secondNode = new Node ( secondData ) ;
77+
78+ ll . append ( firstData ) ;
79+ ll . append ( secondData ) ;
80+
81+ const fb = ll . getNodeWithValue ( 'owner' , 'facebook' ) ;
82+
83+ expect ( fb ) . toEqual ( secondNode ) ;
84+ } ) ;
85+
86+ test ( 'we receive null when retreiving a non-existant node' , ( ) => {
87+ const ll = new LinkedList ( ) ;
88+
89+ const firstData = { 'repoName' : 'JavaScriptAlgorithms' , 'owner' : 'vJechsmayr' } ;
90+ const firstNode = new Node ( firstData ) ;
91+
92+ ll . append ( firstData ) ;
93+
94+ const search = ll . getNodeWithValue ( 'repoName' , 'nothing' ) ;
95+
96+ expect ( search ) . toBe ( null ) ;
97+ } ) ;
0 commit comments