Skip to content

Commit 8b06f38

Browse files
committed
[Core.Yaml] Add tests to improve coverage
1 parent 33843e6 commit 8b06f38

File tree

6 files changed

+736
-0
lines changed

6 files changed

+736
-0
lines changed

sources/core/Stride.Core.Yaml.Tests/Stride.Core.Yaml.Tests.csproj

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@
1010
<StrideBuildTags>LinuxTools;WindowsTools</StrideBuildTags>
1111
</PropertyGroup>
1212
<ItemGroup>
13+
<PackageReference Include="coverlet.collector">
14+
<PrivateAssets>all</PrivateAssets>
15+
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
16+
</PackageReference>
1317
<PackageReference Include="xunit" />
1418
<PackageReference Include="xunit.runner.visualstudio">
1519
<PrivateAssets>all</PrivateAssets>
Lines changed: 196 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,196 @@
1+
// Copyright (c) .NET Foundation and Contributors (https://dotnetfoundation.org/ & https://stride3d.net)
2+
// Distributed under the MIT license. See the LICENSE.md file in the project root for more information.
3+
4+
using Xunit;
5+
6+
namespace Stride.Core.Yaml.Tests;
7+
8+
public class TestInsertionQueue
9+
{
10+
[Fact]
11+
public void TestInsertionQueueInitiallyEmpty()
12+
{
13+
var queue = new InsertionQueue<int>();
14+
15+
Assert.Equal(0, queue.Count);
16+
}
17+
18+
[Fact]
19+
public void TestInsertionQueueEnqueue()
20+
{
21+
var queue = new InsertionQueue<int>();
22+
23+
queue.Enqueue(1);
24+
queue.Enqueue(2);
25+
queue.Enqueue(3);
26+
27+
Assert.Equal(3, queue.Count);
28+
}
29+
30+
[Fact]
31+
public void TestInsertionQueueDequeue()
32+
{
33+
var queue = new InsertionQueue<int>();
34+
queue.Enqueue(1);
35+
queue.Enqueue(2);
36+
queue.Enqueue(3);
37+
38+
Assert.Equal(1, queue.Dequeue());
39+
Assert.Equal(2, queue.Count);
40+
Assert.Equal(2, queue.Dequeue());
41+
Assert.Equal(1, queue.Count);
42+
Assert.Equal(3, queue.Dequeue());
43+
Assert.Equal(0, queue.Count);
44+
}
45+
46+
[Fact]
47+
public void TestInsertionQueueDequeueEmptyThrows()
48+
{
49+
var queue = new InsertionQueue<int>();
50+
51+
Assert.Throws<InvalidOperationException>(() => queue.Dequeue());
52+
}
53+
54+
[Fact]
55+
public void TestInsertionQueueDequeueAfterEmptyThrows()
56+
{
57+
var queue = new InsertionQueue<int>();
58+
queue.Enqueue(1);
59+
queue.Dequeue();
60+
61+
Assert.Throws<InvalidOperationException>(() => queue.Dequeue());
62+
}
63+
64+
[Fact]
65+
public void TestInsertionQueueInsertAtBeginning()
66+
{
67+
var queue = new InsertionQueue<int>();
68+
queue.Enqueue(1);
69+
queue.Enqueue(3);
70+
71+
queue.Insert(0, 0);
72+
73+
Assert.Equal(3, queue.Count);
74+
Assert.Equal(0, queue.Dequeue());
75+
Assert.Equal(1, queue.Dequeue());
76+
Assert.Equal(3, queue.Dequeue());
77+
}
78+
79+
[Fact]
80+
public void TestInsertionQueueInsertInMiddle()
81+
{
82+
var queue = new InsertionQueue<int>();
83+
queue.Enqueue(1);
84+
queue.Enqueue(3);
85+
86+
queue.Insert(1, 2);
87+
88+
Assert.Equal(3, queue.Count);
89+
Assert.Equal(1, queue.Dequeue());
90+
Assert.Equal(2, queue.Dequeue());
91+
Assert.Equal(3, queue.Dequeue());
92+
}
93+
94+
[Fact]
95+
public void TestInsertionQueueInsertAtEnd()
96+
{
97+
var queue = new InsertionQueue<int>();
98+
queue.Enqueue(1);
99+
queue.Enqueue(2);
100+
101+
queue.Insert(2, 3);
102+
103+
Assert.Equal(3, queue.Count);
104+
Assert.Equal(1, queue.Dequeue());
105+
Assert.Equal(2, queue.Dequeue());
106+
Assert.Equal(3, queue.Dequeue());
107+
}
108+
109+
[Fact]
110+
public void TestInsertionQueueWithStrings()
111+
{
112+
var queue = new InsertionQueue<string>();
113+
queue.Enqueue("a");
114+
queue.Enqueue("b");
115+
queue.Enqueue("c");
116+
117+
Assert.Equal(3, queue.Count);
118+
Assert.Equal("a", queue.Dequeue());
119+
Assert.Equal("b", queue.Dequeue());
120+
Assert.Equal("c", queue.Dequeue());
121+
}
122+
123+
[Fact]
124+
public void TestInsertionQueueMixedOperations()
125+
{
126+
var queue = new InsertionQueue<int>();
127+
128+
queue.Enqueue(1);
129+
queue.Enqueue(2);
130+
Assert.Equal(1, queue.Dequeue());
131+
queue.Enqueue(3);
132+
queue.Insert(0, 0);
133+
134+
Assert.Equal(3, queue.Count);
135+
Assert.Equal(0, queue.Dequeue());
136+
Assert.Equal(2, queue.Dequeue());
137+
Assert.Equal(3, queue.Dequeue());
138+
}
139+
140+
[Fact]
141+
public void TestInsertionQueueCountAfterOperations()
142+
{
143+
var queue = new InsertionQueue<int>();
144+
145+
Assert.Equal(0, queue.Count);
146+
queue.Enqueue(1);
147+
Assert.Equal(1, queue.Count);
148+
queue.Enqueue(2);
149+
Assert.Equal(2, queue.Count);
150+
queue.Dequeue();
151+
Assert.Equal(1, queue.Count);
152+
queue.Insert(0, 0);
153+
Assert.Equal(2, queue.Count);
154+
queue.Dequeue();
155+
Assert.Equal(1, queue.Count);
156+
queue.Dequeue();
157+
Assert.Equal(0, queue.Count);
158+
}
159+
160+
[Fact]
161+
public void TestInsertionQueueWithNullValues()
162+
{
163+
#nullable enable
164+
var queue = new InsertionQueue<string?>();
165+
queue.Enqueue(null);
166+
queue.Enqueue("test");
167+
queue.Enqueue(null);
168+
169+
Assert.Equal(3, queue.Count);
170+
Assert.Null(queue.Dequeue());
171+
Assert.Equal("test", queue.Dequeue());
172+
Assert.Null(queue.Dequeue());
173+
#nullable disable
174+
}
175+
176+
[Fact]
177+
public void TestInsertionQueueLargeNumberOfItems()
178+
{
179+
var queue = new InsertionQueue<int>();
180+
const int count = 1000;
181+
182+
for (int i = 0; i < count; i++)
183+
{
184+
queue.Enqueue(i);
185+
}
186+
187+
Assert.Equal(count, queue.Count);
188+
189+
for (int i = 0; i < count; i++)
190+
{
191+
Assert.Equal(i, queue.Dequeue());
192+
}
193+
194+
Assert.Equal(0, queue.Count);
195+
}
196+
}
Lines changed: 140 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,140 @@
1+
// Copyright (c) .NET Foundation and Contributors (https://dotnetfoundation.org/ & https://stride3d.net)
2+
// Distributed under the MIT license. See the LICENSE.md file in the project root for more information.
3+
4+
using Xunit;
5+
6+
namespace Stride.Core.Yaml.Tests;
7+
8+
public class TestMark
9+
{
10+
[Fact]
11+
public void TestMarkDefaultValues()
12+
{
13+
var mark = new Mark();
14+
15+
Assert.Equal(0, mark.Index);
16+
Assert.Equal(0, mark.Line);
17+
Assert.Equal(0, mark.Column);
18+
}
19+
20+
[Fact]
21+
public void TestMarkSetProperties()
22+
{
23+
var mark = new Mark
24+
{
25+
Index = 10,
26+
Line = 5,
27+
Column = 3
28+
};
29+
30+
Assert.Equal(10, mark.Index);
31+
Assert.Equal(5, mark.Line);
32+
Assert.Equal(3, mark.Column);
33+
}
34+
35+
[Fact]
36+
public void TestMarkIndexNegativeThrows()
37+
{
38+
var mark = new Mark();
39+
40+
Assert.Throws<ArgumentOutOfRangeException>(() => mark.Index = -1);
41+
}
42+
43+
[Fact]
44+
public void TestMarkLineNegativeThrows()
45+
{
46+
var mark = new Mark();
47+
48+
Assert.Throws<ArgumentOutOfRangeException>(() => mark.Line = -1);
49+
}
50+
51+
[Fact]
52+
public void TestMarkColumnNegativeThrows()
53+
{
54+
var mark = new Mark();
55+
56+
Assert.Throws<ArgumentOutOfRangeException>(() => mark.Column = -1);
57+
}
58+
59+
[Fact]
60+
public void TestMarkZeroValuesAreValid()
61+
{
62+
var mark = new Mark
63+
{
64+
Index = 0,
65+
Line = 0,
66+
Column = 0
67+
};
68+
69+
Assert.Equal(0, mark.Index);
70+
Assert.Equal(0, mark.Line);
71+
Assert.Equal(0, mark.Column);
72+
}
73+
74+
[Fact]
75+
public void TestMarkToString()
76+
{
77+
var mark = new Mark
78+
{
79+
Index = 100,
80+
Line = 10,
81+
Column = 5
82+
};
83+
84+
var result = mark.ToString();
85+
86+
Assert.Contains("Lin: 10", result);
87+
Assert.Contains("Col: 5", result);
88+
Assert.Contains("Chr: 100", result);
89+
}
90+
91+
[Fact]
92+
public void TestMarkToStringWithZeroValues()
93+
{
94+
var mark = new Mark();
95+
96+
var result = mark.ToString();
97+
98+
Assert.Contains("Lin: 0", result);
99+
Assert.Contains("Col: 0", result);
100+
Assert.Contains("Chr: 0", result);
101+
}
102+
103+
[Fact]
104+
public void TestMarkEmpty()
105+
{
106+
var empty = Mark.Empty;
107+
108+
Assert.Equal(0, empty.Index);
109+
Assert.Equal(0, empty.Line);
110+
Assert.Equal(0, empty.Column);
111+
}
112+
113+
[Fact]
114+
public void TestMarkLargeValues()
115+
{
116+
var mark = new Mark
117+
{
118+
Index = int.MaxValue,
119+
Line = int.MaxValue,
120+
Column = int.MaxValue
121+
};
122+
123+
Assert.Equal(int.MaxValue, mark.Index);
124+
Assert.Equal(int.MaxValue, mark.Line);
125+
Assert.Equal(int.MaxValue, mark.Column);
126+
}
127+
128+
[Fact]
129+
public void TestMarkStructValueSemantics()
130+
{
131+
var mark1 = new Mark { Index = 10, Line = 5, Column = 3 };
132+
var mark2 = mark1; // Copy
133+
134+
mark2.Index = 20;
135+
136+
// Original should be unchanged (value semantics)
137+
Assert.Equal(10, mark1.Index);
138+
Assert.Equal(20, mark2.Index);
139+
}
140+
}

0 commit comments

Comments
 (0)