Skip to content

Snippets5000: Add test for single delete two code files remain #536

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Jun 30, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions snippets5000/PullRequestSimulations/data.json
Original file line number Diff line number Diff line change
Expand Up @@ -319,6 +319,21 @@
},

// BAD items
{
"Name": "Delete - Two code files remain no project",
"ExpectedResults": [
{
"ResultCode": 1,
"DiscoveredProject": ""
}
],
"Items": [
{
"ItemType": "Delete",
"Path": "snippets/bad/loose-files/DeletedFile.cs"
}
]
},
{
"Name": "Edit - Project missing",
"ExpectedResults": [
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
using System;
using System.Collections.Generic;
using System.Linq;

namespace Custom.Linq.Extensions
{
// <LinqExtensionClass>
public static class EnumerableExtension
{
public static double Median(this IEnumerable<double>? source)
{
if (source is null || !source.Any())
{
throw new InvalidOperationException("Cannot compute median for a null or empty set.");
}

var sortedList =
source.OrderBy(number => number).ToList();

int itemIndex = sortedList.Count / 2;

if (sortedList.Count % 2 == 0)
{
// Even number of items.
return (sortedList[itemIndex] + sortedList[itemIndex - 1]) / 2;
}
else
{
// Odd number of items.
return sortedList[itemIndex];
}
}
}
// </LinqExtensionClass>

public static class OtherExtensions
{
// <IntOverload>
// int overload
public static double Median(this IEnumerable<int> source) =>
(from number in source select (double)number).Median();
// </IntOverload>

// <GenericOverload>
// generic overload
public static double Median<T>(
this IEnumerable<T> numbers, Func<T, double> selector) =>
(from num in numbers select selector(num)).Median();
// </GenericOverload>

// <SequenceElement>
// Extension method for the IEnumerable<T> interface.
// The method returns every other element of a sequence.
public static IEnumerable<T> AlternateElements<T>(this IEnumerable<T> source)
{
int index = 0;
foreach (T element in source)
{
if (index % 2 == 0)
{
yield return element;
}

index++;
}
}
// </SequenceElement>
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
using Custom.Linq.Extensions;

// <MedianUsage>
double[] numbers = { 1.9, 2, 8, 4, 5.7, 6, 7.2, 0 };
var query = numbers.Median();

Console.WriteLine($"double: Median = {query}");
// This code produces the following output:
// double: Median = 4.85
// </MedianUsage>

// <OverloadUsage>
double[] numbers1 = { 1.9, 2, 8, 4, 5.7, 6, 7.2, 0 };
var query1 = numbers1.Median();

Console.WriteLine($"double: Median = {query1}");

int[] numbers2 = { 1, 2, 3, 4, 5 };
var query2 = numbers2.Median();

Console.WriteLine($"int: Median = {query2}");
// This code produces the following output:
// double: Median = 4.85
// int: Median = 3
// </OverloadUsage>

// <GenericUsage>
int[] numbers3 = { 1, 2, 3, 4, 5 };

/*
You can use the num => num lambda expression as a parameter for the Median method
so that the compiler will implicitly convert its value to double.
If there is no implicit conversion, the compiler will display an error message.
*/
var query3 = numbers3.Median(num => num);

Console.WriteLine($"int: Median = {query3}");

string[] numbers4 = { "one", "two", "three", "four", "five" };

// With the generic overload, you can also use numeric properties of objects.
var query4 = numbers4.Median(str => str.Length);

Console.WriteLine($"string: Median = {query4}");
// This code produces the following output:
// int: Median = 3
// string: Median = 4
// </GenericUsage>

// <SequenceUsage>
string[] strings = { "a", "b", "c", "d", "e" };

var query5 = strings.AlternateElements();

foreach (var element in query5)
{
Console.WriteLine(element);
}
// This code produces the following output:
// a
// c
// e
// </SequenceUsage>
Loading