Skip to content
This repository was archived by the owner on Jun 10, 2026. It is now read-only.
Closed
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
Binary file added .vs/ProjectEvaluation/st-4.metadata.v9.bin
Binary file not shown.
Binary file added .vs/ProjectEvaluation/st-4.projects.v9.bin
Binary file not shown.
Binary file added .vs/ProjectEvaluation/st-4.strings.v9.bin
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file added .vs/ST-4/v17/.futdcache.v2
Binary file not shown.
Binary file added .vs/ST-4/v17/.suo
Binary file not shown.
Binary file added .vs/ST-4/v17/.wsuo
Binary file not shown.
105 changes: 105 additions & 0 deletions .vs/ST-4/v17/DocumentLayout.backup.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
{
"Version": 1,
"WorkspaceRootPath": "C:\\Users\\Evgenii\\source\\repos\\ST-4\\",
"Documents": [
{
"AbsoluteMoniker": "D:0:0:{E1FC1FCC-081C-4444-BC16-32C5C737EAFF}|BugTest\\BugTest.csproj|c:\\users\\evgenii\\source\\repos\\st-4\\bugtest\\test1.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{E1FC1FCC-081C-4444-BC16-32C5C737EAFF}|BugTest\\BugTest.csproj|solutionrelative:bugtest\\test1.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{BCA8CA82-7665-45FD-9B83-358DCEFCE7E4}|BugPro\\BugPro.csproj|c:\\users\\evgenii\\source\\repos\\st-4\\bugpro\\bugpro.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}",
"RelativeMoniker": "D:0:0:{BCA8CA82-7665-45FD-9B83-358DCEFCE7E4}|BugPro\\BugPro.csproj|solutionrelative:bugpro\\bugpro.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}"
},
{
"AbsoluteMoniker": "D:0:0:{BCA8CA82-7665-45FD-9B83-358DCEFCE7E4}|BugPro\\BugPro.csproj|c:\\users\\evgenii\\source\\repos\\st-4\\bugpro\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{BCA8CA82-7665-45FD-9B83-358DCEFCE7E4}|BugPro\\BugPro.csproj|solutionrelative:bugpro\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|C:\\Users\\Evgenii\\source\\repos\\ST-4\\BugPro\\obj\\Debug\\net8.0\\BugPro.GlobalUsings.g.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:BugPro\\obj\\Debug\\net8.0\\BugPro.GlobalUsings.g.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{E1FC1FCC-081C-4444-BC16-32C5C737EAFF}|BugTest\\BugTest.csproj|c:\\users\\evgenii\\source\\repos\\st-4\\bugtest\\bugtest.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}",
"RelativeMoniker": "D:0:0:{E1FC1FCC-081C-4444-BC16-32C5C737EAFF}|BugTest\\BugTest.csproj|solutionrelative:bugtest\\bugtest.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}"
}
],
"DocumentGroupContainers": [
{
"Orientation": 0,
"VerticalTabListWidth": 256,
"DocumentGroups": [
{
"DockedWidth": 200,
"SelectedChildIndex": 1,
"Children": [
{
"$type": "Document",
"DocumentIndex": 4,
"Title": "BugTest",
"DocumentMoniker": "C:\\Users\\Evgenii\\source\\repos\\ST-4\\BugTest\\BugTest.csproj",
"RelativeDocumentMoniker": "BugTest\\BugTest.csproj",
"ToolTip": "C:\\Users\\Evgenii\\source\\repos\\ST-4\\BugTest\\BugTest.csproj",
"RelativeToolTip": "BugTest\\BugTest.csproj",
"ViewState": "AgIAAAAAAAAAAAAAAAAAABEAAAAMAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000758|",
"WhenOpened": "2026-06-09T15:55:52.138Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 0,
"Title": "Test1.cs",
"DocumentMoniker": "C:\\Users\\Evgenii\\source\\repos\\ST-4\\BugTest\\Test1.cs",
"RelativeDocumentMoniker": "BugTest\\Test1.cs",
"ToolTip": "C:\\Users\\Evgenii\\source\\repos\\ST-4\\BugTest\\Test1.cs",
"RelativeToolTip": "BugTest\\Test1.cs",
"ViewState": "AgIAAFoAAAAAAAAAAAAIwAUAAAASAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2026-06-09T15:55:42.81Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 1,
"Title": "BugPro",
"DocumentMoniker": "C:\\Users\\Evgenii\\source\\repos\\ST-4\\BugPro\\BugPro.csproj",
"RelativeDocumentMoniker": "BugPro\\BugPro.csproj",
"ToolTip": "C:\\Users\\Evgenii\\source\\repos\\ST-4\\BugPro\\BugPro.csproj",
"RelativeToolTip": "BugPro\\BugPro.csproj",
"ViewState": "AgIAAAAAAAAAAAAAAAAAAA0AAAAKAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000758|",
"WhenOpened": "2026-06-09T15:53:24.442Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 3,
"Title": "BugPro.GlobalUsings.g.cs",
"DocumentMoniker": "C:\\Users\\Evgenii\\source\\repos\\ST-4\\BugPro\\obj\\Debug\\net8.0\\BugPro.GlobalUsings.g.cs",
"RelativeDocumentMoniker": "BugPro\\obj\\Debug\\net8.0\\BugPro.GlobalUsings.g.cs",
"ToolTip": "C:\\Users\\Evgenii\\source\\repos\\ST-4\\BugPro\\obj\\Debug\\net8.0\\BugPro.GlobalUsings.g.cs",
"RelativeToolTip": "BugPro\\obj\\Debug\\net8.0\\BugPro.GlobalUsings.g.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2026-06-09T15:53:19.916Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 2,
"Title": "Program.cs",
"DocumentMoniker": "C:\\Users\\Evgenii\\source\\repos\\ST-4\\BugPro\\Program.cs",
"RelativeDocumentMoniker": "BugPro\\Program.cs",
"ToolTip": "C:\\Users\\Evgenii\\source\\repos\\ST-4\\BugPro\\Program.cs",
"RelativeToolTip": "BugPro\\Program.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAABAAAAAFAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2026-06-09T15:52:40.112Z",
"EditorCaption": ""
}
]
}
]
}
]
}
119 changes: 119 additions & 0 deletions .vs/ST-4/v17/DocumentLayout.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,119 @@
{
"Version": 1,
"WorkspaceRootPath": "C:\\Users\\Evgenii\\source\\repos\\ST-4\\",
"Documents": [
{
"AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|C:\\Program Files\\dotnet\\sdk\\8.0.408\\Sdks\\Microsoft.NET.Sdk\\targets\\Microsoft.NET.TargetFrameworkInference.targets||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|"
},
{
"AbsoluteMoniker": "D:0:0:{E1FC1FCC-081C-4444-BC16-32C5C737EAFF}|BugTest\\BugTest.csproj|c:\\users\\evgenii\\source\\repos\\st-4\\bugtest\\test1.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{E1FC1FCC-081C-4444-BC16-32C5C737EAFF}|BugTest\\BugTest.csproj|solutionrelative:bugtest\\test1.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{BCA8CA82-7665-45FD-9B83-358DCEFCE7E4}|BugPro\\BugPro.csproj|c:\\users\\evgenii\\source\\repos\\st-4\\bugpro\\bugpro.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}",
"RelativeMoniker": "D:0:0:{BCA8CA82-7665-45FD-9B83-358DCEFCE7E4}|BugPro\\BugPro.csproj|solutionrelative:bugpro\\bugpro.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}"
},
{
"AbsoluteMoniker": "D:0:0:{BCA8CA82-7665-45FD-9B83-358DCEFCE7E4}|BugPro\\BugPro.csproj|c:\\users\\evgenii\\source\\repos\\st-4\\bugpro\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{BCA8CA82-7665-45FD-9B83-358DCEFCE7E4}|BugPro\\BugPro.csproj|solutionrelative:bugpro\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|C:\\Users\\Evgenii\\source\\repos\\ST-4\\BugPro\\obj\\Debug\\net8.0\\BugPro.GlobalUsings.g.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:BugPro\\obj\\Debug\\net8.0\\BugPro.GlobalUsings.g.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{E1FC1FCC-081C-4444-BC16-32C5C737EAFF}|BugTest\\BugTest.csproj|c:\\users\\evgenii\\source\\repos\\st-4\\bugtest\\bugtest.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}",
"RelativeMoniker": "D:0:0:{E1FC1FCC-081C-4444-BC16-32C5C737EAFF}|BugTest\\BugTest.csproj|solutionrelative:bugtest\\bugtest.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}"
}
],
"DocumentGroupContainers": [
{
"Orientation": 0,
"VerticalTabListWidth": 256,
"DocumentGroups": [
{
"DockedWidth": 200,
"SelectedChildIndex": 0,
"Children": [
{
"$type": "Document",
"DocumentIndex": 0,
"Title": "Microsoft.NET.TargetFrameworkInference.targets",
"DocumentMoniker": "C:\\Program Files\\dotnet\\sdk\\8.0.408\\Sdks\\Microsoft.NET.Sdk\\targets\\Microsoft.NET.TargetFrameworkInference.targets",
"RelativeDocumentMoniker": "..\\..\\..\\..\\..\\Program Files\\dotnet\\sdk\\8.0.408\\Sdks\\Microsoft.NET.Sdk\\targets\\Microsoft.NET.TargetFrameworkInference.targets",
"ToolTip": "C:\\Program Files\\dotnet\\sdk\\8.0.408\\Sdks\\Microsoft.NET.Sdk\\targets\\Microsoft.NET.TargetFrameworkInference.targets",
"RelativeToolTip": "..\\..\\..\\..\\..\\Program Files\\dotnet\\sdk\\8.0.408\\Sdks\\Microsoft.NET.Sdk\\targets\\Microsoft.NET.TargetFrameworkInference.targets",
"ViewState": "AgIAAJoAAAAAAAAAAAAnwKoAAAAEAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003801|",
"WhenOpened": "2026-06-09T16:05:29.589Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 5,
"Title": "BugTest.csproj",
"DocumentMoniker": "C:\\Users\\Evgenii\\source\\repos\\ST-4\\BugTest\\BugTest.csproj",
"RelativeDocumentMoniker": "BugTest\\BugTest.csproj",
"ToolTip": "C:\\Users\\Evgenii\\source\\repos\\ST-4\\BugTest\\BugTest.csproj",
"RelativeToolTip": "BugTest\\BugTest.csproj",
"ViewState": "AgIAAAAAAAAAAAAAAAAAABEAAAAMAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000758|",
"WhenOpened": "2026-06-09T15:55:52.138Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 1,
"Title": "Test1.cs",
"DocumentMoniker": "C:\\Users\\Evgenii\\source\\repos\\ST-4\\BugTest\\Test1.cs",
"RelativeDocumentMoniker": "BugTest\\Test1.cs",
"ToolTip": "C:\\Users\\Evgenii\\source\\repos\\ST-4\\BugTest\\Test1.cs",
"RelativeToolTip": "BugTest\\Test1.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAAA0AAAAbAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2026-06-09T15:55:42.81Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 2,
"Title": "BugPro.csproj",
"DocumentMoniker": "C:\\Users\\Evgenii\\source\\repos\\ST-4\\BugPro\\BugPro.csproj",
"RelativeDocumentMoniker": "BugPro\\BugPro.csproj",
"ToolTip": "C:\\Users\\Evgenii\\source\\repos\\ST-4\\BugPro\\BugPro.csproj",
"RelativeToolTip": "BugPro\\BugPro.csproj",
"ViewState": "AgIAAAAAAAAAAAAAAAAAAA0AAAAKAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000758|",
"WhenOpened": "2026-06-09T15:53:24.442Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 4,
"Title": "BugPro.GlobalUsings.g.cs",
"DocumentMoniker": "C:\\Users\\Evgenii\\source\\repos\\ST-4\\BugPro\\obj\\Debug\\net8.0\\BugPro.GlobalUsings.g.cs",
"RelativeDocumentMoniker": "BugPro\\obj\\Debug\\net8.0\\BugPro.GlobalUsings.g.cs",
"ToolTip": "C:\\Users\\Evgenii\\source\\repos\\ST-4\\BugPro\\obj\\Debug\\net8.0\\BugPro.GlobalUsings.g.cs",
"RelativeToolTip": "BugPro\\obj\\Debug\\net8.0\\BugPro.GlobalUsings.g.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2026-06-09T15:53:19.916Z"
},
{
"$type": "Document",
"DocumentIndex": 3,
"Title": "Program.cs",
"DocumentMoniker": "C:\\Users\\Evgenii\\source\\repos\\ST-4\\BugPro\\Program.cs",
"RelativeDocumentMoniker": "BugPro\\Program.cs",
"ToolTip": "C:\\Users\\Evgenii\\source\\repos\\ST-4\\BugPro\\Program.cs",
"RelativeToolTip": "BugPro\\Program.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAABAAAAAFAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2026-06-09T15:52:40.112Z"
}
]
}
]
}
]
}
7 changes: 7 additions & 0 deletions .vs/VSWorkspaceState.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"ExpandedNodes": [
""
],
"SelectedNode": "\\ST-4.sln",
"PreviewInSolutionExplorer": false
}
14 changes: 14 additions & 0 deletions BugPro/BugPro.csproj
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net9.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Stateless" Version="5.13.0" />
</ItemGroup>

