Skip to content

Conversation

@kellanburns
Copy link

Worked on with @KorbinWeiler

Copy link

@katmilton katmilton left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Implement the ISampleData.CsvRows property, loading the data from the People.csv file and returning each line as a single string. ✔

Change the "Copy to" property on People.csv to "Copy if newer" so that the file is deployed along with your test project. ✔
Using LINQ, skip the first row in the People.csv. ✔
Be sure to appropriately handle resource (IDisposable) items correctly if applicable (and it may not be depending on how you implement it). ✔
Implement IEnumerable GetUniqueSortedListOfStatesGivenCsvRows() to return a sorted, unique list of states. ✔

Use ISampleData.CsvRows for your data source. ✔
Don't forget the list should be unique. ✔
Sort the list alphabetically. ✔
Include a test that leverages a hardcoded list of addresses. ✔
Include a test that uses LINQ to verify the data is sorted correctly (do not use a hardcoded list). ✔
Implement ISampleData.GetAggregateSortedListOfStatesUsingCsvRows() to return a string that contains a unique, comma separated list of states. ✔

Use ISampleData.GetUniqueSortedListOfStatesGivenCsvRows() for your data source. ✔
Consider "selecting" only the states and calling ToArray() to retrieve an array of all the state names. ✔
Given the array, consider using string.Join to combine the list into a single string. ✔
Implement the ISampleData.People property to return all the items in People.csv as Person objects ✔

Use ISampleData.CsvRows as the source of the data. ✔
Sort the list by State, City, and Zip. ✔
Be sure that Person.Address is also populated. ✔
Adding null validation to all the Person and Address properties is optional.
Consider using ISampleData.CsvRows in your test to verify your results. ✔
Implement ISampleDate.FilterByEmailAddress(Predicate filter) to return a list of names where the email address matches the filter. ✔

Use ISampleData.People for your data source. ✔
Implement ISampleData.GetAggregateListOfStatesGivenPeopleCollection(IEnumerable people) to return a string that contains a unique, comma-separated list of states. ✔

Use the people parameter from ISampleData.People property for your data source. ✔
At a minimum, use the System.Linq.Enumerable.Aggregate` LINQ method to create your result. ✔
Don't forget the list should be unique. ✔
It is recommended that, at a minimum, you use ISampleData.GetUniqueSortedListOfStatesGivenCsvRows to validate your result.
Given the implementation of Node in Assignment5

Implement IEnumerable to return all the items in the "circle" of items. ✔
Add an IEnumberable ChildItems(int maximum) method to Node that returns the remaining items with a maximum number of items returned less than maximum.
Extra Credit

Implement the homework using async/await and multi-threading by defining a new SampleDataAsync class that implements IAsyncSampleData). Refactor your SampleData and SampleDataAsync classes with minimal duplication. Be sure to refactor your tests to re-use a significant amount of the test code for both implementations. ✔
Fundamentals

Place all shared project properties into a Directory.Build.Props file.
Place all shared project items into a Directory.Build.targets file.
Ensure nullable reference types is enabled ✔
Ensure that you turn on code analysis for all projects(EnableNETAnalyzers) ✔
Set LangVersion and the TargetFramework to the latest released versions available (preview versions optional) ✔
and enabled .NET analyzers for both projects ✔
For this assignment, consider using Assert.AreEqual() (the generic version) ✔
All of the above should be unit tested ✔
Choose simplicity over complexity ✔

Nice work!

Copy link

@Al3xramirez Al3xramirez left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Implement the ISampleData.CsvRows property, loading the data from the People.csv file and returning each line as a single string. ✔

Change the "Copy to" property on People.csv to "Copy if newer" so that the file is deployed along with your test project. ✔
Using LINQ, skip the first row in the People.csv. ✔
Be sure to appropriately handle resource (IDisposable) items correctly if applicable (and it may not be depending on how you implement it). ✔
Implement IEnumerable GetUniqueSortedListOfStatesGivenCsvRows() to return a sorted, unique list of states. ✔

Use ISampleData.CsvRows for your data source. ✔
Don't forget the list should be unique. ✔
Sort the list alphabetically. ✔
Include a test that leverages a hardcoded list of addresses. ✔
Include a test that uses LINQ to verify the data is sorted correctly (do not use a hardcoded list). ✔
Implement ISampleData.GetAggregateSortedListOfStatesUsingCsvRows() to return a string that contains a unique, comma separated list of states. ✔

Use ISampleData.GetUniqueSortedListOfStatesGivenCsvRows() for your data source. ✔
Consider "selecting" only the states and calling ToArray() to retrieve an array of all the state names. ✔
Given the array, consider using string.Join to combine the list into a single string. ✔
Implement the ISampleData.People property to return all the items in People.csv as Person objects ✔

Use ISampleData.CsvRows as the source of the data. ✔
Sort the list by State, City, and Zip. ✔
Be sure that Person.Address is also populated. ✔
Adding null validation to all the Person and Address properties is optional.
Consider using ISampleData.CsvRows in your test to verify your results. ✔
Implement ISampleDate.FilterByEmailAddress(Predicate filter) to return a list of names where the email address matches the filter. ✔

Use ISampleData.People for your data source. ✔
Implement ISampleData.GetAggregateListOfStatesGivenPeopleCollection(IEnumerable people) to return a string that contains a unique, comma-separated list of states. ✔

Use the people parameter from ISampleData.People property for your data source. ✔
At a minimum, use the System.Linq.Enumerable.Aggregate` LINQ method to create your result. ✔
Don't forget the list should be unique. ✔
It is recommended that, at a minimum, you use ISampleData.GetUniqueSortedListOfStatesGivenCsvRows to validate your result.
Given the implementation of Node in Assignment5

