-
Notifications
You must be signed in to change notification settings - Fork 21
Assignment7+8 Extra Credit #89
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
base: Assignment7+8-LINQ
Are you sure you want to change the base?
Assignment7+8 Extra Credit #89
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This PR implements Assignment 7+8, which adds implementation for data processing classes, async data handling, a circular linked list data structure (Node), and comprehensive test coverage.
- Implements synchronous and asynchronous CSV data processing classes
- Adds a circular linked list data structure with IEnumerable support
- Includes comprehensive unit tests for all implemented functionality
Reviewed Changes
Copilot reviewed 15 out of 25 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| global.json | Updates SDK version from 9.0.306 to 9.0.305 |
| Directory.Build.targets | Adds new build targets file to manage project references conditionally |
| Directory.Build.props | Formatting changes (line numbering added) |
| Assignment/SampleData.cs | Implements ISampleData interface with CSV parsing and data processing |
| Assignment/SampleDataAsync.cs | Implements IAsyncSampleData interface with async CSV parsing |
| Assignment/Person.cs | Formatting changes (line numbering added) |
| Assignment/People.csv | Adds CSV data file with 50 person records |
| Assignment/Node.cs | Implements circular linked list with IEnumerable support |
| Assignment/DataHelper.cs | Adds static helper methods for CSV parsing and data extraction |
| Assignment/Address.cs | Formatting changes (line numbering added) |
| Assignment/Assignment.csproj | Adds configuration to copy People.csv to output directory |
| Assignment.Tests/SampleDataTests.cs | Adds comprehensive tests for SampleData class |
| Assignment.Tests/SampleDataAsyncTests.cs | Adds comprehensive tests for SampleDataAsync class |
| Assignment.Tests/NodeTests.cs | Adds tests for Node circular linked list implementation |
| Assignment.Tests/Assignment.Tests.csproj | Updates MSTest packages to 4.0.2 and adds project reference |
| Assignment.Tests/AssemblyAttributes.cs | Adds test parallelization configuration |
| Assignment.Interfaces/ISampleData.cs | Formatting changes (line numbering added) |
| Assignment.Interfaces/IAsyncSampleData.cs | Updates return type for GetAggregateSortedListOfStatesUsingCsvRows to Task |
| Assignment.Interfaces/IPerson.cs | Formatting changes (line numbering added) |
| Assignment.Interfaces/IAddress.cs | Formatting changes (line numbering added) |
| .gitignore | Updates gitignore with formatting changes and Mac-specific files |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
…l3xramirez/EWU-CSCD371-2025-Fall into Assignment7+8-LINQ_ExtraCredit
ColtonKnopik
left a comment
There was a problem hiding this 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 ✔
Good job
Extra Credit
Fundamentals
Program is totally there, just looks like a minor tweak on setup is needed. I also admire the functional use of helper methods, seems effective for avoiding duplicate code. |
…l3xramirez/EWU-CSCD371-2025-Fall into Assignment7+8-LINQ_ExtraCredit
SummarySummary
CoverageAssignment - 95.3%
|
worked with @thigiang16. Extra Credit attempted