Skip to content
Merged
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
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
@startuml BaseState
state "BaseState" as Chickensoft_LogicBlocks_DiagramGenerator_Tests_TestCases_NestedStartLogic_BaseState {
state "Idle" as Chickensoft_LogicBlocks_DiagramGenerator_Tests_TestCases_NestedStartLogic_BaseState_Idle
state "Running" as Chickensoft_LogicBlocks_DiagramGenerator_Tests_TestCases_NestedStartLogic_BaseState_Running
}

Chickensoft_LogicBlocks_DiagramGenerator_Tests_TestCases_NestedStartLogic_BaseState_Idle --> Chickensoft_LogicBlocks_DiagramGenerator_Tests_TestCases_NestedStartLogic_BaseState_Running : Toggle
Chickensoft_LogicBlocks_DiagramGenerator_Tests_TestCases_NestedStartLogic_BaseState_Running --> Chickensoft_LogicBlocks_DiagramGenerator_Tests_TestCases_NestedStartLogic_BaseState_Idle : Toggle

Chickensoft_LogicBlocks_DiagramGenerator_Tests_TestCases_NestedStartLogic_BaseState_Running : OnEnter → Toggled
@enduml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
@startuml BaseState
state "BaseState" as Chickensoft_LogicBlocks_DiagramGenerator_Tests_TestCases_SharedBaseLogicBlock_BaseState {
state "Idle" as Chickensoft_LogicBlocks_DiagramGenerator_Tests_TestCases_SharedBaseLogicBlock_BaseState_Idle
state "Running" as Chickensoft_LogicBlocks_DiagramGenerator_Tests_TestCases_SharedBaseLogicBlock_BaseState_Running
}

Chickensoft_LogicBlocks_DiagramGenerator_Tests_TestCases_SharedBaseLogicBlock_BaseState_Idle --> Chickensoft_LogicBlocks_DiagramGenerator_Tests_TestCases_SharedBaseLogicBlock_BaseState_Running : Toggle
Chickensoft_LogicBlocks_DiagramGenerator_Tests_TestCases_SharedBaseLogicBlock_BaseState_Running --> Chickensoft_LogicBlocks_DiagramGenerator_Tests_TestCases_SharedBaseLogicBlock_BaseState_Idle : Toggle

Chickensoft_LogicBlocks_DiagramGenerator_Tests_TestCases_SharedBaseLogicBlock_BaseState_Running : OnEnter → Toggled
@enduml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
@startuml SharedBaseLogicBlock
state SharedBaseLogicBlock {
state Idle
}

[*] --> Idle
@enduml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
@startuml SharedBaseStateLogic
state SharedBaseStateLogic {
state Dark
}

[*] --> Dark
@enduml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
@startuml SharedState
state "SharedState" as Chickensoft_LogicBlocks_DiagramGenerator_Tests_TestCases_SharedBaseStateLogic_SharedState {
state "Dark" as Chickensoft_LogicBlocks_DiagramGenerator_Tests_TestCases_SharedBaseStateLogic_SharedState_Dark
state "Lit" as Chickensoft_LogicBlocks_DiagramGenerator_Tests_TestCases_SharedBaseStateLogic_SharedState_Lit
}

Chickensoft_LogicBlocks_DiagramGenerator_Tests_TestCases_SharedBaseStateLogic_SharedState_Dark --> Chickensoft_LogicBlocks_DiagramGenerator_Tests_TestCases_SharedBaseStateLogic_SharedState_Lit : Toggle
Chickensoft_LogicBlocks_DiagramGenerator_Tests_TestCases_SharedBaseStateLogic_SharedState_Lit --> Chickensoft_LogicBlocks_DiagramGenerator_Tests_TestCases_SharedBaseStateLogic_SharedState_Dark : Toggle

Chickensoft_LogicBlocks_DiagramGenerator_Tests_TestCases_SharedBaseStateLogic_SharedState_Lit : OnEnter → Toggled
@enduml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
@startuml BaseState
state "BaseState" as Chickensoft_LogicBlocks_DiagramGenerator_Tests_TestCases_MultiStartLogic_BaseState {
state "Idle" as Chickensoft_LogicBlocks_DiagramGenerator_Tests_TestCases_MultiStartLogic_BaseState_Idle
state "Running" as Chickensoft_LogicBlocks_DiagramGenerator_Tests_TestCases_MultiStartLogic_BaseState_Running
}

Chickensoft_LogicBlocks_DiagramGenerator_Tests_TestCases_MultiStartLogic_BaseState_Idle --> Chickensoft_LogicBlocks_DiagramGenerator_Tests_TestCases_MultiStartLogic_BaseState_Running : Toggle
Chickensoft_LogicBlocks_DiagramGenerator_Tests_TestCases_MultiStartLogic_BaseState_Running --> Chickensoft_LogicBlocks_DiagramGenerator_Tests_TestCases_MultiStartLogic_BaseState_Idle : Toggle

Chickensoft_LogicBlocks_DiagramGenerator_Tests_TestCases_MultiStartLogic_BaseState_Running : OnEnter → Toggled
@enduml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
@startuml MultiStartLogic
state MultiStartLogic {
state Idle
state Running
}

[*] --> Idle
[*] --> Running
@enduml
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,19 @@ await File.ReadAllTextAsync(filePath),
Assert.Fail("No generated files were found.");
}

var testDirName = Path.GetFileName(testFolderPath);
var expectedDiagrams = Directory
.GetFiles(CurrentDir("../snapshots"), $"{testDirName}_*.verified.puml")
.Select(path => Path.GetFileName(path).Replace(".verified.puml", ""));
var generatedDiagrams = generatedPumls
.Select(path => $"{testDirName}_{Path.GetFileName(path).Replace(".g.puml", "")}");
var missingDiagrams = expectedDiagrams.Except(generatedDiagrams).ToList();

if (missingDiagrams.Count != 0)
{
Assert.Fail($"Expected diagrams were not generated: {string.Join(", ", missingDiagrams)}");
}

foreach (var pumlPath in generatedPumls)
{
var testName = $"{Path.GetFileName(testFolderPath)}_{Path.GetFileName(pumlPath).Replace(".g.puml", "")}";
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
namespace Chickensoft.LogicBlocks.DiagramGenerator.Tests.TestCases;

public partial class NestedStartLogic
{
[StateDiagram]
public abstract partial record BaseState : LogicBlockState
{
public partial record Running : BaseState, IGet<Input.Toggle>
{
public Running()
{
this.OnEnter(() => Output(new Output.Toggled()));
}

public Type On(in Input.Toggle input) => To<Idle>();
}

public partial record Idle : BaseState, IGet<Input.Toggle>
{
public Type On(in Input.Toggle input) => To<Running>();
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
namespace Chickensoft.LogicBlocks.DiagramGenerator.Tests.TestCases;

public partial class NestedStartLogic
{
public class Helper
{
public void Start() { }

public void Run() => Start();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
namespace Chickensoft.LogicBlocks.DiagramGenerator.Tests.TestCases;

public partial class NestedStartLogic : LogicBlock
{
public NestedStartLogic()
{
Set(new BaseState.Running());
Set(new BaseState.Idle());
}

public static class Input
{
public readonly record struct Toggle;
}

public static class Output
{
public readonly record struct Toggled;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
namespace Chickensoft.LogicBlocks.DiagramGenerator.Tests.TestCases;

public partial class SharedBaseLogicBlock
{
[StateDiagram]
public abstract partial record BaseState : LogicBlockState
{
public partial record Running : BaseState, IGet<Input.Toggle>
{
public Running()
{
this.OnEnter(() => Output(new Output.Toggled()));
}

public Type On(in Input.Toggle input) => To<Idle>();
}

public partial record Idle : BaseState, IGet<Input.Toggle>
{
public Type On(in Input.Toggle input) => To<Running>();
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
namespace Chickensoft.LogicBlocks.DiagramGenerator.Tests.TestCases;

public abstract class SharedBaseLogic : LogicBlock;
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
namespace Chickensoft.LogicBlocks.DiagramGenerator.Tests.TestCases;

public partial class SharedBaseLogicBlock : SharedBaseLogic
{
public SharedBaseLogicBlock()
{
Set(new BaseState.Running());
Set(new BaseState.Idle());
}

public void StartLogicBlock() => Start<BaseState.Idle>();

public static class Input
{
public readonly record struct Toggle;
}

public static class Output
{
public readonly record struct Toggled;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
namespace Chickensoft.LogicBlocks.DiagramGenerator.Tests.TestCases;

public abstract record SharedBaseState : LogicBlockState;
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
namespace Chickensoft.LogicBlocks.DiagramGenerator.Tests.TestCases;

public partial class SharedBaseStateLogic
{
public partial record SharedState
{
public partial record Lit : SharedState, IGet<Input.Toggle>
{
public Lit()
{
this.OnEnter(() => Output(new Output.Toggled()));
}

public Type On(in Input.Toggle input) => To<Dark>();
}

public partial record Dark : SharedState, IGet<Input.Toggle>
{
public Type On(in Input.Toggle input) => To<Lit>();
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
namespace Chickensoft.LogicBlocks.DiagramGenerator.Tests.TestCases;

public partial class SharedBaseStateLogic : LogicBlock
{
public SharedBaseStateLogic()
{
Set(new SharedState.Lit());
Set(new SharedState.Dark());
}

public void StartLogicBlock() => Start<SharedState.Dark>();

public static class Input
{
public readonly record struct Toggle;
}

public static class Output
{
public readonly record struct Toggled;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
namespace Chickensoft.LogicBlocks.DiagramGenerator.Tests.TestCases;

public partial class SharedBaseStateLogic
{
[StateDiagram]
public abstract partial record SharedState : SharedBaseState;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
namespace Chickensoft.LogicBlocks.DiagramGenerator.Tests.TestCases;

public partial class MultiStartLogic
{
[StateDiagram]
public abstract partial record BaseState : LogicBlockState
{
public partial record Running : BaseState, IGet<Input.Toggle>
{
public Running()
{
this.OnEnter(() => Output(new Output.Toggled()));
}

public Type On(in Input.Toggle input) => To<Idle>();
}

public partial record Idle : BaseState, IGet<Input.Toggle>
{
public Type On(in Input.Toggle input) => To<Running>();
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
namespace Chickensoft.LogicBlocks.DiagramGenerator.Tests.TestCases;

public partial class MultiStartLogic
{
public void RestartLogicBlock() => Start<BaseState.Running>();
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
namespace Chickensoft.LogicBlocks.DiagramGenerator.Tests.TestCases;

public partial class MultiStartLogic : LogicBlock
{
public MultiStartLogic()
{
Set(new BaseState.Running());
Set(new BaseState.Idle());
}

public void StartLogicBlock() => Start<BaseState.Idle>();

public static class Input
{
public readonly record struct Toggle;
}

public static class Output
{
public readonly record struct Toggled;
}
}
Loading
Loading