Implement IEnumerable to return all the items in the "circle" of items. ✔
Add an IEnumberable ChildItems(int maximum) method to Node that returns the remaining items with a maximum number of items returned less than maximum.

Fundamentals
Place all shared project properties into a Directory.Build.Props file. ✔
Place all shared project items into a Directory.Build.targets file. ❌
Ensure nullable reference types is enabled ✔
Ensure that you turn on code analysis for all projects(EnableNETAnalyzers) ✔
Set LangVersion and the TargetFramework to the latest released versions available (preview versions optional) ✔
and enabled .NET analyzers for both projects ✔
For this assignment, consider using Assert.AreEqual() (the generic version) ❌
All of the above should be unit tested ✔
Choose simplicity over complexity ✔

Great work, love your unit testing!

Copy link

@RyanHirte RyanHirte left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Implement the ISampleData.CsvRows property, loading the data from the People.csv file and returning each line as a single string. ✔

Change the "Copy to" property on People.csv to "Copy if newer" so that the file is deployed along with your test project. ✔
Using LINQ, skip the first row in the People.csv. ✔
Be sure to appropriately handle resource (IDisposable) items correctly if applicable (and it may not be depending on how you implement it). ✔
Implement IEnumerable GetUniqueSortedListOfStatesGivenCsvRows() to return a sorted, unique list of states. ✔

Use ISampleData.CsvRows for your data source. ✔
Don't forget the list should be unique. ✔
Sort the list alphabetically. ✔
Include a test that leverages a hardcoded list of addresses. ✔
Include a test that uses LINQ to verify the data is sorted correctly (do not use a hardcoded list). ✔
Implement ISampleData.GetAggregateSortedListOfStatesUsingCsvRows() to return a string that contains a unique, comma separated list of states. ✔

Use ISampleData.GetUniqueSortedListOfStatesGivenCsvRows() for your data source. ✔
Consider "selecting" only the states and calling ToArray() to retrieve an array of all the state names. ✔
Given the array, consider using string.Join to combine the list into a single string. ✔
Implement the ISampleData.People property to return all the items in People.csv as Person objects ✔

Use ISampleData.CsvRows as the source of the data. ✔
Sort the list by State, City, and Zip. ✔
Be sure that Person.Address is also populated. ✔
Adding null validation to all the Person and Address properties is optional.
Consider using ISampleData.CsvRows in your test to verify your results. ✔
Implement ISampleDate.FilterByEmailAddress(Predicate filter) to return a list of names where the email address matches the filter. ✔

Use ISampleData.People for your data source. ✔
Implement ISampleData.GetAggregateListOfStatesGivenPeopleCollection(IEnumerable people) to return a string that contains a unique, comma-separated list of states. ✔

