Skip to content

Commit d6db2cf

Browse files
committed
Add new PluginCategory values and unit tests
Updated the `PluginCategory` enum to include `Compression`, `IoT`, and `Media`, with corresponding XML summary comments. Retained and reformatted the `Execution` category. Added a new test class `PluginCategoryTests` to verify enum values, parsing from strings, and handling of invalid values. #24
1 parent db67f6e commit d6db2cf

2 files changed

Lines changed: 79 additions & 1 deletion

File tree

src/PluginCategory.cs

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,12 @@ public enum PluginCategory
119119
/// </summary>
120120
Storage,
121121

122+
/// <summary>
123+
/// Plugins that handle compression, decompression,
124+
/// and archive management (ZIP, TAR, GZip, 7z, etc.).
125+
/// </summary>
126+
Compression,
127+
122128
/// <summary>
123129
/// Plugins that run or support automated and manual tests,
124130
/// including unit, integration, and end-to-end testing tools.
@@ -135,5 +141,16 @@ public enum PluginCategory
135141
/// Plugins that execute external processes, scripts, or commands and capture their output,
136142
/// enabling integration of external tasks within workflows.
137143
/// </summary>
138-
Execution
144+
Execution,
145+
146+
/// <summary>
147+
/// Plugins that interact with IoT devices, sensors, embedded hardware,
148+
/// or external peripherals.
149+
/// </summary>
150+
IoT,
151+
152+
/// <summary>
153+
/// Plugins for media processing, such as images, audio, or video manipulation.
154+
/// </summary>
155+
Media,
139156
}

tests/PluginCategoryTests.cs

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
namespace FlowSynx.PluginCore.UnitTests;
2+
3+
public class PluginCategoryTests
4+
{
5+
[Fact]
6+
public void PluginCategory_ShouldContainAllExpectedValues()
7+
{
8+
var expected = new[]
9+
{
10+
"AI", "Api", "Authentication", "BusinessIntelligence", "Blockchain", "Cloud",
11+
"Communication", "Data", "Database", "DevOps", "Finance", "ML", "Monitoring",
12+
"Logging", "Networking", "ProjectWorkflow", "ResourcePlanning", "Security",
13+
"Storage", "Compression", "Testing", "Web", "Execution", "IoT", "Media"
14+
};
15+
16+
var actual = Enum.GetNames(typeof(PluginCategory));
17+
Assert.Equal(expected.Length, actual.Length);
18+
foreach (var name in expected)
19+
{
20+
Assert.Contains(name, actual);
21+
}
22+
}
23+
24+
[Theory]
25+
[InlineData("AI", PluginCategory.AI)]
26+
[InlineData("Api", PluginCategory.Api)]
27+
[InlineData("Authentication", PluginCategory.Authentication)]
28+
[InlineData("BusinessIntelligence", PluginCategory.BusinessIntelligence)]
29+
[InlineData("Blockchain", PluginCategory.Blockchain)]
30+
[InlineData("Cloud", PluginCategory.Cloud)]
31+
[InlineData("Communication", PluginCategory.Communication)]
32+
[InlineData("Data", PluginCategory.Data)]
33+
[InlineData("Database", PluginCategory.Database)]
34+
[InlineData("DevOps", PluginCategory.DevOps)]
35+
[InlineData("Finance", PluginCategory.Finance)]
36+
[InlineData("ML", PluginCategory.ML)]
37+
[InlineData("Monitoring", PluginCategory.Monitoring)]
38+
[InlineData("Logging", PluginCategory.Logging)]
39+
[InlineData("Networking", PluginCategory.Networking)]
40+
[InlineData("ProjectWorkflow", PluginCategory.ProjectWorkflow)]
41+
[InlineData("ResourcePlanning", PluginCategory.ResourcePlanning)]
42+
[InlineData("Security", PluginCategory.Security)]
43+
[InlineData("Storage", PluginCategory.Storage)]
44+
[InlineData("Compression", PluginCategory.Compression)]
45+
[InlineData("Testing", PluginCategory.Testing)]
46+
[InlineData("Web", PluginCategory.Web)]
47+
[InlineData("Execution", PluginCategory.Execution)]
48+
[InlineData("IoT", PluginCategory.IoT)]
49+
[InlineData("Media", PluginCategory.Media)]
50+
public void PluginCategory_ShouldParseFromString(string name, PluginCategory expected)
51+
{
52+
var parsed = Enum.Parse<PluginCategory>(name);
53+
Assert.Equal(expected, parsed);
54+
}
55+
56+
[Fact]
57+
public void PluginCategory_InvalidValue_ShouldThrow()
58+
{
59+
Assert.Throws<ArgumentException>(() => Enum.Parse<PluginCategory>("NonExistentCategory"));
60+
}
61+
}

0 commit comments

Comments
 (0)