The Program uses variable naming conventions very well and the code is almost self-documenting.
The Program handles errors well. It uses conditions to ensure only the correct values are entered into the object:
if (value <= 13 && value >= 1) {
cardValue = value;
} else {
Console.WriteLine("Value given is too large or too smol");
}
the rest of the data input is written using Enums and so errors are checked at compile time. Hence the program is very robust and can deal with different situations.
The program exits gracefully and doesn't throw too many errors if anything does go wrong.
currently anyone interfacing with the class cannot add or remove cards which omits a lot of errors but if this code was to be used it may need such functionality.
Further Improvements
Consider: To improve the code further the outputs which the Testing classes uses for comparisons could be stored else where or generated procedurally which would make the code base a little cleaner.
NIT: Test cases also have a lot of repeated code. Is there a way to reduce this?
FYI: A Card Constructor may have helped in the long run to reduce the amount of code you have to write.
FYI: C# adds a lot of redundant imports which clog up the final binary; removing the redundant ones could be nice:
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
Further Improvements
Consider:
To improve the code further the outputs which the Testing classes uses for comparisons could be stored else where or generated procedurally which would make the code base a little cleaner.NIT:
Test cases also have a lot of repeated code. Is there a way to reduce this?FYI:
A Card Constructor may have helped in the long run to reduce the amount of code you have to write.FYI:
C# adds a lot of redundant imports which clog up the final binary; removing the redundant ones could be nice:Otherwise LGTM :)