Use the people parameter from ISampleData.People property for your data source. ✔
At a minimum, use the System.Linq.Enumerable.Aggregate` LINQ method to create your result. ✔
Don't forget the list should be unique. ✔
It is recommended that, at a minimum, you use ISampleData.GetUniqueSortedListOfStatesGivenCsvRows to validate your result.
Given the implementation of Node in Assignment5

Implement IEnumerable to return all the items in the "circle" of items. ✔
Add an IEnumberable ChildItems(int maximum) method to Node that returns the remaining items with a maximum number of items returned less than maximum.

Extra credit not done.

Place all shared project properties into a Directory.Build.Props file.
Place all shared project items into a Directory.Build.targets file.
Ensure nullable reference types is enabled ✔
Ensure that you turn on code analysis for all projects(EnableNETAnalyzers) ✔
Set LangVersion and the TargetFramework to the latest released versions available (preview versions optional) ✔
and enabled .NET analyzers for both projects ✔
For this assignment, consider using Assert.AreEqual() (the generic version) ❌
All of the above should be unit tested ✔
Choose simplicity over complexity ✔

Great job just some nitpicks with csproj files.

@c-stanton
Copy link

c-stanton commented Nov 20, 2025

  1. Implement the ISampleData.CsvRows property, loading the data from the People.csv file and returning each line as a single string. ✔
    o Change the "Copy to" property on People.csv to "Copy if newer" so that the file is deployed along with your test project. ✔
    o Using LINQ, skip the first row in the People.csv. ✔
    o Be sure to appropriately handle resource (IDisposable) items correctly if applicable (and it may not be depending on how you implement it). ✔
  2. Implement IEnumerable GetUniqueSortedListOfStatesGivenCsvRows() to return a sorted, unique list of states. ✔
    o Use ISampleData.CsvRows for your data source. ✔
    o Don't forget the list should be unique. ✔
    o Sort the list alphabetically. ✔
    o Include a test that leverages a hardcoded list of addresses. ✔
    o Include a test that uses LINQ to verify the data is sorted correctly (do not use a hardcoded list). ✔
  3. Implement ISampleData.GetAggregateSortedListOfStatesUsingCsvRows() to return a string that contains a unique, comma separated list of states. ✔
    o Use ISampleData.GetUniqueSortedListOfStatesGivenCsvRows() for your data source. ✔
    o Consider "selecting" only the states and calling ToArray() to retrieve an array of all the state names. ✔
    o Given the array, consider using string.Join to combine the list into a single string. ✔
  4. Implement the ISampleData.People property to return all the items in People.csv as Person objects ✔
    o Use ISampleData.CsvRows as the source of the data. ✔
    o Sort the list by State, City, and Zip. ✔
    o Be sure that Person.Address is also populated. ✔
    o Adding null validation to all the Person and Address properties is optional.
    o Consider using ISampleData.CsvRows in your test to verify your results. ✔
  5. Implement ISampleDate.FilterByEmailAddress(Predicate filter) to return a list of names where the email address matches the filter. ✔
    o Use ISampleData.People for your data source. ✔
  6. Implement ISampleData.GetAggregateListOfStatesGivenPeopleCollection(IEnumerable people) to return a string that contains a unique, comma-separated list of states. ✔
    o Use the people parameter from ISampleData.People property for your data source. ✔
    o At a minimum, use the System.Linq.Enumerable.Aggregate` LINQ method to create your result. ✔
    o Don't forget the list should be unique. ✔
    o It is recommended that, at a minimum, you use ISampleData.GetUniqueSortedListOfStatesGivenCsvRows to validate your result. ✔
  7. Given the implementation of Node in Assignment5
    • Implement IEnumerable to return all the items in the "circle" of items. ✔
    • Add an IEnumberable ChildItems(int maximum) method to Node that returns the remaining items with a maximum number of items returned less than maximum. ✔
    Fundamentals
    • Place all shared project properties into a Directory.Build.Props file. ✔
    • Place all shared project items into a Directory.Build.targets file. ❌
    • Ensure nullable reference types is enabled ✔
    • Ensure that you turn on code analysis for all projects(EnableNETAnalyzers) ✔
    • Set LangVersion and the TargetFramework to the latest released versions available (preview versions optional) ✔
    • and enabled .NET analyzers for both projects ✔
    • For this assignment, consider using Assert.AreEqual() (the generic version) ✔
    • All of the above should be unit tested ✔
    • Choose simplicity over complexity ✔

Nice job overall

@github-actions
Copy link

Summary

Summary
Generated on: 11/21/2025 - 06:35:59
Coverage date: 11/21/2025 - 06:35:57
Parser: MultiReport (2x Cobertura)
Assemblies: 1
Classes: 4
Files: 4
Line coverage: 91.8% (112 of 122)
Covered lines: 112
Uncovered lines: 10
Coverable lines: 122
Total lines: 212
Branch coverage: 68.1% (15 of 22)
Covered branches: 15
Total branches: 22
Method coverage: Feature is only available for sponsors
Tag: 491_19562235735

