diff --git a/src/FluentMermaid.Tests/ClassDiagramTests.cs b/src/FluentMermaid.Tests/ClassDiagramTests.cs new file mode 100644 index 0000000..ba183a8 --- /dev/null +++ b/src/FluentMermaid.Tests/ClassDiagramTests.cs @@ -0,0 +1,25 @@ +using System; +using FluentMermaid.ClassDiagram; +using FluentMermaid.ClassDiagram.Nodes; +using FluentMermaid.Enums; +using Xunit; + +namespace FluentMermaid.Tests; + +public class ClassDiagramTests +{ + [Fact] + public void Render_ShouldReturnExpectedDiagram() + { + var diagram = ClassDiagram.Create(Orientation.LeftToRight); + diagram.AddClass(new TypeName("Person", null), null, null); + + var newline = Environment.NewLine; + var expected = + "classDiagram" + newline + + "direction LR" + newline + + "class Person" + newline; + + Assert.Equal(expected, diagram.Render()); + } +} diff --git a/src/FluentMermaid.Tests/FlowChartTests.cs b/src/FluentMermaid.Tests/FlowChartTests.cs new file mode 100644 index 0000000..7d284d4 --- /dev/null +++ b/src/FluentMermaid.Tests/FlowChartTests.cs @@ -0,0 +1,28 @@ +using System; +using FluentMermaid.Enums; +using FluentMermaid.Flowchart; +using FluentMermaid.Flowchart.Enum; +using Xunit; + +namespace FluentMermaid.Tests; + +public class FlowChartTests +{ + [Fact] + public void Render_ShouldReturnExpectedDiagram() + { + var chart = FlowChart.Create(Orientation.LeftToRight); + var a = chart.TextNode("A", Shape.Circle); + var b = chart.TextNode("B", Shape.Circle); + chart.Link(a, b, Link.Arrow, "hello"); + + var newline = Environment.NewLine; + var expected = + "flowchart LR" + newline + + "id0((\"A\"))" + newline + + "id1((\"B\"))" + newline + + "id0 --> |\"hello\"| id1" + newline; + + Assert.Equal(expected, chart.Render()); + } +} diff --git a/src/FluentMermaid.Tests/FluentMermaid.Tests.csproj b/src/FluentMermaid.Tests/FluentMermaid.Tests.csproj new file mode 100644 index 0000000..11f4bde --- /dev/null +++ b/src/FluentMermaid.Tests/FluentMermaid.Tests.csproj @@ -0,0 +1,18 @@ + + + net6.0 + false + enable + enable + + + + + all + + + + + + + diff --git a/src/FluentMermaid.Tests/PieChartTests.cs b/src/FluentMermaid.Tests/PieChartTests.cs new file mode 100644 index 0000000..363f288 --- /dev/null +++ b/src/FluentMermaid.Tests/PieChartTests.cs @@ -0,0 +1,23 @@ +using System; +using FluentMermaid.PieChart; +using Xunit; + +namespace FluentMermaid.Tests; + +public class PieChartTests +{ + [Fact] + public void Render_ShouldReturnExpectedDiagram() + { + var chart = PieChart.Create("Sales", true); + chart.Add("A", 1); + + var newline = Environment.NewLine; + var expected = + "pie showData" + newline + + "title Sales" + newline + + "\"A\" : 1" + newline; + + Assert.Equal(expected, chart.Render()); + } +} diff --git a/src/FluentMermaid.Tests/SequenceDiagramBuilderTests.cs b/src/FluentMermaid.Tests/SequenceDiagramBuilderTests.cs new file mode 100644 index 0000000..5ff7899 --- /dev/null +++ b/src/FluentMermaid.Tests/SequenceDiagramBuilderTests.cs @@ -0,0 +1,39 @@ +using System; +using FluentMermaid.SequenceDiagram; +using FluentMermaid.SequenceDiagram.Enum; +using Xunit; + +namespace FluentMermaid.Tests; + +public class SequenceDiagramBuilderTests +{ + [Fact] + public void AddMember_ShouldThrow_WhenNameIsNullOrWhitespace() + { + var builder = new SequenceDiagramBuilder(); + + Assert.Throws(() => builder.AddMember(null!, MemberType.Participant)); + Assert.Throws(() => builder.AddMember(string.Empty, MemberType.Participant)); + Assert.Throws(() => builder.AddMember(" ", MemberType.Participant)); + } + + [Fact] + public void Build_ShouldReturnExpectedDiagram() + { + var builder = new SequenceDiagramBuilder(autoNumber: true); + var alice = builder.AddMember("Alice", MemberType.Participant); + var bob = builder.AddMember("Bob", MemberType.Actor); + + builder.Message(alice, bob, "Hi", MessageType.SolidArrow); + + var newline = Environment.NewLine; + var expected = + "sequenceDiagram" + newline + + "autonumber" + newline + + "participant member0 as Alice" + newline + + "actor member1 as Bob" + newline + + "member0->>member1: Hi" + newline; + + Assert.Equal(expected, builder.Build()); + } +} diff --git a/src/FluentMermaid.Tests/StateDiagramTests.cs b/src/FluentMermaid.Tests/StateDiagramTests.cs new file mode 100644 index 0000000..1523401 --- /dev/null +++ b/src/FluentMermaid.Tests/StateDiagramTests.cs @@ -0,0 +1,26 @@ +using System; +using FluentMermaid.Enums; +using FluentMermaid.StateDiagram; +using Xunit; + +namespace FluentMermaid.Tests; + +public class StateDiagramTests +{ + [Fact] + public void Render_ShouldReturnExpectedDiagram() + { + var diagram = StateDiagramBuilder.Create(Orientation.LeftToRight); + var idle = diagram.AddState("Idle"); + diagram.StartTo(idle); + + var newline = Environment.NewLine; + var expected = + "stateDiagram-v2" + newline + + "direction LR" + newline + + "s0 : Idle" + newline + + "[*] --> s0" + newline; + + Assert.Equal(expected, diagram.Render()); + } +} diff --git a/src/FluentMermaidLibrary.sln b/src/FluentMermaidLibrary.sln index 6be5685..ef972d4 100644 --- a/src/FluentMermaidLibrary.sln +++ b/src/FluentMermaidLibrary.sln @@ -2,6 +2,8 @@ Microsoft Visual Studio Solution File, Format Version 12.00 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FluentMermaid", "FluentMermaid\FluentMermaid.csproj", "{557AD2F1-1C76-46F2-919E-D8AB7D599099}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FluentMermaid.Tests", "FluentMermaid.Tests\FluentMermaid.Tests.csproj", "{F86AD713-CFBF-4900-A63B-6ED422B20ABD}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -11,6 +13,10 @@ Global {557AD2F1-1C76-46F2-919E-D8AB7D599099}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {557AD2F1-1C76-46F2-919E-D8AB7D599099}.Debug|Any CPU.Build.0 = Debug|Any CPU {557AD2F1-1C76-46F2-919E-D8AB7D599099}.Release|Any CPU.ActiveCfg = Release|Any CPU - {557AD2F1-1C76-46F2-919E-D8AB7D599099}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection + {557AD2F1-1C76-46F2-919E-D8AB7D599099}.Release|Any CPU.Build.0 = Release|Any CPU + {F86AD713-CFBF-4900-A63B-6ED422B20ABD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F86AD713-CFBF-4900-A63B-6ED422B20ABD}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F86AD713-CFBF-4900-A63B-6ED422B20ABD}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F86AD713-CFBF-4900-A63B-6ED422B20ABD}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection EndGlobal