Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions exercises/concept/attack-of-the-trolls/.docs/instructions.md
Original file line number Diff line number Diff line change
Expand Up @@ -52,4 +52,11 @@ Implement the (_static_) `Permissions.Check()` method that takes the current acc
```csharp
Permissions.Check(current: Permission.Write, check: Permission.Read)
// => false

## 5. Parse a permission from a string

Implement the (_static_) `Permissions.ParsePermission()` method that parses a string representation of a permission into the `Permission` enum:
```csharp
Permissions.ParsePermission("Write")
// => Permission.Write
```
5 changes: 5 additions & 0 deletions exercises/concept/attack-of-the-trolls/.meta/Exemplar.cs
Original file line number Diff line number Diff line change
Expand Up @@ -46,4 +46,9 @@ public static bool Check(Permission current, Permission check)
{
return current.HasFlag(check);
}

public static Permission ParsePermission(string permissionString)
{
return Enum.Parse<Permission>(permissionString, ignoreCase: true);
}
}
3 changes: 2 additions & 1 deletion exercises/concept/attack-of-the-trolls/.meta/config.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@
],
"contributors": [
"valentin-p",
"yzAlvin"
"yzAlvin",
"karanchadha10"
],
"files": {
"solution": [
Expand Down
1 change: 1 addition & 0 deletions exercises/concept/attack-of-the-trolls/.meta/design.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
- Know how to unset a flag on an enum value.
- Know that an enum's underlying type can be changed.
- Know how to use bitwise operators to manipulate bits.
- Know how to parse a string to an enum value using `Enum.Parse<TEnum>()`.

## Out of scope

Expand Down
5 changes: 5 additions & 0 deletions exercises/concept/attack-of-the-trolls/AttackOfTheTrolls.cs
Original file line number Diff line number Diff line change
Expand Up @@ -23,4 +23,9 @@ public static bool Check(Permission current, Permission check)
{
throw new NotImplementedException("Please implement the (static) Permissions.Check() method");
}

public static Permission ParsePermission(string permissionString)
{
throw new NotImplementedException("Please implement the (static) Permissions.ParsePermission() method");
}
}
42 changes: 42 additions & 0 deletions exercises/concept/attack-of-the-trolls/AttackOfTheTrollsTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -173,4 +173,46 @@ public void Check_read_and_write_and_delete_for_all()
{
Assert.True(Permissions.Check(Permission.Read | Permission.Write | Permission.Delete, Permission.All));
}

[Fact]
[Task(5)]
public void Parse_read_permission()
{
Assert.Equal(Permission.Read, Permissions.ParsePermission("Read"));
}

[Fact]
[Task(5)]
public void Parse_write_permission()
{
Assert.Equal(Permission.Write, Permissions.ParsePermission("Write"));
}

[Fact]
[Task(5)]
public void Parse_delete_permission()
{
Assert.Equal(Permission.Delete, Permissions.ParsePermission("Delete"));
}

[Fact]
[Task(5)]
public void Parse_all_permission()
{
Assert.Equal(Permission.All, Permissions.ParsePermission("All"));
}

[Fact]
[Task(5)]
public void Parse_none_permission()
{
Assert.Equal(Permission.None, Permissions.ParsePermission("None"));
}

[Fact]
[Task(5)]
public void Parse_permission_case_insensitive()
{
Assert.Equal(Permission.Read, Permissions.ParsePermission("read"));
}
}
Loading