Skip to content

Commit 4336294

Browse files
feat:
+ tests swap expected and actual + test ToString(Span<char>) + Add method GetIndex + Add method Insert
1 parent 13fc952 commit 4336294

File tree

7 files changed

+515
-210
lines changed

7 files changed

+515
-210
lines changed
Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
using NUnit.Framework;
2+
using System;
3+
using System.Collections.Generic;
4+
using System.Text;
5+
6+
namespace StringBuilderArrayTests
7+
{
8+
[TestFixture]
9+
public class AppendArrayFixture
10+
{
11+
public static object[] LengthCases = { 5, 7, 10, 50, 100, 1000, 2500 };
12+
13+
[Test]
14+
[TestCaseSource(nameof(LengthCases))]
15+
public void AppendArrayTest(int length)
16+
{
17+
var strBuilded = new string('a', length - 1);
18+
var sb = new StringBuilder();
19+
var list = new List<string>();
20+
for (int i = 0; i < 53; i++)
21+
{
22+
var text = i.ToString() + strBuilded;
23+
list.Add(text);
24+
sb.Append(text);
25+
}
26+
27+
var sbArr = new StringBuilderArray.StringBuilderArray();
28+
sbArr.Append(list);
29+
30+
Assert.That(sb.ToString(), Is.EqualTo(sbArr.ToString()));
31+
#if NET5_0_OR_GREATER
32+
var expectSpan = sb.ToString().AsSpan();
33+
var resultSpan = GC.AllocateUninitializedArray<char>(sbArr.Length);
34+
sbArr.ToString(resultSpan);
35+
for (int i = 0; i < expectSpan.Length; i++)
36+
{
37+
var expectChar = expectSpan[i];
38+
var haveChar = resultSpan[i];
39+
Assert.That(haveChar, Is.EqualTo(expectChar));
40+
}
41+
#endif
42+
43+
var index = 0;
44+
foreach (var str in sbArr)
45+
{
46+
Assert.That(str, Is.EqualTo(list[index++]));
47+
}
48+
}
49+
50+
[Test]
51+
[TestCaseSource(nameof(LengthCases))]
52+
public void AppendLineArrayTest(int length)
53+
{
54+
var strBuilded = new string('a', length - 1);
55+
var sb = new StringBuilder();
56+
var list = new List<string>();
57+
var listInput = new List<string>();
58+
for (int i = 0; i < 53; i++)
59+
{
60+
var text = i.ToString() + strBuilded;
61+
listInput.Add(text);
62+
list.Add(text);
63+
list.Add(Environment.NewLine);
64+
sb.AppendLine(text);
65+
}
66+
67+
var sbArr = new StringBuilderArray.StringBuilderArray();
68+
sbArr.AppendLine(listInput);
69+
70+
Assert.That(sb.ToString(), Is.EqualTo(sbArr.ToString()));
71+
#if NET5_0_OR_GREATER
72+
var expectSpan = sb.ToString().AsSpan();
73+
var resultSpan = GC.AllocateUninitializedArray<char>(sbArr.Length);
74+
sbArr.ToString(resultSpan);
75+
for (int i = 0; i < expectSpan.Length; i++)
76+
{
77+
var expectChar = expectSpan[i];
78+
var haveChar = resultSpan[i];
79+
Assert.That(haveChar, Is.EqualTo(expectChar));
80+
}
81+
#endif
82+
83+
var index = 0;
84+
foreach (var str in sbArr)
85+
{
86+
Assert.That(str, Is.EqualTo(list[index++]));
87+
}
88+
}
89+
}
90+
}
Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
using NUnit.Framework;
2+
using System;
3+
using System.Collections.Generic;
4+
using System.Text;
5+
6+
namespace StringBuilderArrayTests
7+
{
8+
[TestFixture]
9+
public class AppendFixture
10+
{
11+
public static object[] LengthCases = { 5, 7, 10, 50, 100, 1000, 2500 };
12+
13+
[Test]
14+
[TestCaseSource(nameof(LengthCases))]
15+
public void AppendTest(int length)
16+
{
17+
var strBuilded = new string('a', length - 1);
18+
var sb = new StringBuilder();
19+
for (int i = 0; i < 53; i++)
20+
{
21+
sb.Append(i.ToString() + strBuilded);
22+
}
23+
24+
var sbArr = new StringBuilderArray.StringBuilderArray();
25+
for (int i = 0; i < 53; i++)
26+
{
27+
sbArr.Append(i.ToString() + strBuilded);
28+
}
29+
30+
#if NET5_0_OR_GREATER
31+
var expectSpan = sb.ToString().AsSpan();
32+
var resultSpan = GC.AllocateUninitializedArray<char>(sbArr.Length);
33+
sbArr.ToString(resultSpan);
34+
for (int i = 0; i < expectSpan.Length; i++)
35+
{
36+
var expectChar = expectSpan[i];
37+
var haveChar = resultSpan[i];
38+
Assert.That(haveChar, Is.EqualTo(expectChar));
39+
}
40+
#endif
41+
Assert.That(sbArr.ToString(), Is.EqualTo(sb.ToString()));
42+
}
43+
44+
[Test]
45+
[TestCaseSource(nameof(LengthCases))]
46+
public void AppendClearTest(int length)
47+
{
48+
var strBuilded = new string('a', length - 1);
49+
var sb = new StringBuilder();
50+
for (int i = 53; i < 70; i++)
51+
{
52+
sb.Append(i.ToString() + strBuilded);
53+
}
54+
55+
var sbArr = new StringBuilderArray.StringBuilderArray();
56+
for (int i = 0; i < 53; i++)
57+
{
58+
sbArr.Append(i.ToString() + strBuilded);
59+
}
60+
sbArr.Clear();
61+
for (int i = 53; i < 70; i++)
62+
{
63+
sbArr.Append(i.ToString() + strBuilded);
64+
}
65+
66+
#if NET5_0_OR_GREATER
67+
var expectSpan = sb.ToString().AsSpan();
68+
var resultSpan = GC.AllocateUninitializedArray<char>(sbArr.Length);
69+
sbArr.ToString(resultSpan);
70+
for (int i = 0; i < expectSpan.Length; i++)
71+
{
72+
var expectChar = expectSpan[i];
73+
var haveChar = resultSpan[i];
74+
Assert.That(haveChar, Is.EqualTo(expectChar));
75+
}
76+
#endif
77+
Assert.That(sbArr.ToString(), Is.EqualTo(sb.ToString()));
78+
}
79+
80+
[Test]
81+
[TestCaseSource(nameof(LengthCases))]
82+
public void AppendEnumerableTest(int length)
83+
{
84+
var strBuilded = new string('a', length - 1);
85+
var list = new List<string>();
86+
for (int i = 0; i < 53; i++)
87+
{
88+
var text = i.ToString() + strBuilded;
89+
list.Add(text);
90+
}
91+
92+
var sbArr = new StringBuilderArray.StringBuilderArray();
93+
for (int i = 0; i < 53; i++)
94+
{
95+
sbArr.Append(i.ToString() + strBuilded);
96+
}
97+
98+
var index = 0;
99+
foreach (var str in sbArr)
100+
{
101+
Assert.That(str, Is.EqualTo(list[index++]));
102+
}
103+
}
104+
}
105+
}
Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
using NUnit.Framework;
2+
using System;
3+
using System.Collections.Generic;
4+
using System.Text;
5+
6+
namespace StringBuilderArrayTests
7+
{
8+
[TestFixture]
9+
public class AppendLineFixture
10+
{
11+
public static object[] LengthCases = { 5, 7, 10, 50, 100, 1000, 2500 };
12+
13+
[Test]
14+
[TestCaseSource(nameof(LengthCases))]
15+
public void AppendLineTest(int length)
16+
{
17+
var strBuilded = new string('a', length - 1);
18+
var sb = new StringBuilder();
19+
for (int i = 0; i < 53; i++)
20+
{
21+
sb.AppendLine(i.ToString() + strBuilded);
22+
}
23+
24+
var sbArr = new StringBuilderArray.StringBuilderArray();
25+
for (int i = 0; i < 53; i++)
26+
{
27+
sbArr.AppendLine(i.ToString() + strBuilded);
28+
}
29+
30+
#if NET5_0_OR_GREATER
31+
var expectSpan = sb.ToString().AsSpan();
32+
var resultSpan = GC.AllocateUninitializedArray<char>(sbArr.Length);
33+
sbArr.ToString(resultSpan);
34+
for (int i = 0; i < expectSpan.Length; i++)
35+
{
36+
var expectChar = expectSpan[i];
37+
var haveChar = resultSpan[i];
38+
Assert.That(haveChar, Is.EqualTo(expectChar));
39+
}
40+
#endif
41+
Assert.That(sbArr.ToString(), Is.EqualTo(sb.ToString()));
42+
}
43+
44+
[Test]
45+
[TestCaseSource(nameof(LengthCases))]
46+
public void AppendLineClearTest(int length)
47+
{
48+
var strBuilded = new string('a', length - 1);
49+
var sb = new StringBuilder();
50+
for (int i = 53; i < 70; i++)
51+
{
52+
sb.AppendLine(i.ToString() + strBuilded);
53+
}
54+
55+
var sbArr = new StringBuilderArray.StringBuilderArray();
56+
for (int i = 0; i < 53; i++)
57+
{
58+
sbArr.AppendLine(i.ToString() + strBuilded);
59+
}
60+
sbArr.Clear();
61+
for (int i = 53; i < 70; i++)
62+
{
63+
sbArr.AppendLine(i.ToString() + strBuilded);
64+
}
65+
66+
#if NET5_0_OR_GREATER
67+
var expectSpan = sb.ToString().AsSpan();
68+
var resultSpan = GC.AllocateUninitializedArray<char>(sbArr.Length);
69+
sbArr.ToString(resultSpan);
70+
for (int i = 0; i < expectSpan.Length; i++)
71+
{
72+
var expectChar = expectSpan[i];
73+
var haveChar = resultSpan[i];
74+
Assert.That(haveChar, Is.EqualTo(expectChar));
75+
}
76+
#endif
77+
Assert.That(sbArr.ToString(), Is.EqualTo(sb.ToString()));
78+
}
79+
80+
[Test]
81+
[TestCaseSource(nameof(LengthCases))]
82+
public void AppendLineEnumerableTest(int length)
83+
{
84+
var strBuilded = new string('a', length - 1);
85+
var list = new List<string>();
86+
for (int i = 0; i < 53; i++)
87+
{
88+
var text = i.ToString() + strBuilded;
89+
list.Add(text);
90+
list.Add(Environment.NewLine);
91+
}
92+
93+
var sbArr = new StringBuilderArray.StringBuilderArray();
94+
for (int i = 0; i < 53; i++)
95+
{
96+
sbArr.AppendLine(i.ToString() + strBuilded);
97+
}
98+
99+
var index = 0;
100+
foreach (var str in sbArr)
101+
{
102+
Assert.That(str, Is.EqualTo(list[index++]));
103+
}
104+
}
105+
}
106+
}
Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
using NUnit.Framework;
2+
using System.Collections.Generic;
3+
4+
namespace StringBuilderArrayTests
5+
{
6+
[TestFixture]
7+
public class GetIndexFixture
8+
{
9+
[Test]
10+
public void GetIndex()
11+
{
12+
var sbArr = new StringBuilderArray.StringBuilderArray();
13+
for (int i = 0; i < 10; i++)
14+
{
15+
sbArr.Append(i.ToString());
16+
Assert.That(sbArr.GetIndex(i.ToString()), Is.EqualTo(0));
17+
}
18+
19+
var index = 0;
20+
for (int i = 10 - 1; i >= 0; i--)
21+
{
22+
Assert.That(sbArr.GetIndex(i.ToString()), Is.EqualTo(index++));
23+
}
24+
25+
Assert.That(sbArr.GetIndex("10"), Is.EqualTo(-1));
26+
}
27+
28+
[Test]
29+
public void Insert()
30+
{
31+
var expect = new List<string>()
32+
{
33+
"0", "1","2","3","4","5","6","7","8","9"
34+
};//count 10
35+
36+
var sbArr = new StringBuilderArray.StringBuilderArray();
37+
for (int i = 0; i < 10; i++)
38+
{
39+
sbArr.Append(i.ToString());
40+
}
41+
42+
expect.Insert(expect.Count - 1, "Secret before end");
43+
//count 11
44+
sbArr.Insert(0, "Secret before end");
45+
46+
var index = 0;
47+
foreach (var str in sbArr)
48+
{
49+
Assert.That(str, Is.EqualTo(expect[index++]));
50+
}
51+
52+
expect.Insert(0, "Secret start");
53+
//count 12
54+
sbArr.Insert(10, "Secret start");
55+
56+
index = 0;
57+
foreach (var str in sbArr)
58+
{
59+
Assert.That(str, Is.EqualTo(expect[index++]));
60+
}
61+
62+
expect.Insert(1, "Secret index 1");
63+
//count 13
64+
sbArr.Insert(10, "Secret index 1");
65+
66+
index = 0;
67+
foreach (var str in sbArr)
68+
{
69+
Assert.That(str, Is.EqualTo(expect[index++]));
70+
}
71+
72+
expect.Insert(9, "Secret index 9");
73+
//count 14
74+
sbArr.Insert(3, "Secret index 9");
75+
76+
index = 0;
77+
foreach (var str in sbArr)
78+
{
79+
Assert.That(str, Is.EqualTo(expect[index++]));
80+
}
81+
}
82+
}
83+
}

0 commit comments

Comments
 (0)