Skip to content

Commit 002a511

Browse files
committed
Add enum.parse task to attack-of-the-trolls exercise
1 parent caa9452 commit 002a511

File tree

6 files changed

+62
-1
lines changed

6 files changed

+62
-1
lines changed

exercises/concept/attack-of-the-trolls/.docs/instructions.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,4 +52,11 @@ Implement the (_static_) `Permissions.Check()` method that takes the current acc
5252
```csharp
5353
Permissions.Check(current: Permission.Write, check: Permission.Read)
5454
// => false
55+
56+
## 5. Parse a permission from a string
57+
58+
Implement the (_static_) `Permissions.ParsePermission()` method that parses a string representation of a permission into the `Permission` enum:
59+
```csharp
60+
Permissions.ParsePermission("Write")
61+
// => Permission.Write
5562
```

exercises/concept/attack-of-the-trolls/.meta/Exemplar.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,4 +46,9 @@ public static bool Check(Permission current, Permission check)
4646
{
4747
return current.HasFlag(check);
4848
}
49+
50+
public static Permission ParsePermission(string permissionString)
51+
{
52+
return Enum.Parse<Permission>(permissionString, ignoreCase: true);
53+
}
4954
}

exercises/concept/attack-of-the-trolls/.meta/config.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@
44
],
55
"contributors": [
66
"valentin-p",
7-
"yzAlvin"
7+
"yzAlvin",
8+
"karanchadha10"
89
],
910
"files": {
1011
"solution": [

exercises/concept/attack-of-the-trolls/.meta/design.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
- Know how to unset a flag on an enum value.
1010
- Know that an enum's underlying type can be changed.
1111
- Know how to use bitwise operators to manipulate bits.
12+
- Know how to parse a string to an enum value using `Enum.Parse<TEnum>()`.
1213

1314
## Out of scope
1415

exercises/concept/attack-of-the-trolls/AttackOfTheTrolls.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,4 +23,9 @@ public static bool Check(Permission current, Permission check)
2323
{
2424
throw new NotImplementedException("Please implement the (static) Permissions.Check() method");
2525
}
26+
27+
public static Permission ParsePermission(string permissionString)
28+
{
29+
throw new NotImplementedException("Please implement the (static) Permissions.ParsePermission() method");
30+
}
2631
}

exercises/concept/attack-of-the-trolls/AttackOfTheTrollsTests.cs

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -173,4 +173,46 @@ public void Check_read_and_write_and_delete_for_all()
173173
{
174174
Assert.True(Permissions.Check(Permission.Read | Permission.Write | Permission.Delete, Permission.All));
175175
}
176+
177+
[Fact]
178+
[Task(5)]
179+
public void Parse_read_permission()
180+
{
181+
Assert.Equal(Permission.Read, Permissions.ParsePermission("Read"));
182+
}
183+
184+
[Fact]
185+
[Task(5)]
186+
public void Parse_write_permission()
187+
{
188+
Assert.Equal(Permission.Write, Permissions.ParsePermission("Write"));
189+
}
190+
191+
[Fact]
192+
[Task(5)]
193+
public void Parse_delete_permission()
194+
{
195+
Assert.Equal(Permission.Delete, Permissions.ParsePermission("Delete"));
196+
}
197+
198+
[Fact]
199+
[Task(5)]
200+
public void Parse_all_permission()
201+
{
202+
Assert.Equal(Permission.All, Permissions.ParsePermission("All"));
203+
}
204+
205+
[Fact]
206+
[Task(5)]
207+
public void Parse_none_permission()
208+
{
209+
Assert.Equal(Permission.None, Permissions.ParsePermission("None"));
210+
}
211+
212+
[Fact]
213+
[Task(5)]
214+
public void Parse_permission_case_insensitive()
215+
{
216+
Assert.Equal(Permission.Read, Permissions.ParsePermission("read"));
217+
}
176218
}

0 commit comments

Comments
 (0)