kbilsted / StatePrinter

Automating unit testing and ToString() coding
Apache License 2.0
93 stars 32 forks source link

Improved Enum output #63

Open ThranMaru opened 5 years ago

ThranMaru commented 5 years ago

I noticed, that Enum.GetName(Type, object) gives empty string for values that are not defined in the enum. Those can exist in C#. The ways to create them are the Enum.Parse method and explicit conversion from numeric type (EnumType)42. And because this can lead to errors and confusions, it's especially important that they print out. Furthermore, empty string is even returned for combined values of enum, even though it has the [Flags] attribute (EnumType.Flag1 | EnumType.Flag2), if they're not named (Flag1And2 = Flag1 | Flag2). Proposed method of using ToString() solves both these issues by printing numeric value for unnamed values (e.g. "42") and even recognizing when the enum is defined with Flags and the value consist of combination of them and providing list (e.g. "Flag1, Flag2").

kbilsted commented 5 years ago

Hi @ThranMaru

Many thanks for the PR. Can I ask you add some unit tests so we ensure we have covered all corner cases etc?

cheers