</Project>
87 changes: 87 additions & 0 deletions BugPro/Program.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
using System;
using Stateless;

namespace BugPro
{
public enum BugState
{
NewDefect, Triage, Fixing, Testing, Closed, Reopened, Deferred,
Duplicate, NotABug, CannotReproduce, Returned
}

public enum BugTrigger
{
Assign, StartFix, MarkDuplicate, MarkNotBug, MarkWontFix,
MarkCannotReproduce, CR_OK, CR_Fail, NoTime, NeedInfo,
FixDone, TestPass, TestFail, Reopen, ReturnTriage, Defer,
NeedSolution, OtherProduct
}

public class Bug
{
private readonly StateMachine<BugState, BugTrigger> _stateMachine;
public string Title { get; }
public string Description { get; }
public BugState CurrentState => _stateMachine.State;

public Bug(string title, string description = "")
{
Title = title;
Description = description;
_stateMachine = new StateMachine<BugState, BugTrigger>(BugState.NewDefect);

_stateMachine.Configure(BugState.NewDefect)
.Permit(BugTrigger.Assign, BugState.Triage);

_stateMachine.Configure(BugState.Triage)
.Permit(BugTrigger.StartFix, BugState.Fixing)
.Permit(BugTrigger.MarkDuplicate, BugState.Closed)
.Permit(BugTrigger.MarkNotBug, BugState.Closed)
.Permit(BugTrigger.MarkWontFix, BugState.Closed)
.Permit(BugTrigger.MarkCannotReproduce, BugState.CannotReproduce)
.Permit(BugTrigger.Defer, BugState.Deferred);

_stateMachine.Configure(BugState.Fixing)
.Permit(BugTrigger.FixDone, BugState.Testing)
.Permit(BugTrigger.NoTime, BugState.Deferred)
.Permit(BugTrigger.NeedInfo, BugState.Triage)
.Permit(BugTrigger.NeedSolution, BugState.Triage)
.Permit(BugTrigger.OtherProduct, BugState.Triage);

_stateMachine.Configure(BugState.Testing)
.Permit(BugTrigger.TestPass, BugState.Closed)
.Permit(BugTrigger.TestFail, BugState.Fixing);

_stateMachine.Configure(BugState.CannotReproduce)
.Permit(BugTrigger.CR_OK, BugState.Closed)
.Permit(BugTrigger.CR_Fail, BugState.Returned);

_stateMachine.Configure(BugState.Closed)
.Permit(BugTrigger.Reopen, BugState.Reopened);

_stateMachine.Configure(BugState.Reopened)
.Permit(BugTrigger.Assign, BugState.Triage)
.Permit(BugTrigger.ReturnTriage, BugState.Triage);

_stateMachine.Configure(BugState.Deferred)
.Permit(BugTrigger.Assign, BugState.Triage);

_stateMachine.Configure(BugState.Returned)
.Permit(BugTrigger.Assign, BugState.Triage);
}

public void Fire(BugTrigger trigger) => _stateMachine.Fire(trigger);
public bool CanFire(BugTrigger trigger) => _stateMachine.CanFire(trigger);
}

class Program
{
static void Main()
{
var item = new Bug("Sample", "Desc");
Console.WriteLine($"Init: {item.CurrentState}");
item.Fire(BugTrigger.Assign);
Console.WriteLine($"Next: {item.CurrentState}");
}
}
}
41 changes: 41 additions & 0 deletions BugPro/bin/Debug/net9.0/BugPro.deps.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
{
"runtimeTarget": {
"name": ".NETCoreApp,Version=v9.0",
"signature": ""
},
"compilationOptions": {},
"targets": {
".NETCoreApp,Version=v9.0": {
"BugPro/1.0.0": {
"dependencies": {
"Stateless": "5.13.0"
},
"runtime": {
"BugPro.dll": {}
}
},
"Stateless/5.13.0": {
"runtime": {
"lib/net6.0/Stateless.dll": {
"assemblyVersion": "4.0.0.0",
"fileVersion": "5.13.0.0"
}
}
}
}
},
"libraries": {
"BugPro/1.0.0": {
"type": "project",
"serviceable": false,
"sha512": ""
},
"Stateless/5.13.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-M4Rb4b31TUEfhCd4en0WlRfuFgQ2rwva9e1CuXnto5vNGvRsNVimHENnvjegf6nKG9ZH+51McAZ/huqRtTziYg==",
"path": "stateless/5.13.0",
"hashPath": "stateless.5.13.0.nupkg.sha512"
}
}
}
Binary file added BugPro/bin/Debug/net9.0/BugPro.dll
Binary file not shown.
Binary file added BugPro/bin/Debug/net9.0/BugPro.exe
Binary file not shown.
Binary file added BugPro/bin/Debug/net9.0/BugPro.pdb
Binary file not shown.
12 changes: 12 additions & 0 deletions BugPro/bin/Debug/net9.0/BugPro.runtimeconfig.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
{
"runtimeOptions": {
"tfm": "net9.0",
"framework": {
"name": "Microsoft.NETCore.App",
"version": "9.0.0"
},
"configProperties": {
"System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false
}
}
}
Binary file added BugPro/bin/Debug/net9.0/Stateless.dll
Binary file not shown.
Loading
Loading