Skip to content

Commit 355cb81

Browse files
linked-list: add generator
1 parent 086b8d1 commit 355cb81

File tree

3 files changed

+90
-54
lines changed

3 files changed

+90
-54
lines changed
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
using Xunit;
2+
3+
public class DequeTests
4+
{
5+
{{- for test in tests }}
6+
[Fact{{ if !for.first }}(Skip = "Remove this Skip property to run this test"){{ end }}]
7+
public void {{ test.testMethod }}()
8+
{
9+
var sut = new Deque<int>();
10+
{{- for op in test.input.operations }}
11+
{{- if op.operation != "count" }}
12+
{{- if op.expected }}
13+
Assert.Equal({{ op.expected }}, sut.{{ op.operation | string.capitalize }}());
14+
{{- else }}
15+
sut.{{ op.operation | string.capitalize }}({{ op.value }});
16+
{{- end -}}
17+
{{- end -}}
18+
{{ end -}}
19+
}
20+
{{ end -}}
21+
}

exercises/practice/linked-list/.meta/tests.toml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,12 +29,15 @@ description = "pop, push, shift, and unshift can be used in any order"
2929

3030
[88f65c0c-4532-4093-8295-2384fb2f37df]
3131
description = "count an empty list"
32+
include = false
3233

3334
[fc055689-5cbe-4cd9-b994-02e2abbb40a5]
3435
description = "count a list with items"
36+
include = false
3537

3638
[8272cef5-130d-40ea-b7f6-5ffd0790d650]
3739
description = "count is correct after mutation"
40+
include = false
3841

3942
[229b8f7a-bd8a-4798-b64f-0dc0bb356d95]
4043
description = "popping to empty doesn't break the list"
@@ -44,24 +47,32 @@ description = "shifting to empty doesn't break the list"
4447

4548
[e8f7c600-d597-4f79-949d-8ad8bae895a6]
4649
description = "deletes the only element"
50+
include = false
4751

4852
[fd65e422-51f3-45c0-9fd0-c33da638f89b]
4953
description = "deletes the element with the specified value from the list"
54+
include = false
5055

5156
[59db191a-b17f-4ab7-9c5c-60711ec1d013]
5257
description = "deletes the element with the specified value from the list, re-assigns tail"
58+
include = false
5359

5460
[58242222-5d39-415b-951d-8128247f8993]
5561
description = "deletes the element with the specified value from the list, re-assigns head"
62+
include = false
5663

5764
[ee3729ee-3405-4bd2-9bad-de0d4aa5d647]
5865
description = "deletes the first of two elements"
66+
include = false
5967

6068
[47e3b3b4-b82c-4c23-8c1a-ceb9b17cb9fb]
6169
description = "deletes the second of two elements"
70+
include = false
6271

6372
[7b420958-f285-4922-b8f9-10d9dcab5179]
6473
description = "delete does not modify the list if the element is not found"
74+
include = false
6575

6676
[7e04828f-6082-44e3-a059-201c63252a76]
6777
description = "deletes only the first occurrence"
78+
include = false

exercises/practice/linked-list/LinkedListTests.cs