Coverage

Assignment - 91.8%
Name Line Branch
Assignment 91.8% 68.1%
Assignment.Address 100%
Assignment.Node`1 81.4% 61.1%
Assignment.Person 100%
Assignment.SampleData 100% 100%

Copy link
Collaborator

@Joshua-Lester3 Joshua-Lester3 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Instructions

Throughout, consider using the System.Linq.Enumerable methods Zip, Count, Sort and Contains methods for testing collections.. (Preferably avoid using Microsoft.VisualStudio.TestTools.UnitTesting.CollectionAssert although that might be easier, to get a firmer grasp on additional LINQ API.)

  1. Implement the ISampleData.CsvRows property, loading the data from the People.csv file and returning each line as a single string. ✔

    • Change the "Copy to" property on People.csv to "Copy if newer" so that the file is deployed along with your test project. ✔
    • Using LINQ, skip the first row in the People.csv. ✔
    • Be sure to appropriately handle resource (IDisposable) items correctly if applicable (and it may not be depending on how you implement it). ✔
  2. Implement IEnumerable<string> GetUniqueSortedListOfStatesGivenCsvRows() to return a sorted, unique list of states. ✔

    • Use ISampleData.CsvRows for your data source. ✔
    • Don't forget the list should be unique. ✔
    • Sort the list alphabetically. ✔
    • Include a test that leverages a hardcoded list of addresses. ✔
    • Include a test that uses LINQ to verify the data is sorted correctly (do not use a hardcoded list). ✔
  3. Implement ISampleData.GetAggregateSortedListOfStatesUsingCsvRows() to return a string that contains a unique, comma separated list of states. ✔

    • Use ISampleData.GetUniqueSortedListOfStatesGivenCsvRows() for your data source. ✔
    • Consider "selecting" only the states and calling ToArray() to retrieve an array of all the state names. ✔
    • Given the array, consider using string.Join to combine the list into a single string. ✔
  4. Implement the ISampleData.People property to return all the items in People.csv as Person objects ✔

    • Use ISampleData.CsvRows as the source of the data. ✔
    • Sort the list by State, City, and Zip. ✔
    • Be sure that Person.Address is also populated. ✔
    • Adding null validation to all the Person and Address properties is optional.
    • Consider using ISampleData.CsvRows in your test to verify your results. ✔
  5. Implement ISampleDate.FilterByEmailAddress(Predicate<string> filter) to return a list of names where the email address matches the filter. ✔

    • Use ISampleData.People for your data source. ✔
  6. Implement ISampleData.GetAggregateListOfStatesGivenPeopleCollection(IEnumerable<IPerson> people) to return a string that contains a unique, comma-separated list of states. ✔

    • Use the people parameter from ISampleData.People property for your data source. ✔
    • At a minimum, use the System.Linq.Enumerable.Aggregate` LINQ method to create your result. ✔
    • Don't forget the list should be unique. ✔
    • It is recommended that, at a minimum, you use ISampleData.GetUniqueSortedListOfStatesGivenCsvRows to validate your result.
  7. Given the implementation of Node in Assignment5

  • Implement IEnumerable<T> to return all the items in the "circle" of items. ✔
  • Add an IEnumberable<T> ChildItems(int maximum) method to Node that returns the remaining items with a maximum number of items returned less than maximum.

Extra Credit

  • Implement the homework using async/await and multi-threading by defining a new SampleDataAsync class that implements IAsyncSampleData). Refactor your SampleData and SampleDataAsync classes with minimal duplication. Be sure to refactor your tests to re-use a significant amount of the test code for both implementations. ❌ not implemented

Fundamentals

  • Place all shared project properties into a Directory.Build.Props file.
  • Place all shared project items into a Directory.Build.targets file.
  • Ensure nullable reference types is enabled ✔
  • Ensure that you turn on code analysis for all projects(EnableNETAnalyzers) ✔
  • Set LangVersion and the TargetFramework to the latest released versions available (preview versions optional) ✔
  • and enabled .NET analyzers for both projects ✔
  • For this assignment, consider using Assert.AreEqual<T>() (the generic version) ✔
  • All of the above should be unit tested ✔
  • Choose simplicity over complexity ✔

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants