Skip to content

Commit f0d3212

Browse files
authored
Add test for single delete two code files remain (#536)
1 parent a32d8f5 commit f0d3212

File tree

3 files changed

+147
-0
lines changed

3 files changed

+147
-0
lines changed

snippets5000/PullRequestSimulations/data.json

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -319,6 +319,21 @@
319319
},
320320

321321
// BAD items
322+
{
323+
"Name": "Delete - Two code files remain no project",
324+
"ExpectedResults": [
325+
{
326+
"ResultCode": 1,
327+
"DiscoveredProject": ""
328+
}
329+
],
330+
"Items": [
331+
{
332+
"ItemType": "Delete",
333+
"Path": "snippets/bad/loose-files/DeletedFile.cs"
334+
}
335+
]
336+
},
322337
{
323338
"Name": "Edit - Project missing",
324339
"ExpectedResults": [
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Linq;
4+
5+
namespace Custom.Linq.Extensions
6+
{
7+
// <LinqExtensionClass>
8+
public static class EnumerableExtension
9+
{
10+
public static double Median(this IEnumerable<double>? source)
11+
{
12+
if (source is null || !source.Any())
13+
{
14+
throw new InvalidOperationException("Cannot compute median for a null or empty set.");
15+
}
16+
17+
var sortedList =
18+
source.OrderBy(number => number).ToList();
19+
20+
int itemIndex = sortedList.Count / 2;
21+
22+
if (sortedList.Count % 2 == 0)
23+
{
24+
// Even number of items.
25+
return (sortedList[itemIndex] + sortedList[itemIndex - 1]) / 2;
26+
}
27+
else
28+
{
29+
// Odd number of items.
30+
return sortedList[itemIndex];
31+
}
32+
}
33+
}
34+
// </LinqExtensionClass>
35+
36+
public static class OtherExtensions
37+
{
38+
// <IntOverload>
39+
// int overload
40+
public static double Median(this IEnumerable<int> source) =>
41+
(from number in source select (double)number).Median();
42+
// </IntOverload>
43+
44+
// <GenericOverload>
45+
// generic overload
46+
public static double Median<T>(
47+
this IEnumerable<T> numbers, Func<T, double> selector) =>
48+
(from num in numbers select selector(num)).Median();
49+
// </GenericOverload>
50+
51+
// <SequenceElement>
52+
// Extension method for the IEnumerable<T> interface.
53+
// The method returns every other element of a sequence.
54+
public static IEnumerable<T> AlternateElements<T>(this IEnumerable<T> source)
55+
{
56+
int index = 0;
57+
foreach (T element in source)
58+
{
59+
if (index % 2 == 0)
60+
{
61+
yield return element;
62+
}
63+
64+
index++;
65+
}
66+
}
67+
// </SequenceElement>
68+
}
69+
}
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
using Custom.Linq.Extensions;
2+
3+
// <MedianUsage>
4+
double[] numbers = { 1.9, 2, 8, 4, 5.7, 6, 7.2, 0 };
5+
var query = numbers.Median();
6+
7+
Console.WriteLine($"double: Median = {query}");
8+
// This code produces the following output:
9+
// double: Median = 4.85
10+
// </MedianUsage>
11+
12+
// <OverloadUsage>
13+
double[] numbers1 = { 1.9, 2, 8, 4, 5.7, 6, 7.2, 0 };
14+
var query1 = numbers1.Median();
15+
16+
Console.WriteLine($"double: Median = {query1}");
17+
18+
int[] numbers2 = { 1, 2, 3, 4, 5 };
19+
var query2 = numbers2.Median();
20+
21+
Console.WriteLine($"int: Median = {query2}");
22+
// This code produces the following output:
23+
// double: Median = 4.85
24+
// int: Median = 3
25+
// </OverloadUsage>
26+
27+
// <GenericUsage>
28+
int[] numbers3 = { 1, 2, 3, 4, 5 };
29+
30+
/*
31+
You can use the num => num lambda expression as a parameter for the Median method
32+
so that the compiler will implicitly convert its value to double.
33+
If there is no implicit conversion, the compiler will display an error message.
34+
*/
35+
var query3 = numbers3.Median(num => num);
36+
37+
Console.WriteLine($"int: Median = {query3}");
38+
39+
string[] numbers4 = { "one", "two", "three", "four", "five" };
40+
41+
// With the generic overload, you can also use numeric properties of objects.
42+
var query4 = numbers4.Median(str => str.Length);
43+
44+
Console.WriteLine($"string: Median = {query4}");
45+
// This code produces the following output:
46+
// int: Median = 3
47+
// string: Median = 4
48+
// </GenericUsage>
49+
50+
// <SequenceUsage>
51+
string[] strings = { "a", "b", "c", "d", "e" };
52+
53+
var query5 = strings.AlternateElements();
54+
55+
foreach (var element in query5)
56+
{
57+
Console.WriteLine(element);
58+
}
59+
// This code produces the following output:
60+
// a
61+
// c
62+
// e
63+
// </SequenceUsage>

0 commit comments

Comments
 (0)