Lines changed: 58 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -3,84 +3,88 @@
33
public class DequeTests
44
{
55
[Fact]
6-
public void Push_and_pop_are_first_in_last_out_order()
6+
public void Pop_gets_element_from_the_list()
77
{
8-
var deque = new Deque<int>();
9-
deque.Push(10);
10-
deque.Push(20);
11-
Assert.Equal(20, deque.Pop());
12-
Assert.Equal(10, deque.Pop());
8+
var sut = new Deque<int>();
9+
sut.Push(7);
10+
Assert.Equal(7, sut.Pop());
1311
}
1412

1513
[Fact(Skip = "Remove this Skip property to run this test")]
16-
public void Push_and_shift_are_first_in_first_out_order()
14+
public void Push_pop_respectively_add_remove_at_the_end_of_the_list()
1715
{
18-
var deque = new Deque<int>();
19-
deque.Push(10);
20-
deque.Push(20);
21-
Assert.Equal(10, deque.Shift());
22-
Assert.Equal(20, deque.Shift());
16+
var sut = new Deque<int>();
17+
sut.Push(11);
18+
sut.Push(13);
19+
Assert.Equal(13, sut.Pop());
20+
Assert.Equal(11, sut.Pop());
2321
}
2422

2523
[Fact(Skip = "Remove this Skip property to run this test")]
26-
public void Unshift_and_shift_are_last_in_first_out_order()
24+
public void Shift_gets_an_element_from_the_list()
2725
{
28-
var deque = new Deque<int>();
29-
deque.Unshift(10);
30-
deque.Unshift(20);
31-
Assert.Equal(20, deque.Shift());
32-
Assert.Equal(10, deque.Shift());
26+
var sut = new Deque<int>();
27+
sut.Push(17);
28+
Assert.Equal(17, sut.Shift());
3329
}
3430

3531
[Fact(Skip = "Remove this Skip property to run this test")]
36-
public void Unshift_and_pop_are_last_in_last_out_order()
32+
public void Shift_gets_first_element_from_the_list()
3733
{
38-
var deque = new Deque<int>();
39-
deque.Unshift(10);
40-
deque.Unshift(20);
41-
Assert.Equal(10, deque.Pop());
42-
Assert.Equal(20, deque.Pop());
34+
var sut = new Deque<int>();
35+
sut.Push(23);
36+
sut.Push(5);
37+
Assert.Equal(23, sut.Shift());
38+
Assert.Equal(5, sut.Shift());
4339
}
4440

4541
[Fact(Skip = "Remove this Skip property to run this test")]
46-
public void Push_and_pop_can_handle_multiple_values()
42+
public void Unshift_adds_element_at_start_of_the_list()
4743
{
48-
var deque = new Deque<int>();
49-
deque.Push(10);
50-
deque.Push(20);
51-
deque.Push(30);
52-
Assert.Equal(30, deque.Pop());
53-
Assert.Equal(20, deque.Pop());
54-
Assert.Equal(10, deque.Pop());
44+
var sut = new Deque<int>();
45+
sut.Unshift(23);
46+
sut.Unshift(5);
47+
Assert.Equal(5, sut.Shift());
48+
Assert.Equal(23, sut.Shift());
5549
}
5650

5751
[Fact(Skip = "Remove this Skip property to run this test")]
58-
public void Unshift_and_shift_can_handle_multiple_values()
52+
public void Pop_push_shift_and_unshift_can_be_used_in_any_order()
5953
{
60-
var deque = new Deque<int>();
61-
deque.Unshift(10);
62-
deque.Unshift(20);
63-
deque.Unshift(30);
64-
Assert.Equal(30, deque.Shift());
65-
Assert.Equal(20, deque.Shift());
66-
Assert.Equal(10, deque.Shift());
54+
var sut = new Deque<int>();
55+
sut.Push(1);
56+
sut.Push(2);
57+
Assert.Equal(2, sut.Pop());
58+
sut.Push(3);
59+
Assert.Equal(1, sut.Shift());
60+
sut.Unshift(4);
61+
sut.Push(5);
62+
Assert.Equal(4, sut.Shift());
63+
Assert.Equal(5, sut.Pop());
64+
Assert.Equal(3, sut.Shift());
6765
}
6866

6967
[Fact(Skip = "Remove this Skip property to run this test")]
70-
public void All_methods_of_manipulating_the_deque_can_be_used_together()
68+
public void Popping_to_empty_doesn_t_break_the_list()
7169
{
72-
var deque = new Deque<int>();
73-
deque.Push(10);
74-
deque.Push(20);
75-
Assert.Equal(20, deque.Pop());
76-
77-
deque.Push(30);
78-
Assert.Equal(10, deque.Shift());
70+
var sut = new Deque<int>();
71+
sut.Push(41);
72+
sut.Push(59);
73+
sut.Pop();
74+
sut.Pop();
75+
sut.Push(47);
76+
Assert.Equal(47, sut.Pop());
77+
}
7978

80-
deque.Unshift(40);
81-
deque.Push(50);
82-
Assert.Equal(40, deque.Shift());
83-
Assert.Equal(50, deque.Pop());
84-
Assert.Equal(30, deque.Shift());
79+
[Fact(Skip = "Remove this Skip property to run this test")]
80+
public void Shifting_to_empty_doesn_t_break_the_list()
81+
{
82+
var sut = new Deque<int>();
83+
sut.Push(41);
84+
sut.Push(59);
85+
sut.Shift();
86+
sut.Shift();
87+
sut.Push(47);
88+
Assert.Equal(47, sut.Shift());
8589
}
86-
}
90+
}

0 commit comments

Comments
 (0)