From 5c866dd9453f5dc5a39a3f0c27f62c314ffa7109 Mon Sep 17 00:00:00 2001 From: Yevheniy Tymchishin Date: Fri, 5 Jan 2024 23:50:25 +0200 Subject: [PATCH 1/9] events tests --- .../Extensions/ScenarioContextExtensions.cs | 86 +-- .../Features/Event/Event.feature | 206 +++---- .../Features/Event/Event.feature.cs | 275 +++++----- .../Features/Event/StaticEvent.feature | 257 --------- .../Features/Event/StaticEvent.feature.cs | 510 ------------------ .../Features/Field/Field.feature | 56 +- .../Features/Field/Field.feature.cs | 118 ++-- .../Features/Field/ReadonlyField.feature | 56 +- .../Features/Field/ReadonlyField.feature.cs | 114 ++-- .../Features/Field/StaticField.feature | 121 ----- .../Features/Field/StaticField.feature.cs | 295 ---------- .../Field/StaticReadonlyField.feature | 121 ----- .../Field/StaticReadonlyField.feature.cs | 295 ---------- ...taticProperty.feature => Property.feature} | 2 +- ...roperty.feature.cs => Property.feature.cs} | 24 +- .../StepDefinitions/CommonStepDefinitions.cs | 218 ++------ .../StepDefinitions/EventStepDefinitions.cs | 23 - .../StepDefinitions/FieldStepDefinitions.cs | 23 - .../PropertyStepDefinitions.cs | 23 - Tum4ik.StinimGen.Sandbox/Types/SealedClass.cs | 20 - Tum4ik.StinimGen.Sandbox/Types/Struct.cs | 20 - .../UnsealedClassWithOnlyStaticFields.cs | 2 - Tum4ik.StinimGen/IIGenerator.Execute.cs | 28 +- Tum4ik.StinimGen/IIGenerator.cs | 5 +- 24 files changed, 517 insertions(+), 2381 deletions(-) delete mode 100644 Tests/Tum4ik.StinimGen.Specs/Features/Event/StaticEvent.feature delete mode 100644 Tests/Tum4ik.StinimGen.Specs/Features/Event/StaticEvent.feature.cs delete mode 100644 Tests/Tum4ik.StinimGen.Specs/Features/Field/StaticField.feature delete mode 100644 Tests/Tum4ik.StinimGen.Specs/Features/Field/StaticField.feature.cs delete mode 100644 Tests/Tum4ik.StinimGen.Specs/Features/Field/StaticReadonlyField.feature delete mode 100644 Tests/Tum4ik.StinimGen.Specs/Features/Field/StaticReadonlyField.feature.cs rename Tests/Tum4ik.StinimGen.Specs/Features/Property/{StaticProperty.feature => Property.feature} (99%) rename Tests/Tum4ik.StinimGen.Specs/Features/Property/{StaticProperty.feature.cs => Property.feature.cs} (92%) delete mode 100644 Tests/Tum4ik.StinimGen.Specs/StepDefinitions/EventStepDefinitions.cs delete mode 100644 Tests/Tum4ik.StinimGen.Specs/StepDefinitions/FieldStepDefinitions.cs delete mode 100644 Tests/Tum4ik.StinimGen.Specs/StepDefinitions/PropertyStepDefinitions.cs diff --git a/Tests/Tum4ik.StinimGen.Specs/Extensions/ScenarioContextExtensions.cs b/Tests/Tum4ik.StinimGen.Specs/Extensions/ScenarioContextExtensions.cs index 4c146ca..e061d44 100644 --- a/Tests/Tum4ik.StinimGen.Specs/Extensions/ScenarioContextExtensions.cs +++ b/Tests/Tum4ik.StinimGen.Specs/Extensions/ScenarioContextExtensions.cs @@ -1,92 +1,48 @@ -using Microsoft.CodeAnalysis.CSharp; +using Microsoft.CodeAnalysis; namespace Tum4ik.StinimGen.Specs.Extensions; internal static class ScenarioContextExtensions { - private const string UsingsKey = nameof(UsingsKey); - - public static void AddUsings(this ScenarioContext context, string usings) + private const string DeclarationKey = nameof(DeclarationKey); + public static void AddDeclaration(this ScenarioContext context, string declaration) { - context[UsingsKey] = usings; + context[DeclarationKey] = declaration; } - - public static string GetUsings(this ScenarioContext context) + public static string GetDeclaration(this ScenarioContext context) { - if (context.TryGetValue(UsingsKey, out string usings)) - { - return usings; - } - - return string.Empty; + return (string) context[DeclarationKey]; } - private const string SourceMemberDeclarationKey = nameof(SourceMemberDeclarationKey); - - public static void AddSourceMemberDeclaration(this ScenarioContext context, string sourceMemberDeclaration) + private const string AttributeUsageKey = nameof(AttributeUsageKey); + public static void AddAttributeUsage(this ScenarioContext context, string attributeUsage) { - context[SourceMemberDeclarationKey] = sourceMemberDeclaration; + context[AttributeUsageKey] = attributeUsage; } - - public static string GetSourceMemberDeclaration(this ScenarioContext context) + public static string GetAttributeUsage(this ScenarioContext context) { - return (string) context[SourceMemberDeclarationKey]; + return (string) context[AttributeUsageKey]; } - private const string ExpectedGeneratedMemberForInterfaceKey = nameof(ExpectedGeneratedMemberForInterfaceKey); - - public static void AddExpectedGeneratedMemberForInterface(this ScenarioContext context, - string expectedGeneratedMemberForInterface) + private const string MemberDeclarationKey = nameof(MemberDeclarationKey); + public static void AddMemberDeclaration(this ScenarioContext context, string memberDeclaration) { - context[ExpectedGeneratedMemberForInterfaceKey] = expectedGeneratedMemberForInterface; + context[MemberDeclarationKey] = memberDeclaration; } - - public static string GetExpectedGeneratedMemberForInterface(this ScenarioContext context) + public static string GetMemberDeclaration(this ScenarioContext context) { - return (string) context[ExpectedGeneratedMemberForInterfaceKey]; + return (string) context[MemberDeclarationKey]; } - private const string InterfaceGeneratedMemberDeclarationKindKey = nameof(InterfaceGeneratedMemberDeclarationKindKey); - - public static void AddInterfaceGeneratedMemberDeclarationKind(this ScenarioContext context, SyntaxKind kind) - { - context[InterfaceGeneratedMemberDeclarationKindKey] = kind; - } - - public static SyntaxKind GetInterfaceGeneratedMemberDeclarationKind(this ScenarioContext context) + private const string GeneratorRunResultKey = nameof(GeneratorRunResultKey); + public static void AddGeneratorRunResult(this ScenarioContext context, GeneratorRunResult generatorRunResult) { - return (SyntaxKind) context[InterfaceGeneratedMemberDeclarationKindKey]; + context[GeneratorRunResultKey] = generatorRunResult; } - - - private const string ImplementationGeneratedMemberDeclarationKindKey = nameof(ImplementationGeneratedMemberDeclarationKindKey); - - public static void AddImplementationGeneratedMemberDeclarationKind(this ScenarioContext context, SyntaxKind kind) - { - context[ImplementationGeneratedMemberDeclarationKindKey] = kind; - } - - public static SyntaxKind GetImplementationGeneratedMemberDeclarationKind(this ScenarioContext context) - { - return (SyntaxKind) context[ImplementationGeneratedMemberDeclarationKindKey]; - } - - - private const string AdditionalNamespaceDeclarationsKey = nameof(AdditionalNamespaceDeclarationsKey); - - public static void AddAdditionalNamespaceDeclarations(this ScenarioContext context, string declarations) - { - context[AdditionalNamespaceDeclarationsKey] = declarations; - } - - public static string GetAdditionalNamespaceDeclarations(this ScenarioContext context) + public static GeneratorRunResult GetGeneratorRunResult(this ScenarioContext context) { - if (context.TryGetValue(AdditionalNamespaceDeclarationsKey, out string declarations)) - { - return declarations; - } - return string.Empty; + return (GeneratorRunResult) context[GeneratorRunResultKey]; } } diff --git a/Tests/Tum4ik.StinimGen.Specs/Features/Event/Event.feature b/Tests/Tum4ik.StinimGen.Specs/Features/Event/Event.feature index e3d2735..f771943 100644 --- a/Tests/Tum4ik.StinimGen.Specs/Features/Event/Event.feature +++ b/Tests/Tum4ik.StinimGen.Specs/Features/Event/Event.feature @@ -1,201 +1,159 @@ Feature: Event -Scenario: Event with EventHandler type - Given usings +Background: + Given declaration """ using System; + namespace Events; + public class EventHolder + { + + } + + public delegate void CustomEventHandler(int count, string search); """ - And source member declaration + And attribute usage """ - public event EventHandler Event; + using Tum4ik.StinimGen.Attributes; + using Events; + namespace Attribute.Usage; + [IIFor(typeof(EventHolder), "EventHolderWrapper")] + internal partial interface IEventHolder { } """ - When run generator for event - Then generated for interface + + +Scenario: Event with EventHandler type + Given member declaration """ - event global::System.EventHandler Event; + public static event EventHandler EventMember; """ - And generated for struct implementation + When run generator + Then there must not be generation exception + Then generated interface member must be """ - public event global::System.EventHandler Event { add => _instance.Event += value; remove => _instance.Event -= value; } + event global::System.EventHandler EventMember; """ - And inherited for class implementation - And generated for sealed class implementation + And generated implementation member must be """ - public event global::System.EventHandler Event { add => _instance.Event += value; remove => _instance.Event -= value; } + public event global::System.EventHandler EventMember { add => Events.EventHolder.EventMember += value; remove => Events.EventHolder.EventMember -= value; } """ Scenario: Event with custom type - Given source member declaration - """ - public event CustomEventHandler Event; - """ - And additional namespace declarations - """ - public delegate void CustomEventHandler(int count, string search); - """ - When run generator for event - Then generated for interface + Given member declaration """ - event global::@Namespace.CustomEventHandler Event; + public static event CustomEventHandler EventMember; """ - And generated for struct implementation + When run generator + Then there must not be generation exception + Then generated interface member must be """ - public event global::@Namespace.CustomEventHandler Event { add => _instance.Event += value; remove => _instance.Event -= value; } + event global::Events.CustomEventHandler EventMember; """ - And inherited for class implementation - And generated for sealed class implementation + And generated implementation member must be """ - public event global::@Namespace.CustomEventHandler Event { add => _instance.Event += value; remove => _instance.Event -= value; } + public event global::Events.CustomEventHandler EventMember { add => Events.EventHolder.EventMember += value; remove => Events.EventHolder.EventMember -= value; } """ Scenario: Event with Action type - Given usings + Given member declaration """ - using System; - """ - And source member declaration - """ - public event Action Event; - """ - When run generator for event - Then generated for interface - """ - event global::System.Action Event; + public static event Action EventMember; """ - And generated for struct implementation + When run generator + Then there must not be generation exception + Then generated interface member must be """ - public event global::System.Action Event { add => _instance.Event += value; remove => _instance.Event -= value; } + event global::System.Action EventMember; """ - And inherited for class implementation - And generated for sealed class implementation + And generated implementation member must be """ - public event global::System.Action Event { add => _instance.Event += value; remove => _instance.Event -= value; } + public event global::System.Action EventMember { add => Events.EventHolder.EventMember += value; remove => Events.EventHolder.EventMember -= value; } """ Scenario: Event with Action type with keyworded generic parameter - Given usings - """ - using System; - """ - And source member declaration - """ - public event Action Event; - """ - When run generator for event - Then generated for interface + Given member declaration """ - event global::System.Action Event; + public static event Action EventMember; """ - And generated for struct implementation + When run generator + Then there must not be generation exception + Then generated interface member must be """ - public event global::System.Action Event { add => _instance.Event += value; remove => _instance.Event -= value; } + event global::System.Action EventMember; """ - And inherited for class implementation - And generated for sealed class implementation + And generated implementation member must be """ - public event global::System.Action Event { add => _instance.Event += value; remove => _instance.Event -= value; } + public event global::System.Action EventMember { add => Events.EventHolder.EventMember += value; remove => Events.EventHolder.EventMember -= value; } """ Scenario: Event with Action type with keyworded nullable generic parameter - Given usings + Given member declaration """ - using System; - """ - And source member declaration - """ - public event Action Event; - """ - When run generator for event - Then generated for interface - """ - event global::System.Action Event; + public static event Action EventMember; """ - And generated for struct implementation + When run generator + Then there must not be generation exception + Then generated interface member must be """ - public event global::System.Action Event { add => _instance.Event += value; remove => _instance.Event -= value; } + event global::System.Action EventMember; """ - And inherited for class implementation - And generated for sealed class implementation + And generated implementation member must be """ - public event global::System.Action Event { add => _instance.Event += value; remove => _instance.Event -= value; } + public event global::System.Action EventMember { add => Events.EventHolder.EventMember += value; remove => Events.EventHolder.EventMember -= value; } """ Scenario: Event with Action type with non-keyworded generic parameter - Given usings - """ - using System; - """ - And source member declaration - """ - public event Action Event; - """ - When run generator for event - Then generated for interface + Given member declaration """ - event global::System.Action Event; + public static event Action EventMember; """ - And generated for struct implementation + When run generator + Then there must not be generation exception + Then generated interface member must be """ - public event global::System.Action Event { add => _instance.Event += value; remove => _instance.Event -= value; } + event global::System.Action EventMember; """ - And inherited for class implementation - And generated for sealed class implementation + And generated implementation member must be """ - public event global::System.Action Event { add => _instance.Event += value; remove => _instance.Event -= value; } + public event global::System.Action EventMember { add => Events.EventHolder.EventMember += value; remove => Events.EventHolder.EventMember -= value; } """ Scenario: Event with Action type with non-keyworded nullable generic parameter - Given usings + Given member declaration """ - using System; - """ - And source member declaration - """ - public event Action Event; - """ - When run generator for event - Then generated for interface - """ - event global::System.Action Event; + public static event Action EventMember; """ - And generated for struct implementation + When run generator + Then there must not be generation exception + Then generated interface member must be """ - public event global::System.Action Event { add => _instance.Event += value; remove => _instance.Event -= value; } + event global::System.Action EventMember; """ - And inherited for class implementation - And generated for sealed class implementation + And generated implementation member must be """ - public event global::System.Action Event { add => _instance.Event += value; remove => _instance.Event -= value; } + public event global::System.Action EventMember { add => Events.EventHolder.EventMember += value; remove => Events.EventHolder.EventMember -= value; } """ Scenario: Event with Func - Given usings - """ - using System; - """ - And source member declaration - """ - public event Func Event; - """ - When run generator for event - Then generated for interface + Given member declaration """ - event global::System.Func Event; + public static event Func EventMember; """ - And generated for struct implementation + When run generator + Then there must not be generation exception + Then generated interface member must be """ - public event global::System.Func Event { add => _instance.Event += value; remove => _instance.Event -= value; } + event global::System.Func EventMember; """ - And inherited for class implementation - And generated for sealed class implementation + And generated implementation member must be """ - public event global::System.Func Event { add => _instance.Event += value; remove => _instance.Event -= value; } + public event global::System.Func EventMember { add => Events.EventHolder.EventMember += value; remove => Events.EventHolder.EventMember -= value; } """ diff --git a/Tests/Tum4ik.StinimGen.Specs/Features/Event/Event.feature.cs b/Tests/Tum4ik.StinimGen.Specs/Features/Event/Event.feature.cs index 8cef257..f19b05c 100644 --- a/Tests/Tum4ik.StinimGen.Specs/Features/Event/Event.feature.cs +++ b/Tests/Tum4ik.StinimGen.Specs/Features/Event/Event.feature.cs @@ -75,6 +75,21 @@ public void ScenarioCleanup() testRunner.CollectScenarioErrors(); } + public virtual void FeatureBackground() + { +#line 4 +#line hidden +#line 5 + testRunner.Given("declaration", "using System;\r\nnamespace Events;\r\npublic class EventHolder\r\n{\r\n \r\n}\r\n\r\np" + + "ublic delegate void CustomEventHandler(int count, string search);", ((TechTalk.SpecFlow.Table)(null)), "Given "); +#line hidden +#line 16 + testRunner.And("attribute usage", "using Tum4ik.StinimGen.Attributes;\r\nusing Events;\r\nnamespace Attribute.Usage;\r\n[I" + + "IFor(typeof(EventHolder), \"EventHolderWrapper\")]\r\ninternal partial interface IEv" + + "entHolder { }", ((TechTalk.SpecFlow.Table)(null)), "And "); +#line hidden + } + void System.IDisposable.Dispose() { this.TestTearDown(); @@ -88,7 +103,7 @@ public void EventWithEventHandlerType() string[] tagsOfScenario = ((string[])(null)); System.Collections.Specialized.OrderedDictionary argumentsOfScenario = new System.Collections.Specialized.OrderedDictionary(); TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("Event with EventHandler type", null, tagsOfScenario, argumentsOfScenario, featureTags); -#line 4 +#line 26 this.ScenarioInitialize(scenarioInfo); #line hidden if ((TagHelper.ContainsIgnoreTag(tagsOfScenario) || TagHelper.ContainsIgnoreTag(featureTags))) @@ -98,28 +113,24 @@ public void EventWithEventHandlerType() else { this.ScenarioStart(); -#line 5 - testRunner.Given("usings", "using System;", ((TechTalk.SpecFlow.Table)(null)), "Given "); -#line hidden -#line 9 - testRunner.And("source member declaration", "public event EventHandler Event;", ((TechTalk.SpecFlow.Table)(null)), "And "); +#line 4 +this.FeatureBackground(); #line hidden -#line 13 - testRunner.When("run generator for event", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); +#line 27 + testRunner.Given("member declaration", "public static event EventHandler EventMember;", ((TechTalk.SpecFlow.Table)(null)), "Given "); #line hidden -#line 14 - testRunner.Then("generated for interface", "event global::System.EventHandler Event;", ((TechTalk.SpecFlow.Table)(null)), "Then "); +#line 31 + testRunner.When("run generator", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); #line hidden -#line 18 - testRunner.And("generated for struct implementation", "public event global::System.EventHandler Event { add => _instance.Event += value;" + - " remove => _instance.Event -= value; }", ((TechTalk.SpecFlow.Table)(null)), "And "); +#line 32 + testRunner.Then("there must not be generation exception", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); #line hidden -#line 22 - testRunner.And("inherited for class implementation", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line 33 + testRunner.Then("generated interface member must be", "event global::System.EventHandler EventMember;", ((TechTalk.SpecFlow.Table)(null)), "Then "); #line hidden -#line 23 - testRunner.And("generated for sealed class implementation", "public event global::System.EventHandler Event { add => _instance.Event += value;" + - " remove => _instance.Event -= value; }", ((TechTalk.SpecFlow.Table)(null)), "And "); +#line 37 + testRunner.And("generated implementation member must be", "public event global::System.EventHandler EventMember { add => Events.EventHolder." + + "EventMember += value; remove => Events.EventHolder.EventMember -= value; }", ((TechTalk.SpecFlow.Table)(null)), "And "); #line hidden } this.ScenarioCleanup(); @@ -133,7 +144,7 @@ public void EventWithCustomType() string[] tagsOfScenario = ((string[])(null)); System.Collections.Specialized.OrderedDictionary argumentsOfScenario = new System.Collections.Specialized.OrderedDictionary(); TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("Event with custom type", null, tagsOfScenario, argumentsOfScenario, featureTags); -#line 29 +#line 43 this.ScenarioInitialize(scenarioInfo); #line hidden if ((TagHelper.ContainsIgnoreTag(tagsOfScenario) || TagHelper.ContainsIgnoreTag(featureTags))) @@ -143,28 +154,25 @@ public void EventWithCustomType() else { this.ScenarioStart(); -#line 30 - testRunner.Given("source member declaration", "public event CustomEventHandler Event;", ((TechTalk.SpecFlow.Table)(null)), "Given "); -#line hidden -#line 34 - testRunner.And("additional namespace declarations", "public delegate void CustomEventHandler(int count, string search);", ((TechTalk.SpecFlow.Table)(null)), "And "); +#line 4 +this.FeatureBackground(); #line hidden -#line 38 - testRunner.When("run generator for event", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); +#line 44 + testRunner.Given("member declaration", "public static event CustomEventHandler EventMember;", ((TechTalk.SpecFlow.Table)(null)), "Given "); #line hidden -#line 39 - testRunner.Then("generated for interface", "event global::@Namespace.CustomEventHandler Event;", ((TechTalk.SpecFlow.Table)(null)), "Then "); +#line 48 + testRunner.When("run generator", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); #line hidden -#line 43 - testRunner.And("generated for struct implementation", "public event global::@Namespace.CustomEventHandler Event { add => _instance.Event" + - " += value; remove => _instance.Event -= value; }", ((TechTalk.SpecFlow.Table)(null)), "And "); +#line 49 + testRunner.Then("there must not be generation exception", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); #line hidden -#line 47 - testRunner.And("inherited for class implementation", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line 50 + testRunner.Then("generated interface member must be", "event global::Events.CustomEventHandler EventMember;", ((TechTalk.SpecFlow.Table)(null)), "Then "); #line hidden -#line 48 - testRunner.And("generated for sealed class implementation", "public event global::@Namespace.CustomEventHandler Event { add => _instance.Event" + - " += value; remove => _instance.Event -= value; }", ((TechTalk.SpecFlow.Table)(null)), "And "); +#line 54 + testRunner.And("generated implementation member must be", "public event global::Events.CustomEventHandler EventMember { add => Events.EventH" + + "older.EventMember += value; remove => Events.EventHolder.EventMember -= value; }" + + "", ((TechTalk.SpecFlow.Table)(null)), "And "); #line hidden } this.ScenarioCleanup(); @@ -178,7 +186,7 @@ public void EventWithActionType() string[] tagsOfScenario = ((string[])(null)); System.Collections.Specialized.OrderedDictionary argumentsOfScenario = new System.Collections.Specialized.OrderedDictionary(); TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("Event with Action type", null, tagsOfScenario, argumentsOfScenario, featureTags); -#line 54 +#line 60 this.ScenarioInitialize(scenarioInfo); #line hidden if ((TagHelper.ContainsIgnoreTag(tagsOfScenario) || TagHelper.ContainsIgnoreTag(featureTags))) @@ -188,28 +196,24 @@ public void EventWithActionType() else { this.ScenarioStart(); -#line 55 - testRunner.Given("usings", "using System;", ((TechTalk.SpecFlow.Table)(null)), "Given "); -#line hidden -#line 59 - testRunner.And("source member declaration", "public event Action Event;", ((TechTalk.SpecFlow.Table)(null)), "And "); +#line 4 +this.FeatureBackground(); #line hidden -#line 63 - testRunner.When("run generator for event", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); +#line 61 + testRunner.Given("member declaration", "public static event Action EventMember;", ((TechTalk.SpecFlow.Table)(null)), "Given "); #line hidden -#line 64 - testRunner.Then("generated for interface", "event global::System.Action Event;", ((TechTalk.SpecFlow.Table)(null)), "Then "); +#line 65 + testRunner.When("run generator", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); #line hidden -#line 68 - testRunner.And("generated for struct implementation", "public event global::System.Action Event { add => _instance.Event += value; remov" + - "e => _instance.Event -= value; }", ((TechTalk.SpecFlow.Table)(null)), "And "); +#line 66 + testRunner.Then("there must not be generation exception", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); #line hidden -#line 72 - testRunner.And("inherited for class implementation", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line 67 + testRunner.Then("generated interface member must be", "event global::System.Action EventMember;", ((TechTalk.SpecFlow.Table)(null)), "Then "); #line hidden -#line 73 - testRunner.And("generated for sealed class implementation", "public event global::System.Action Event { add => _instance.Event += value; remov" + - "e => _instance.Event -= value; }", ((TechTalk.SpecFlow.Table)(null)), "And "); +#line 71 + testRunner.And("generated implementation member must be", "public event global::System.Action EventMember { add => Events.EventHolder.EventM" + + "ember += value; remove => Events.EventHolder.EventMember -= value; }", ((TechTalk.SpecFlow.Table)(null)), "And "); #line hidden } this.ScenarioCleanup(); @@ -223,7 +227,7 @@ public void EventWithActionTypeWithKeywordedGenericParameter() string[] tagsOfScenario = ((string[])(null)); System.Collections.Specialized.OrderedDictionary argumentsOfScenario = new System.Collections.Specialized.OrderedDictionary(); TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("Event with Action type with keyworded generic parameter", null, tagsOfScenario, argumentsOfScenario, featureTags); -#line 79 +#line 77 this.ScenarioInitialize(scenarioInfo); #line hidden if ((TagHelper.ContainsIgnoreTag(tagsOfScenario) || TagHelper.ContainsIgnoreTag(featureTags))) @@ -233,28 +237,24 @@ public void EventWithActionTypeWithKeywordedGenericParameter() else { this.ScenarioStart(); -#line 80 - testRunner.Given("usings", "using System;", ((TechTalk.SpecFlow.Table)(null)), "Given "); -#line hidden -#line 84 - testRunner.And("source member declaration", "public event Action Event;", ((TechTalk.SpecFlow.Table)(null)), "And "); +#line 4 +this.FeatureBackground(); #line hidden -#line 88 - testRunner.When("run generator for event", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); +#line 78 + testRunner.Given("member declaration", "public static event Action EventMember;", ((TechTalk.SpecFlow.Table)(null)), "Given "); #line hidden -#line 89 - testRunner.Then("generated for interface", "event global::System.Action Event;", ((TechTalk.SpecFlow.Table)(null)), "Then "); +#line 82 + testRunner.When("run generator", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); #line hidden -#line 93 - testRunner.And("generated for struct implementation", "public event global::System.Action Event { add => _instance.Event += value; " + - "remove => _instance.Event -= value; }", ((TechTalk.SpecFlow.Table)(null)), "And "); +#line 83 + testRunner.Then("there must not be generation exception", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); #line hidden -#line 97 - testRunner.And("inherited for class implementation", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line 84 + testRunner.Then("generated interface member must be", "event global::System.Action EventMember;", ((TechTalk.SpecFlow.Table)(null)), "Then "); #line hidden -#line 98 - testRunner.And("generated for sealed class implementation", "public event global::System.Action Event { add => _instance.Event += value; " + - "remove => _instance.Event -= value; }", ((TechTalk.SpecFlow.Table)(null)), "And "); +#line 88 + testRunner.And("generated implementation member must be", "public event global::System.Action EventMember { add => Events.EventHolder.E" + + "ventMember += value; remove => Events.EventHolder.EventMember -= value; }", ((TechTalk.SpecFlow.Table)(null)), "And "); #line hidden } this.ScenarioCleanup(); @@ -268,7 +268,7 @@ public void EventWithActionTypeWithKeywordedNullableGenericParameter() string[] tagsOfScenario = ((string[])(null)); System.Collections.Specialized.OrderedDictionary argumentsOfScenario = new System.Collections.Specialized.OrderedDictionary(); TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("Event with Action type with keyworded nullable generic parameter", null, tagsOfScenario, argumentsOfScenario, featureTags); -#line 104 +#line 94 this.ScenarioInitialize(scenarioInfo); #line hidden if ((TagHelper.ContainsIgnoreTag(tagsOfScenario) || TagHelper.ContainsIgnoreTag(featureTags))) @@ -278,28 +278,24 @@ public void EventWithActionTypeWithKeywordedNullableGenericParameter() else { this.ScenarioStart(); -#line 105 - testRunner.Given("usings", "using System;", ((TechTalk.SpecFlow.Table)(null)), "Given "); -#line hidden -#line 109 - testRunner.And("source member declaration", "public event Action Event;", ((TechTalk.SpecFlow.Table)(null)), "And "); +#line 4 +this.FeatureBackground(); #line hidden -#line 113 - testRunner.When("run generator for event", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); +#line 95 + testRunner.Given("member declaration", "public static event Action EventMember;", ((TechTalk.SpecFlow.Table)(null)), "Given "); #line hidden -#line 114 - testRunner.Then("generated for interface", "event global::System.Action Event;", ((TechTalk.SpecFlow.Table)(null)), "Then "); +#line 99 + testRunner.When("run generator", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); #line hidden -#line 118 - testRunner.And("generated for struct implementation", "public event global::System.Action Event { add => _instance.Event += val" + - "ue; remove => _instance.Event -= value; }", ((TechTalk.SpecFlow.Table)(null)), "And "); +#line 100 + testRunner.Then("there must not be generation exception", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); #line hidden -#line 122 - testRunner.And("inherited for class implementation", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line 101 + testRunner.Then("generated interface member must be", "event global::System.Action EventMember;", ((TechTalk.SpecFlow.Table)(null)), "Then "); #line hidden -#line 123 - testRunner.And("generated for sealed class implementation", "public event global::System.Action Event { add => _instance.Event += val" + - "ue; remove => _instance.Event -= value; }", ((TechTalk.SpecFlow.Table)(null)), "And "); +#line 105 + testRunner.And("generated implementation member must be", "public event global::System.Action EventMember { add => Events.EventHold" + + "er.EventMember += value; remove => Events.EventHolder.EventMember -= value; }", ((TechTalk.SpecFlow.Table)(null)), "And "); #line hidden } this.ScenarioCleanup(); @@ -313,7 +309,7 @@ public void EventWithActionTypeWithNon_KeywordedGenericParameter() string[] tagsOfScenario = ((string[])(null)); System.Collections.Specialized.OrderedDictionary argumentsOfScenario = new System.Collections.Specialized.OrderedDictionary(); TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("Event with Action type with non-keyworded generic parameter", null, tagsOfScenario, argumentsOfScenario, featureTags); -#line 129 +#line 111 this.ScenarioInitialize(scenarioInfo); #line hidden if ((TagHelper.ContainsIgnoreTag(tagsOfScenario) || TagHelper.ContainsIgnoreTag(featureTags))) @@ -323,28 +319,25 @@ public void EventWithActionTypeWithNon_KeywordedGenericParameter() else { this.ScenarioStart(); -#line 130 - testRunner.Given("usings", "using System;", ((TechTalk.SpecFlow.Table)(null)), "Given "); -#line hidden -#line 134 - testRunner.And("source member declaration", "public event Action Event;", ((TechTalk.SpecFlow.Table)(null)), "And "); +#line 4 +this.FeatureBackground(); #line hidden -#line 138 - testRunner.When("run generator for event", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); +#line 112 + testRunner.Given("member declaration", "public static event Action EventMember;", ((TechTalk.SpecFlow.Table)(null)), "Given "); #line hidden -#line 139 - testRunner.Then("generated for interface", "event global::System.Action Event;", ((TechTalk.SpecFlow.Table)(null)), "Then "); +#line 116 + testRunner.When("run generator", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); #line hidden -#line 143 - testRunner.And("generated for struct implementation", "public event global::System.Action Event { add => _insta" + - "nce.Event += value; remove => _instance.Event -= value; }", ((TechTalk.SpecFlow.Table)(null)), "And "); +#line 117 + testRunner.Then("there must not be generation exception", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); #line hidden -#line 147 - testRunner.And("inherited for class implementation", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line 118 + testRunner.Then("generated interface member must be", "event global::System.Action EventMember;", ((TechTalk.SpecFlow.Table)(null)), "Then "); #line hidden -#line 148 - testRunner.And("generated for sealed class implementation", "public event global::System.Action Event { add => _insta" + - "nce.Event += value; remove => _instance.Event -= value; }", ((TechTalk.SpecFlow.Table)(null)), "And "); +#line 122 + testRunner.And("generated implementation member must be", "public event global::System.Action EventMember { add => " + + "Events.EventHolder.EventMember += value; remove => Events.EventHolder.EventMembe" + + "r -= value; }", ((TechTalk.SpecFlow.Table)(null)), "And "); #line hidden } this.ScenarioCleanup(); @@ -358,7 +351,7 @@ public void EventWithActionTypeWithNon_KeywordedNullableGenericParameter() string[] tagsOfScenario = ((string[])(null)); System.Collections.Specialized.OrderedDictionary argumentsOfScenario = new System.Collections.Specialized.OrderedDictionary(); TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("Event with Action type with non-keyworded nullable generic parameter", null, tagsOfScenario, argumentsOfScenario, featureTags); -#line 154 +#line 128 this.ScenarioInitialize(scenarioInfo); #line hidden if ((TagHelper.ContainsIgnoreTag(tagsOfScenario) || TagHelper.ContainsIgnoreTag(featureTags))) @@ -368,28 +361,25 @@ public void EventWithActionTypeWithNon_KeywordedNullableGenericParameter() else { this.ScenarioStart(); -#line 155 - testRunner.Given("usings", "using System;", ((TechTalk.SpecFlow.Table)(null)), "Given "); -#line hidden -#line 159 - testRunner.And("source member declaration", "public event Action Event;", ((TechTalk.SpecFlow.Table)(null)), "And "); +#line 4 +this.FeatureBackground(); #line hidden -#line 163 - testRunner.When("run generator for event", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); +#line 129 + testRunner.Given("member declaration", "public static event Action EventMember;", ((TechTalk.SpecFlow.Table)(null)), "Given "); #line hidden -#line 164 - testRunner.Then("generated for interface", "event global::System.Action Event;", ((TechTalk.SpecFlow.Table)(null)), "Then "); +#line 133 + testRunner.When("run generator", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); #line hidden -#line 168 - testRunner.And("generated for struct implementation", "public event global::System.Action Event { add => _ins" + - "tance.Event += value; remove => _instance.Event -= value; }", ((TechTalk.SpecFlow.Table)(null)), "And "); +#line 134 + testRunner.Then("there must not be generation exception", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); #line hidden -#line 172 - testRunner.And("inherited for class implementation", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line 135 + testRunner.Then("generated interface member must be", "event global::System.Action EventMember;", ((TechTalk.SpecFlow.Table)(null)), "Then "); #line hidden -#line 173 - testRunner.And("generated for sealed class implementation", "public event global::System.Action Event { add => _ins" + - "tance.Event += value; remove => _instance.Event -= value; }", ((TechTalk.SpecFlow.Table)(null)), "And "); +#line 139 + testRunner.And("generated implementation member must be", "public event global::System.Action EventMember { add =" + + "> Events.EventHolder.EventMember += value; remove => Events.EventHolder.EventMem" + + "ber -= value; }", ((TechTalk.SpecFlow.Table)(null)), "And "); #line hidden } this.ScenarioCleanup(); @@ -403,7 +393,7 @@ public void EventWithFunc() string[] tagsOfScenario = ((string[])(null)); System.Collections.Specialized.OrderedDictionary argumentsOfScenario = new System.Collections.Specialized.OrderedDictionary(); TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("Event with Func", null, tagsOfScenario, argumentsOfScenario, featureTags); -#line 179 +#line 145 this.ScenarioInitialize(scenarioInfo); #line hidden if ((TagHelper.ContainsIgnoreTag(tagsOfScenario) || TagHelper.ContainsIgnoreTag(featureTags))) @@ -413,28 +403,25 @@ public void EventWithFunc() else { this.ScenarioStart(); -#line 180 - testRunner.Given("usings", "using System;", ((TechTalk.SpecFlow.Table)(null)), "Given "); -#line hidden -#line 184 - testRunner.And("source member declaration", "public event Func Event;", ((TechTalk.SpecFlow.Table)(null)), "And "); +#line 4 +this.FeatureBackground(); #line hidden -#line 188 - testRunner.When("run generator for event", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); +#line 146 + testRunner.Given("member declaration", "public static event Func EventMember;", ((TechTalk.SpecFlow.Table)(null)), "Given "); #line hidden -#line 189 - testRunner.Then("generated for interface", "event global::System.Func Event;", ((TechTalk.SpecFlow.Table)(null)), "Then "); +#line 150 + testRunner.When("run generator", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); #line hidden -#line 193 - testRunner.And("generated for struct implementation", "public event global::System.Func Event {" + - " add => _instance.Event += value; remove => _instance.Event -= value; }", ((TechTalk.SpecFlow.Table)(null)), "And "); +#line 151 + testRunner.Then("there must not be generation exception", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Then "); #line hidden -#line 197 - testRunner.And("inherited for class implementation", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "And "); +#line 152 + testRunner.Then("generated interface member must be", "event global::System.Func EventMember;", ((TechTalk.SpecFlow.Table)(null)), "Then "); #line hidden -#line 198 - testRunner.And("generated for sealed class implementation", "public event global::System.Func Event {" + - " add => _instance.Event += value; remove => _instance.Event -= value; }", ((TechTalk.SpecFlow.Table)(null)), "And "); +#line 156 + testRunner.And("generated implementation member must be", "public event global::System.Func EventMe" + + "mber { add => Events.EventHolder.EventMember += value; remove => Events.EventHol" + + "der.EventMember -= value; }", ((TechTalk.SpecFlow.Table)(null)), "And "); #line hidden } this.ScenarioCleanup(); diff --git a/Tests/Tum4ik.StinimGen.Specs/Features/Event/StaticEvent.feature b/Tests/Tum4ik.StinimGen.Specs/Features/Event/StaticEvent.feature deleted file mode 100644 index 4a57f29..0000000 --- a/Tests/Tum4ik.StinimGen.Specs/Features/Event/StaticEvent.feature +++ /dev/null @@ -1,257 +0,0 @@ -Feature: Static event - - -Scenario: Event with EventHandler type - Given usings - """ - using System; - """ - And source member declaration - """ - public static event EventHandler Event; - """ - When run generator for event - Then generated for interface - """ - event global::System.EventHandler Event; - """ - And generated for struct implementation - """ - public event global::System.EventHandler Event { add => @Namespace.@TypeName.Event += value; remove => @Namespace.@TypeName.Event -= value; } - """ - And generated for class implementation - """ - public new event global::System.EventHandler Event { add => @Namespace.@TypeName.Event += value; remove => @Namespace.@TypeName.Event -= value; } - """ - And generated for sealed class implementation - """ - public event global::System.EventHandler Event { add => @Namespace.@TypeName.Event += value; remove => @Namespace.@TypeName.Event -= value; } - """ - And generated for static class implementation - """ - public event global::System.EventHandler Event { add => @Namespace.@TypeName.Event += value; remove => @Namespace.@TypeName.Event -= value; } - """ - - -Scenario: Event with custom type - Given source member declaration - """ - public static event CustomEventHandler Event; - """ - And additional namespace declarations - """ - public delegate void CustomEventHandler(int count, string search); - """ - When run generator for event - Then generated for interface - """ - event global::@Namespace.CustomEventHandler Event; - """ - And generated for struct implementation - """ - public event global::@Namespace.CustomEventHandler Event { add => @Namespace.@TypeName.Event += value; remove => @Namespace.@TypeName.Event -= value; } - """ - And generated for class implementation - """ - public new event global::@Namespace.CustomEventHandler Event { add => @Namespace.@TypeName.Event += value; remove => @Namespace.@TypeName.Event -= value; } - """ - And generated for sealed class implementation - """ - public event global::@Namespace.CustomEventHandler Event { add => @Namespace.@TypeName.Event += value; remove => @Namespace.@TypeName.Event -= value; } - """ - And generated for static class implementation - """ - public event global::@Namespace.CustomEventHandler Event { add => @Namespace.@TypeName.Event += value; remove => @Namespace.@TypeName.Event -= value; } - """ - - -Scenario: Event with Action type - Given usings - """ - using System; - """ - And source member declaration - """ - public static event Action Event; - """ - When run generator for event - Then generated for interface - """ - event global::System.Action Event; - """ - And generated for struct implementation - """ - public event global::System.Action Event { add => @Namespace.@TypeName.Event += value; remove => @Namespace.@TypeName.Event -= value; } - """ - And generated for class implementation - """ - public new event global::System.Action Event { add => @Namespace.@TypeName.Event += value; remove => @Namespace.@TypeName.Event -= value; } - """ - And generated for sealed class implementation - """ - public event global::System.Action Event { add => @Namespace.@TypeName.Event += value; remove => @Namespace.@TypeName.Event -= value; } - """ - And generated for static class implementation - """ - public event global::System.Action Event { add => @Namespace.@TypeName.Event += value; remove => @Namespace.@TypeName.Event -= value; } - """ - - -Scenario: Event with Action type with keyworded generic parameter - Given usings - """ - using System; - """ - And source member declaration - """ - public static event Action Event; - """ - When run generator for event - Then generated for interface - """ - event global::System.Action Event; - """ - And generated for struct implementation - """ - public event global::System.Action Event { add => @Namespace.@TypeName.Event += value; remove => @Namespace.@TypeName.Event -= value; } - """ - And generated for class implementation - """ - public new event global::System.Action Event { add => @Namespace.@TypeName.Event += value; remove => @Namespace.@TypeName.Event -= value; } - """ - And generated for sealed class implementation - """ - public event global::System.Action Event { add => @Namespace.@TypeName.Event += value; remove => @Namespace.@TypeName.Event -= value; } - """ - And generated for static class implementation - """ - public event global::System.Action Event { add => @Namespace.@TypeName.Event += value; remove => @Namespace.@TypeName.Event -= value; } - """ - - -Scenario: Event with Action type with keyworded nullable generic parameter - Given usings - """ - using System; - """ - And source member declaration - """ - public static event Action Event; - """ - When run generator for event - Then generated for interface - """ - event global::System.Action Event; - """ - And generated for struct implementation - """ - public event global::System.Action Event { add => @Namespace.@TypeName.Event += value; remove => @Namespace.@TypeName.Event -= value; } - """ - And generated for class implementation - """ - public new event global::System.Action Event { add => @Namespace.@TypeName.Event += value; remove => @Namespace.@TypeName.Event -= value; } - """ - And generated for sealed class implementation - """ - public event global::System.Action Event { add => @Namespace.@TypeName.Event += value; remove => @Namespace.@TypeName.Event -= value; } - """ - And generated for static class implementation - """ - public event global::System.Action Event { add => @Namespace.@TypeName.Event += value; remove => @Namespace.@TypeName.Event -= value; } - """ - - -Scenario: Event with Action type with non-keyworded generic parameter - Given usings - """ - using System; - """ - And source member declaration - """ - public static event Action Event; - """ - When run generator for event - Then generated for interface - """ - event global::System.Action Event; - """ - And generated for struct implementation - """ - public event global::System.Action Event { add => @Namespace.@TypeName.Event += value; remove => @Namespace.@TypeName.Event -= value; } - """ - And generated for class implementation - """ - public new event global::System.Action Event { add => @Namespace.@TypeName.Event += value; remove => @Namespace.@TypeName.Event -= value; } - """ - And generated for sealed class implementation - """ - public event global::System.Action Event { add => @Namespace.@TypeName.Event += value; remove => @Namespace.@TypeName.Event -= value; } - """ - And generated for static class implementation - """ - public event global::System.Action Event { add => @Namespace.@TypeName.Event += value; remove => @Namespace.@TypeName.Event -= value; } - """ - - -Scenario: Event with Action type with non-keyworded nullable generic parameter - Given usings - """ - using System; - """ - And source member declaration - """ - public static event Action Event; - """ - When run generator for event - Then generated for interface - """ - event global::System.Action Event; - """ - And generated for struct implementation - """ - public event global::System.Action Event { add => @Namespace.@TypeName.Event += value; remove => @Namespace.@TypeName.Event -= value; } - """ - And generated for class implementation - """ - public new event global::System.Action Event { add => @Namespace.@TypeName.Event += value; remove => @Namespace.@TypeName.Event -= value; } - """ - And generated for sealed class implementation - """ - public event global::System.Action Event { add => @Namespace.@TypeName.Event += value; remove => @Namespace.@TypeName.Event -= value; } - """ - And generated for static class implementation - """ - public event global::System.Action Event { add => @Namespace.@TypeName.Event += value; remove => @Namespace.@TypeName.Event -= value; } - """ - - -Scenario: Event with Func - Given usings - """ - using System; - """ - And source member declaration - """ - public static event Func Event; - """ - When run generator for event - Then generated for interface - """ - event global::System.Func Event; - """ - And generated for struct implementation - """ - public event global::System.Func Event { add => @Namespace.@TypeName.Event += value; remove => @Namespace.@TypeName.Event -= value; } - """ - And generated for class implementation - """ - public new event global::System.Func Event { add => @Namespace.@TypeName.Event += value; remove => @Namespace.@TypeName.Event -= value; } - """ - And generated for sealed class implementation - """ - public event global::System.Func Event { add => @Namespace.@TypeName.Event += value; remove => @Namespace.@TypeName.Event -= value; } - """ - And generated for static class implementation - """ - public event global::System.Func Event { add => @Namespace.@TypeName.Event += value; remove => @Namespace.@TypeName.Event -= value; } - """ diff --git a/Tests/Tum4ik.StinimGen.Specs/Features/Event/StaticEvent.feature.cs b/Tests/Tum4ik.StinimGen.Specs/Features/Event/StaticEvent.feature.cs deleted file mode 100644 index a597048..0000000 --- a/Tests/Tum4ik.StinimGen.Specs/Features/Event/StaticEvent.feature.cs +++ /dev/null @@ -1,510 +0,0 @@ -// ------------------------------------------------------------------------------ -// -// This code was generated by SpecFlow (https://www.specflow.org/). -// SpecFlow Version:3.9.0.0 -// SpecFlow Generator Version:3.9.0.0 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -// ------------------------------------------------------------------------------ -#region Designer generated code -#pragma warning disable -namespace Tum4ik.StinimGen.Specs.Features.Event -{ - using TechTalk.SpecFlow; - using System; - using System.Linq; - - - [System.CodeDom.Compiler.GeneratedCodeAttribute("TechTalk.SpecFlow", "3.9.0.0")] - [System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - public partial class StaticEventFeature : object, Xunit.IClassFixture, System.IDisposable - { - - private static TechTalk.SpecFlow.ITestRunner testRunner; - - private static string[] featureTags = ((string[])(null)); - - private Xunit.Abstractions.ITestOutputHelper _testOutputHelper; - -#line 1 "StaticEvent.feature" -#line hidden - - public StaticEventFeature(StaticEventFeature.FixtureData fixtureData, Tum4ik_StinimGen_Specs_XUnitAssemblyFixture assemblyFixture, Xunit.Abstractions.ITestOutputHelper testOutputHelper) - { - this._testOutputHelper = testOutputHelper; - this.TestInitialize(); - } - - public static void FeatureSetup() - { - testRunner = TechTalk.SpecFlow.TestRunnerManager.GetTestRunner(); - TechTalk.SpecFlow.FeatureInfo featureInfo = new TechTalk.SpecFlow.FeatureInfo(new System.Globalization.CultureInfo("en-US"), "Features/Event", "Static event", null, ProgrammingLanguage.CSharp, featureTags); - testRunner.OnFeatureStart(featureInfo); - } - - public static void FeatureTearDown() - { - testRunner.OnFeatureEnd(); - testRunner = null; - } - - public void TestInitialize() - { - } - - public void TestTearDown() - { - testRunner.OnScenarioEnd(); - } - - public void ScenarioInitialize(TechTalk.SpecFlow.ScenarioInfo scenarioInfo) - { - testRunner.OnScenarioInitialize(scenarioInfo); - testRunner.ScenarioContext.ScenarioContainer.RegisterInstanceAs(_testOutputHelper); - } - - public void ScenarioStart() - { - testRunner.OnScenarioStart(); - } - - public void ScenarioCleanup() - { - testRunner.CollectScenarioErrors(); - } - - void System.IDisposable.Dispose() - { - this.TestTearDown(); - } - - [Xunit.SkippableFactAttribute(DisplayName="Event with EventHandler type")] - [Xunit.TraitAttribute("FeatureTitle", "Static event")] - [Xunit.TraitAttribute("Description", "Event with EventHandler type")] - public void EventWithEventHandlerType() - { - string[] tagsOfScenario = ((string[])(null)); - System.Collections.Specialized.OrderedDictionary argumentsOfScenario = new System.Collections.Specialized.OrderedDictionary(); - TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("Event with EventHandler type", null, tagsOfScenario, argumentsOfScenario, featureTags); -#line 4 -this.ScenarioInitialize(scenarioInfo); -#line hidden - if ((TagHelper.ContainsIgnoreTag(tagsOfScenario) || TagHelper.ContainsIgnoreTag(featureTags))) - { - testRunner.SkipScenario(); - } - else - { - this.ScenarioStart(); -#line 5 - testRunner.Given("usings", "using System;", ((TechTalk.SpecFlow.Table)(null)), "Given "); -#line hidden -#line 9 - testRunner.And("source member declaration", "public static event EventHandler Event;", ((TechTalk.SpecFlow.Table)(null)), "And "); -#line hidden -#line 13 - testRunner.When("run generator for event", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); -#line hidden -#line 14 - testRunner.Then("generated for interface", "event global::System.EventHandler Event;", ((TechTalk.SpecFlow.Table)(null)), "Then "); -#line hidden -#line 18 - testRunner.And("generated for struct implementation", "public event global::System.EventHandler Event { add => @Namespace.@TypeName.Even" + - "t += value; remove => @Namespace.@TypeName.Event -= value; }", ((TechTalk.SpecFlow.Table)(null)), "And "); -#line hidden -#line 22 - testRunner.And("generated for class implementation", "public new event global::System.EventHandler Event { add => @Namespace.@TypeName." + - "Event += value; remove => @Namespace.@TypeName.Event -= value; }", ((TechTalk.SpecFlow.Table)(null)), "And "); -#line hidden -#line 26 - testRunner.And("generated for sealed class implementation", "public event global::System.EventHandler Event { add => @Namespace.@TypeName.Even" + - "t += value; remove => @Namespace.@TypeName.Event -= value; }", ((TechTalk.SpecFlow.Table)(null)), "And "); -#line hidden -#line 30 - testRunner.And("generated for static class implementation", "public event global::System.EventHandler Event { add => @Namespace.@TypeName.Even" + - "t += value; remove => @Namespace.@TypeName.Event -= value; }", ((TechTalk.SpecFlow.Table)(null)), "And "); -#line hidden - } - this.ScenarioCleanup(); - } - - [Xunit.SkippableFactAttribute(DisplayName="Event with custom type")] - [Xunit.TraitAttribute("FeatureTitle", "Static event")] - [Xunit.TraitAttribute("Description", "Event with custom type")] - public void EventWithCustomType() - { - string[] tagsOfScenario = ((string[])(null)); - System.Collections.Specialized.OrderedDictionary argumentsOfScenario = new System.Collections.Specialized.OrderedDictionary(); - TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("Event with custom type", null, tagsOfScenario, argumentsOfScenario, featureTags); -#line 36 -this.ScenarioInitialize(scenarioInfo); -#line hidden - if ((TagHelper.ContainsIgnoreTag(tagsOfScenario) || TagHelper.ContainsIgnoreTag(featureTags))) - { - testRunner.SkipScenario(); - } - else - { - this.ScenarioStart(); -#line 37 - testRunner.Given("source member declaration", "public static event CustomEventHandler Event;", ((TechTalk.SpecFlow.Table)(null)), "Given "); -#line hidden -#line 41 - testRunner.And("additional namespace declarations", "public delegate void CustomEventHandler(int count, string search);", ((TechTalk.SpecFlow.Table)(null)), "And "); -#line hidden -#line 45 - testRunner.When("run generator for event", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); -#line hidden -#line 46 - testRunner.Then("generated for interface", "event global::@Namespace.CustomEventHandler Event;", ((TechTalk.SpecFlow.Table)(null)), "Then "); -#line hidden -#line 50 - testRunner.And("generated for struct implementation", "public event global::@Namespace.CustomEventHandler Event { add => @Namespace.@Typ" + - "eName.Event += value; remove => @Namespace.@TypeName.Event -= value; }", ((TechTalk.SpecFlow.Table)(null)), "And "); -#line hidden -#line 54 - testRunner.And("generated for class implementation", "public new event global::@Namespace.CustomEventHandler Event { add => @Namespace." + - "@TypeName.Event += value; remove => @Namespace.@TypeName.Event -= value; }", ((TechTalk.SpecFlow.Table)(null)), "And "); -#line hidden -#line 58 - testRunner.And("generated for sealed class implementation", "public event global::@Namespace.CustomEventHandler Event { add => @Namespace.@Typ" + - "eName.Event += value; remove => @Namespace.@TypeName.Event -= value; }", ((TechTalk.SpecFlow.Table)(null)), "And "); -#line hidden -#line 62 - testRunner.And("generated for static class implementation", "public event global::@Namespace.CustomEventHandler Event { add => @Namespace.@Typ" + - "eName.Event += value; remove => @Namespace.@TypeName.Event -= value; }", ((TechTalk.SpecFlow.Table)(null)), "And "); -#line hidden - } - this.ScenarioCleanup(); - } - - [Xunit.SkippableFactAttribute(DisplayName="Event with Action type")] - [Xunit.TraitAttribute("FeatureTitle", "Static event")] - [Xunit.TraitAttribute("Description", "Event with Action type")] - public void EventWithActionType() - { - string[] tagsOfScenario = ((string[])(null)); - System.Collections.Specialized.OrderedDictionary argumentsOfScenario = new System.Collections.Specialized.OrderedDictionary(); - TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("Event with Action type", null, tagsOfScenario, argumentsOfScenario, featureTags); -#line 68 -this.ScenarioInitialize(scenarioInfo); -#line hidden - if ((TagHelper.ContainsIgnoreTag(tagsOfScenario) || TagHelper.ContainsIgnoreTag(featureTags))) - { - testRunner.SkipScenario(); - } - else - { - this.ScenarioStart(); -#line 69 - testRunner.Given("usings", "using System;", ((TechTalk.SpecFlow.Table)(null)), "Given "); -#line hidden -#line 73 - testRunner.And("source member declaration", "public static event Action Event;", ((TechTalk.SpecFlow.Table)(null)), "And "); -#line hidden -#line 77 - testRunner.When("run generator for event", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); -#line hidden -#line 78 - testRunner.Then("generated for interface", "event global::System.Action Event;", ((TechTalk.SpecFlow.Table)(null)), "Then "); -#line hidden -#line 82 - testRunner.And("generated for struct implementation", "public event global::System.Action Event { add => @Namespace.@TypeName.Event += v" + - "alue; remove => @Namespace.@TypeName.Event -= value; }", ((TechTalk.SpecFlow.Table)(null)), "And "); -#line hidden -#line 86 - testRunner.And("generated for class implementation", "public new event global::System.Action Event { add => @Namespace.@TypeName.Event " + - "+= value; remove => @Namespace.@TypeName.Event -= value; }", ((TechTalk.SpecFlow.Table)(null)), "And "); -#line hidden -#line 90 - testRunner.And("generated for sealed class implementation", "public event global::System.Action Event { add => @Namespace.@TypeName.Event += v" + - "alue; remove => @Namespace.@TypeName.Event -= value; }", ((TechTalk.SpecFlow.Table)(null)), "And "); -#line hidden -#line 94 - testRunner.And("generated for static class implementation", "public event global::System.Action Event { add => @Namespace.@TypeName.Event += v" + - "alue; remove => @Namespace.@TypeName.Event -= value; }", ((TechTalk.SpecFlow.Table)(null)), "And "); -#line hidden - } - this.ScenarioCleanup(); - } - - [Xunit.SkippableFactAttribute(DisplayName="Event with Action type with keyworded generic parameter")] - [Xunit.TraitAttribute("FeatureTitle", "Static event")] - [Xunit.TraitAttribute("Description", "Event with Action type with keyworded generic parameter")] - public void EventWithActionTypeWithKeywordedGenericParameter() - { - string[] tagsOfScenario = ((string[])(null)); - System.Collections.Specialized.OrderedDictionary argumentsOfScenario = new System.Collections.Specialized.OrderedDictionary(); - TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("Event with Action type with keyworded generic parameter", null, tagsOfScenario, argumentsOfScenario, featureTags); -#line 100 -this.ScenarioInitialize(scenarioInfo); -#line hidden - if ((TagHelper.ContainsIgnoreTag(tagsOfScenario) || TagHelper.ContainsIgnoreTag(featureTags))) - { - testRunner.SkipScenario(); - } - else - { - this.ScenarioStart(); -#line 101 - testRunner.Given("usings", "using System;", ((TechTalk.SpecFlow.Table)(null)), "Given "); -#line hidden -#line 105 - testRunner.And("source member declaration", "public static event Action Event;", ((TechTalk.SpecFlow.Table)(null)), "And "); -#line hidden -#line 109 - testRunner.When("run generator for event", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); -#line hidden -#line 110 - testRunner.Then("generated for interface", "event global::System.Action Event;", ((TechTalk.SpecFlow.Table)(null)), "Then "); -#line hidden -#line 114 - testRunner.And("generated for struct implementation", "public event global::System.Action Event { add => @Namespace.@TypeName.Event" + - " += value; remove => @Namespace.@TypeName.Event -= value; }", ((TechTalk.SpecFlow.Table)(null)), "And "); -#line hidden -#line 118 - testRunner.And("generated for class implementation", "public new event global::System.Action Event { add => @Namespace.@TypeName.E" + - "vent += value; remove => @Namespace.@TypeName.Event -= value; }", ((TechTalk.SpecFlow.Table)(null)), "And "); -#line hidden -#line 122 - testRunner.And("generated for sealed class implementation", "public event global::System.Action Event { add => @Namespace.@TypeName.Event" + - " += value; remove => @Namespace.@TypeName.Event -= value; }", ((TechTalk.SpecFlow.Table)(null)), "And "); -#line hidden -#line 126 - testRunner.And("generated for static class implementation", "public event global::System.Action Event { add => @Namespace.@TypeName.Event" + - " += value; remove => @Namespace.@TypeName.Event -= value; }", ((TechTalk.SpecFlow.Table)(null)), "And "); -#line hidden - } - this.ScenarioCleanup(); - } - - [Xunit.SkippableFactAttribute(DisplayName="Event with Action type with keyworded nullable generic parameter")] - [Xunit.TraitAttribute("FeatureTitle", "Static event")] - [Xunit.TraitAttribute("Description", "Event with Action type with keyworded nullable generic parameter")] - public void EventWithActionTypeWithKeywordedNullableGenericParameter() - { - string[] tagsOfScenario = ((string[])(null)); - System.Collections.Specialized.OrderedDictionary argumentsOfScenario = new System.Collections.Specialized.OrderedDictionary(); - TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("Event with Action type with keyworded nullable generic parameter", null, tagsOfScenario, argumentsOfScenario, featureTags); -#line 132 -this.ScenarioInitialize(scenarioInfo); -#line hidden - if ((TagHelper.ContainsIgnoreTag(tagsOfScenario) || TagHelper.ContainsIgnoreTag(featureTags))) - { - testRunner.SkipScenario(); - } - else - { - this.ScenarioStart(); -#line 133 - testRunner.Given("usings", "using System;", ((TechTalk.SpecFlow.Table)(null)), "Given "); -#line hidden -#line 137 - testRunner.And("source member declaration", "public static event Action Event;", ((TechTalk.SpecFlow.Table)(null)), "And "); -#line hidden -#line 141 - testRunner.When("run generator for event", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); -#line hidden -#line 142 - testRunner.Then("generated for interface", "event global::System.Action Event;", ((TechTalk.SpecFlow.Table)(null)), "Then "); -#line hidden -#line 146 - testRunner.And("generated for struct implementation", "public event global::System.Action Event { add => @Namespace.@TypeName.E" + - "vent += value; remove => @Namespace.@TypeName.Event -= value; }", ((TechTalk.SpecFlow.Table)(null)), "And "); -#line hidden -#line 150 - testRunner.And("generated for class implementation", "public new event global::System.Action Event { add => @Namespace.@TypeNa" + - "me.Event += value; remove => @Namespace.@TypeName.Event -= value; }", ((TechTalk.SpecFlow.Table)(null)), "And "); -#line hidden -#line 154 - testRunner.And("generated for sealed class implementation", "public event global::System.Action Event { add => @Namespace.@TypeName.E" + - "vent += value; remove => @Namespace.@TypeName.Event -= value; }", ((TechTalk.SpecFlow.Table)(null)), "And "); -#line hidden -#line 158 - testRunner.And("generated for static class implementation", "public event global::System.Action Event { add => @Namespace.@TypeName.E" + - "vent += value; remove => @Namespace.@TypeName.Event -= value; }", ((TechTalk.SpecFlow.Table)(null)), "And "); -#line hidden - } - this.ScenarioCleanup(); - } - - [Xunit.SkippableFactAttribute(DisplayName="Event with Action type with non-keyworded generic parameter")] - [Xunit.TraitAttribute("FeatureTitle", "Static event")] - [Xunit.TraitAttribute("Description", "Event with Action type with non-keyworded generic parameter")] - public void EventWithActionTypeWithNon_KeywordedGenericParameter() - { - string[] tagsOfScenario = ((string[])(null)); - System.Collections.Specialized.OrderedDictionary argumentsOfScenario = new System.Collections.Specialized.OrderedDictionary(); - TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("Event with Action type with non-keyworded generic parameter", null, tagsOfScenario, argumentsOfScenario, featureTags); -#line 164 -this.ScenarioInitialize(scenarioInfo); -#line hidden - if ((TagHelper.ContainsIgnoreTag(tagsOfScenario) || TagHelper.ContainsIgnoreTag(featureTags))) - { - testRunner.SkipScenario(); - } - else - { - this.ScenarioStart(); -#line 165 - testRunner.Given("usings", "using System;", ((TechTalk.SpecFlow.Table)(null)), "Given "); -#line hidden -#line 169 - testRunner.And("source member declaration", "public static event Action Event;", ((TechTalk.SpecFlow.Table)(null)), "And "); -#line hidden -#line 173 - testRunner.When("run generator for event", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); -#line hidden -#line 174 - testRunner.Then("generated for interface", "event global::System.Action Event;", ((TechTalk.SpecFlow.Table)(null)), "Then "); -#line hidden -#line 178 - testRunner.And("generated for struct implementation", "public event global::System.Action Event { add => @Names" + - "pace.@TypeName.Event += value; remove => @Namespace.@TypeName.Event -= value; }", ((TechTalk.SpecFlow.Table)(null)), "And "); -#line hidden -#line 182 - testRunner.And("generated for class implementation", "public new event global::System.Action Event { add => @N" + - "amespace.@TypeName.Event += value; remove => @Namespace.@TypeName.Event -= value" + - "; }", ((TechTalk.SpecFlow.Table)(null)), "And "); -#line hidden -#line 186 - testRunner.And("generated for sealed class implementation", "public event global::System.Action Event { add => @Names" + - "pace.@TypeName.Event += value; remove => @Namespace.@TypeName.Event -= value; }", ((TechTalk.SpecFlow.Table)(null)), "And "); -#line hidden -#line 190 - testRunner.And("generated for static class implementation", "public event global::System.Action Event { add => @Names" + - "pace.@TypeName.Event += value; remove => @Namespace.@TypeName.Event -= value; }", ((TechTalk.SpecFlow.Table)(null)), "And "); -#line hidden - } - this.ScenarioCleanup(); - } - - [Xunit.SkippableFactAttribute(DisplayName="Event with Action type with non-keyworded nullable generic parameter")] - [Xunit.TraitAttribute("FeatureTitle", "Static event")] - [Xunit.TraitAttribute("Description", "Event with Action type with non-keyworded nullable generic parameter")] - public void EventWithActionTypeWithNon_KeywordedNullableGenericParameter() - { - string[] tagsOfScenario = ((string[])(null)); - System.Collections.Specialized.OrderedDictionary argumentsOfScenario = new System.Collections.Specialized.OrderedDictionary(); - TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("Event with Action type with non-keyworded nullable generic parameter", null, tagsOfScenario, argumentsOfScenario, featureTags); -#line 196 -this.ScenarioInitialize(scenarioInfo); -#line hidden - if ((TagHelper.ContainsIgnoreTag(tagsOfScenario) || TagHelper.ContainsIgnoreTag(featureTags))) - { - testRunner.SkipScenario(); - } - else - { - this.ScenarioStart(); -#line 197 - testRunner.Given("usings", "using System;", ((TechTalk.SpecFlow.Table)(null)), "Given "); -#line hidden -#line 201 - testRunner.And("source member declaration", "public static event Action Event;", ((TechTalk.SpecFlow.Table)(null)), "And "); -#line hidden -#line 205 - testRunner.When("run generator for event", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); -#line hidden -#line 206 - testRunner.Then("generated for interface", "event global::System.Action Event;", ((TechTalk.SpecFlow.Table)(null)), "Then "); -#line hidden -#line 210 - testRunner.And("generated for struct implementation", "public event global::System.Action Event { add => @Nam" + - "espace.@TypeName.Event += value; remove => @Namespace.@TypeName.Event -= value; " + - "}", ((TechTalk.SpecFlow.Table)(null)), "And "); -#line hidden -#line 214 - testRunner.And("generated for class implementation", "public new event global::System.Action Event { add => " + - "@Namespace.@TypeName.Event += value; remove => @Namespace.@TypeName.Event -= val" + - "ue; }", ((TechTalk.SpecFlow.Table)(null)), "And "); -#line hidden -#line 218 - testRunner.And("generated for sealed class implementation", "public event global::System.Action Event { add => @Nam" + - "espace.@TypeName.Event += value; remove => @Namespace.@TypeName.Event -= value; " + - "}", ((TechTalk.SpecFlow.Table)(null)), "And "); -#line hidden -#line 222 - testRunner.And("generated for static class implementation", "public event global::System.Action Event { add => @Nam" + - "espace.@TypeName.Event += value; remove => @Namespace.@TypeName.Event -= value; " + - "}", ((TechTalk.SpecFlow.Table)(null)), "And "); -#line hidden - } - this.ScenarioCleanup(); - } - - [Xunit.SkippableFactAttribute(DisplayName="Event with Func")] - [Xunit.TraitAttribute("FeatureTitle", "Static event")] - [Xunit.TraitAttribute("Description", "Event with Func")] - public void EventWithFunc() - { - string[] tagsOfScenario = ((string[])(null)); - System.Collections.Specialized.OrderedDictionary argumentsOfScenario = new System.Collections.Specialized.OrderedDictionary(); - TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("Event with Func", null, tagsOfScenario, argumentsOfScenario, featureTags); -#line 228 -this.ScenarioInitialize(scenarioInfo); -#line hidden - if ((TagHelper.ContainsIgnoreTag(tagsOfScenario) || TagHelper.ContainsIgnoreTag(featureTags))) - { - testRunner.SkipScenario(); - } - else - { - this.ScenarioStart(); -#line 229 - testRunner.Given("usings", "using System;", ((TechTalk.SpecFlow.Table)(null)), "Given "); -#line hidden -#line 233 - testRunner.And("source member declaration", "public static event Func Event;", ((TechTalk.SpecFlow.Table)(null)), "And "); -#line hidden -#line 237 - testRunner.When("run generator for event", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); -#line hidden -#line 238 - testRunner.Then("generated for interface", "event global::System.Func Event;", ((TechTalk.SpecFlow.Table)(null)), "Then "); -#line hidden -#line 242 - testRunner.And("generated for struct implementation", "public event global::System.Func Event {" + - " add => @Namespace.@TypeName.Event += value; remove => @Namespace.@TypeName.Even" + - "t -= value; }", ((TechTalk.SpecFlow.Table)(null)), "And "); -#line hidden -#line 246 - testRunner.And("generated for class implementation", "public new event global::System.Func Eve" + - "nt { add => @Namespace.@TypeName.Event += value; remove => @Namespace.@TypeName." + - "Event -= value; }", ((TechTalk.SpecFlow.Table)(null)), "And "); -#line hidden -#line 250 - testRunner.And("generated for sealed class implementation", "public event global::System.Func Event {" + - " add => @Namespace.@TypeName.Event += value; remove => @Namespace.@TypeName.Even" + - "t -= value; }", ((TechTalk.SpecFlow.Table)(null)), "And "); -#line hidden -#line 254 - testRunner.And("generated for static class implementation", "public event global::System.Func Event {" + - " add => @Namespace.@TypeName.Event += value; remove => @Namespace.@TypeName.Even" + - "t -= value; }", ((TechTalk.SpecFlow.Table)(null)), "And "); -#line hidden - } - this.ScenarioCleanup(); - } - - [System.CodeDom.Compiler.GeneratedCodeAttribute("TechTalk.SpecFlow", "3.9.0.0")] - [System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - public class FixtureData : System.IDisposable - { - - public FixtureData() - { - StaticEventFeature.FeatureSetup(); - } - - void System.IDisposable.Dispose() - { - StaticEventFeature.FeatureTearDown(); - } - } - } -} -#pragma warning restore -#endregion diff --git a/Tests/Tum4ik.StinimGen.Specs/Features/Field/Field.feature b/Tests/Tum4ik.StinimGen.Specs/Features/Field/Field.feature index b05cdfa..0ad1af7 100644 --- a/Tests/Tum4ik.StinimGen.Specs/Features/Field/Field.feature +++ b/Tests/Tum4ik.StinimGen.Specs/Features/Field/Field.feature @@ -4,48 +4,56 @@ Feature: Field Scenario: Non-nullable field with keyworded type Given source member declaration """ - public nint Field; + public static object StaticField; """ When run generator for field Then generated for interface """ - nint Field { get; set; } + object StaticField { get; set; } """ And generated for struct implementation """ - public nint Field { get => _instance.Field; set => _instance.Field = value; } + public object StaticField { get => @Namespace.@TypeName.StaticField; set => @Namespace.@TypeName.StaticField = value; } """ And generated for class implementation """ - public new nint Field { get => _instance.Field; set => _instance.Field = value; } + public new object StaticField { get => @Namespace.@TypeName.StaticField; set => @Namespace.@TypeName.StaticField = value; } """ And generated for sealed class implementation """ - public nint Field { get => _instance.Field; set => _instance.Field = value; } + public object StaticField { get => @Namespace.@TypeName.StaticField; set => @Namespace.@TypeName.StaticField = value; } + """ + And generated for static class implementation + """ + public object StaticField { get => @Namespace.@TypeName.StaticField; set => @Namespace.@TypeName.StaticField = value; } """ Scenario: Nullable field with keyworded type Given source member declaration """ - public nint? Field; + public static object? StaticField; """ When run generator for field Then generated for interface """ - nint? Field { get; set; } + object? StaticField { get; set; } """ And generated for struct implementation """ - public nint? Field { get => _instance.Field; set => _instance.Field = value; } + public object? StaticField { get => @Namespace.@TypeName.StaticField; set => @Namespace.@TypeName.StaticField = value; } """ And generated for class implementation """ - public new nint? Field { get => _instance.Field; set => _instance.Field = value; } + public new object? StaticField { get => @Namespace.@TypeName.StaticField; set => @Namespace.@TypeName.StaticField = value; } """ And generated for sealed class implementation """ - public nint? Field { get => _instance.Field; set => _instance.Field = value; } + public object? StaticField { get => @Namespace.@TypeName.StaticField; set => @Namespace.@TypeName.StaticField = value; } + """ + And generated for static class implementation + """ + public object? StaticField { get => @Namespace.@TypeName.StaticField; set => @Namespace.@TypeName.StaticField = value; } """ @@ -56,24 +64,28 @@ Scenario: Non-nullable field """ And source member declaration """ - public DayOfWeek Field; + public static Delegate StaticField; """ When run generator for field Then generated for interface """ - global::System.DayOfWeek Field { get; set; } + global::System.Delegate StaticField { get; set; } """ And generated for struct implementation """ - public global::System.DayOfWeek Field { get => _instance.Field; set => _instance.Field = value; } + public global::System.Delegate StaticField { get => @Namespace.@TypeName.StaticField; set => @Namespace.@TypeName.StaticField = value; } """ And generated for class implementation """ - public new global::System.DayOfWeek Field { get => _instance.Field; set => _instance.Field = value; } + public new global::System.Delegate StaticField { get => @Namespace.@TypeName.StaticField; set => @Namespace.@TypeName.StaticField = value; } """ And generated for sealed class implementation """ - public global::System.DayOfWeek Field { get => _instance.Field; set => _instance.Field = value; } + public global::System.Delegate StaticField { get => @Namespace.@TypeName.StaticField; set => @Namespace.@TypeName.StaticField = value; } + """ + And generated for static class implementation + """ + public global::System.Delegate StaticField { get => @Namespace.@TypeName.StaticField; set => @Namespace.@TypeName.StaticField = value; } """ @@ -84,22 +96,26 @@ Scenario: Nullable field """ And source member declaration """ - public DayOfWeek? Field; + public static Delegate? StaticField; """ When run generator for field Then generated for interface """ - global::System.DayOfWeek? Field { get; set; } + global::System.Delegate? StaticField { get; set; } """ And generated for struct implementation """ - public global::System.DayOfWeek? Field { get => _instance.Field; set => _instance.Field = value; } + public global::System.Delegate? StaticField { get => @Namespace.@TypeName.StaticField; set => @Namespace.@TypeName.StaticField = value; } """ And generated for class implementation """ - public new global::System.DayOfWeek? Field { get => _instance.Field; set => _instance.Field = value; } + public new global::System.Delegate? StaticField { get => @Namespace.@TypeName.StaticField; set => @Namespace.@TypeName.StaticField = value; } """ And generated for sealed class implementation """ - public global::System.DayOfWeek? Field { get => _instance.Field; set => _instance.Field = value; } + public global::System.Delegate? StaticField { get => @Namespace.@TypeName.StaticField; set => @Namespace.@TypeName.StaticField = value; } + """ + And generated for static class implementation + """ + public global::System.Delegate? StaticField { get => @Namespace.@TypeName.StaticField; set => @Namespace.@TypeName.StaticField = value; } """ diff --git a/Tests/Tum4ik.StinimGen.Specs/Features/Field/Field.feature.cs b/Tests/Tum4ik.StinimGen.Specs/Features/Field/Field.feature.cs index 4fb62e0..4d388e7 100644 --- a/Tests/Tum4ik.StinimGen.Specs/Features/Field/Field.feature.cs +++ b/Tests/Tum4ik.StinimGen.Specs/Features/Field/Field.feature.cs @@ -99,23 +99,29 @@ public void Non_NullableFieldWithKeywordedType() { this.ScenarioStart(); #line 5 - testRunner.Given("source member declaration", "public nint Field;", ((TechTalk.SpecFlow.Table)(null)), "Given "); + testRunner.Given("source member declaration", "public static object StaticField;", ((TechTalk.SpecFlow.Table)(null)), "Given "); #line hidden #line 9 testRunner.When("run generator for field", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); #line hidden #line 10 - testRunner.Then("generated for interface", "nint Field { get; set; }", ((TechTalk.SpecFlow.Table)(null)), "Then "); + testRunner.Then("generated for interface", "object StaticField { get; set; }", ((TechTalk.SpecFlow.Table)(null)), "Then "); #line hidden #line 14 - testRunner.And("generated for struct implementation", "public nint Field { get => _instance.Field; set => _instance.Field = value; }", ((TechTalk.SpecFlow.Table)(null)), "And "); + testRunner.And("generated for struct implementation", "public object StaticField { get => @Namespace.@TypeName.StaticField; set => @Name" + + "space.@TypeName.StaticField = value; }", ((TechTalk.SpecFlow.Table)(null)), "And "); #line hidden #line 18 - testRunner.And("generated for class implementation", "public new nint Field { get => _instance.Field; set => _instance.Field = value; }" + - "", ((TechTalk.SpecFlow.Table)(null)), "And "); + testRunner.And("generated for class implementation", "public new object StaticField { get => @Namespace.@TypeName.StaticField; set => @" + + "Namespace.@TypeName.StaticField = value; }", ((TechTalk.SpecFlow.Table)(null)), "And "); #line hidden #line 22 - testRunner.And("generated for sealed class implementation", "public nint Field { get => _instance.Field; set => _instance.Field = value; }", ((TechTalk.SpecFlow.Table)(null)), "And "); + testRunner.And("generated for sealed class implementation", "public object StaticField { get => @Namespace.@TypeName.StaticField; set => @Name" + + "space.@TypeName.StaticField = value; }", ((TechTalk.SpecFlow.Table)(null)), "And "); +#line hidden +#line 26 + testRunner.And("generated for static class implementation", "public object StaticField { get => @Namespace.@TypeName.StaticField; set => @Name" + + "space.@TypeName.StaticField = value; }", ((TechTalk.SpecFlow.Table)(null)), "And "); #line hidden } this.ScenarioCleanup(); @@ -129,7 +135,7 @@ public void NullableFieldWithKeywordedType() string[] tagsOfScenario = ((string[])(null)); System.Collections.Specialized.OrderedDictionary argumentsOfScenario = new System.Collections.Specialized.OrderedDictionary(); TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("Nullable field with keyworded type", null, tagsOfScenario, argumentsOfScenario, featureTags); -#line 28 +#line 32 this.ScenarioInitialize(scenarioInfo); #line hidden if ((TagHelper.ContainsIgnoreTag(tagsOfScenario) || TagHelper.ContainsIgnoreTag(featureTags))) @@ -139,24 +145,30 @@ public void NullableFieldWithKeywordedType() else { this.ScenarioStart(); -#line 29 - testRunner.Given("source member declaration", "public nint? Field;", ((TechTalk.SpecFlow.Table)(null)), "Given "); -#line hidden #line 33 - testRunner.When("run generator for field", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); + testRunner.Given("source member declaration", "public static object? StaticField;", ((TechTalk.SpecFlow.Table)(null)), "Given "); #line hidden -#line 34 - testRunner.Then("generated for interface", "nint? Field { get; set; }", ((TechTalk.SpecFlow.Table)(null)), "Then "); +#line 37 + testRunner.When("run generator for field", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); #line hidden #line 38 - testRunner.And("generated for struct implementation", "public nint? Field { get => _instance.Field; set => _instance.Field = value; }", ((TechTalk.SpecFlow.Table)(null)), "And "); + testRunner.Then("generated for interface", "object? StaticField { get; set; }", ((TechTalk.SpecFlow.Table)(null)), "Then "); #line hidden #line 42 - testRunner.And("generated for class implementation", "public new nint? Field { get => _instance.Field; set => _instance.Field = value; " + - "}", ((TechTalk.SpecFlow.Table)(null)), "And "); + testRunner.And("generated for struct implementation", "public object? StaticField { get => @Namespace.@TypeName.StaticField; set => @Nam" + + "espace.@TypeName.StaticField = value; }", ((TechTalk.SpecFlow.Table)(null)), "And "); #line hidden #line 46 - testRunner.And("generated for sealed class implementation", "public nint? Field { get => _instance.Field; set => _instance.Field = value; }", ((TechTalk.SpecFlow.Table)(null)), "And "); + testRunner.And("generated for class implementation", "public new object? StaticField { get => @Namespace.@TypeName.StaticField; set => " + + "@Namespace.@TypeName.StaticField = value; }", ((TechTalk.SpecFlow.Table)(null)), "And "); +#line hidden +#line 50 + testRunner.And("generated for sealed class implementation", "public object? StaticField { get => @Namespace.@TypeName.StaticField; set => @Nam" + + "espace.@TypeName.StaticField = value; }", ((TechTalk.SpecFlow.Table)(null)), "And "); +#line hidden +#line 54 + testRunner.And("generated for static class implementation", "public object? StaticField { get => @Namespace.@TypeName.StaticField; set => @Nam" + + "espace.@TypeName.StaticField = value; }", ((TechTalk.SpecFlow.Table)(null)), "And "); #line hidden } this.ScenarioCleanup(); @@ -170,7 +182,7 @@ public void Non_NullableField() string[] tagsOfScenario = ((string[])(null)); System.Collections.Specialized.OrderedDictionary argumentsOfScenario = new System.Collections.Specialized.OrderedDictionary(); TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("Non-nullable field", null, tagsOfScenario, argumentsOfScenario, featureTags); -#line 52 +#line 60 this.ScenarioInitialize(scenarioInfo); #line hidden if ((TagHelper.ContainsIgnoreTag(tagsOfScenario) || TagHelper.ContainsIgnoreTag(featureTags))) @@ -180,29 +192,33 @@ public void Non_NullableField() else { this.ScenarioStart(); -#line 53 +#line 61 testRunner.Given("usings", "using System;", ((TechTalk.SpecFlow.Table)(null)), "Given "); #line hidden -#line 57 - testRunner.And("source member declaration", "public DayOfWeek Field;", ((TechTalk.SpecFlow.Table)(null)), "And "); +#line 65 + testRunner.And("source member declaration", "public static Delegate StaticField;", ((TechTalk.SpecFlow.Table)(null)), "And "); #line hidden -#line 61 +#line 69 testRunner.When("run generator for field", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); #line hidden -#line 62 - testRunner.Then("generated for interface", "global::System.DayOfWeek Field { get; set; }", ((TechTalk.SpecFlow.Table)(null)), "Then "); -#line hidden -#line 66 - testRunner.And("generated for struct implementation", "public global::System.DayOfWeek Field { get => _instance.Field; set => _instance." + - "Field = value; }", ((TechTalk.SpecFlow.Table)(null)), "And "); -#line hidden #line 70 - testRunner.And("generated for class implementation", "public new global::System.DayOfWeek Field { get => _instance.Field; set => _insta" + - "nce.Field = value; }", ((TechTalk.SpecFlow.Table)(null)), "And "); + testRunner.Then("generated for interface", "global::System.Delegate StaticField { get; set; }", ((TechTalk.SpecFlow.Table)(null)), "Then "); #line hidden #line 74 - testRunner.And("generated for sealed class implementation", "public global::System.DayOfWeek Field { get => _instance.Field; set => _instance." + - "Field = value; }", ((TechTalk.SpecFlow.Table)(null)), "And "); + testRunner.And("generated for struct implementation", "public global::System.Delegate StaticField { get => @Namespace.@TypeName.StaticFi" + + "eld; set => @Namespace.@TypeName.StaticField = value; }", ((TechTalk.SpecFlow.Table)(null)), "And "); +#line hidden +#line 78 + testRunner.And("generated for class implementation", "public new global::System.Delegate StaticField { get => @Namespace.@TypeName.Stat" + + "icField; set => @Namespace.@TypeName.StaticField = value; }", ((TechTalk.SpecFlow.Table)(null)), "And "); +#line hidden +#line 82 + testRunner.And("generated for sealed class implementation", "public global::System.Delegate StaticField { get => @Namespace.@TypeName.StaticFi" + + "eld; set => @Namespace.@TypeName.StaticField = value; }", ((TechTalk.SpecFlow.Table)(null)), "And "); +#line hidden +#line 86 + testRunner.And("generated for static class implementation", "public global::System.Delegate StaticField { get => @Namespace.@TypeName.StaticFi" + + "eld; set => @Namespace.@TypeName.StaticField = value; }", ((TechTalk.SpecFlow.Table)(null)), "And "); #line hidden } this.ScenarioCleanup(); @@ -216,7 +232,7 @@ public void NullableField() string[] tagsOfScenario = ((string[])(null)); System.Collections.Specialized.OrderedDictionary argumentsOfScenario = new System.Collections.Specialized.OrderedDictionary(); TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("Nullable field", null, tagsOfScenario, argumentsOfScenario, featureTags); -#line 80 +#line 92 this.ScenarioInitialize(scenarioInfo); #line hidden if ((TagHelper.ContainsIgnoreTag(tagsOfScenario) || TagHelper.ContainsIgnoreTag(featureTags))) @@ -226,29 +242,33 @@ public void NullableField() else { this.ScenarioStart(); -#line 81 +#line 93 testRunner.Given("usings", "using System;", ((TechTalk.SpecFlow.Table)(null)), "Given "); #line hidden -#line 85 - testRunner.And("source member declaration", "public DayOfWeek? Field;", ((TechTalk.SpecFlow.Table)(null)), "And "); +#line 97 + testRunner.And("source member declaration", "public static Delegate? StaticField;", ((TechTalk.SpecFlow.Table)(null)), "And "); #line hidden -#line 89 +#line 101 testRunner.When("run generator for field", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); #line hidden -#line 90 - testRunner.Then("generated for interface", "global::System.DayOfWeek? Field { get; set; }", ((TechTalk.SpecFlow.Table)(null)), "Then "); +#line 102 + testRunner.Then("generated for interface", "global::System.Delegate? StaticField { get; set; }", ((TechTalk.SpecFlow.Table)(null)), "Then "); +#line hidden +#line 106 + testRunner.And("generated for struct implementation", "public global::System.Delegate? StaticField { get => @Namespace.@TypeName.StaticF" + + "ield; set => @Namespace.@TypeName.StaticField = value; }", ((TechTalk.SpecFlow.Table)(null)), "And "); #line hidden -#line 94 - testRunner.And("generated for struct implementation", "public global::System.DayOfWeek? Field { get => _instance.Field; set => _instance" + - ".Field = value; }", ((TechTalk.SpecFlow.Table)(null)), "And "); +#line 110 + testRunner.And("generated for class implementation", "public new global::System.Delegate? StaticField { get => @Namespace.@TypeName.Sta" + + "ticField; set => @Namespace.@TypeName.StaticField = value; }", ((TechTalk.SpecFlow.Table)(null)), "And "); #line hidden -#line 98 - testRunner.And("generated for class implementation", "public new global::System.DayOfWeek? Field { get => _instance.Field; set => _inst" + - "ance.Field = value; }", ((TechTalk.SpecFlow.Table)(null)), "And "); +#line 114 + testRunner.And("generated for sealed class implementation", "public global::System.Delegate? StaticField { get => @Namespace.@TypeName.StaticF" + + "ield; set => @Namespace.@TypeName.StaticField = value; }", ((TechTalk.SpecFlow.Table)(null)), "And "); #line hidden -#line 102 - testRunner.And("generated for sealed class implementation", "public global::System.DayOfWeek? Field { get => _instance.Field; set => _instance" + - ".Field = value; }", ((TechTalk.SpecFlow.Table)(null)), "And "); +#line 118 + testRunner.And("generated for static class implementation", "public global::System.Delegate? StaticField { get => @Namespace.@TypeName.StaticF" + + "ield; set => @Namespace.@TypeName.StaticField = value; }", ((TechTalk.SpecFlow.Table)(null)), "And "); #line hidden } this.ScenarioCleanup(); diff --git a/Tests/Tum4ik.StinimGen.Specs/Features/Field/ReadonlyField.feature b/Tests/Tum4ik.StinimGen.Specs/Features/Field/ReadonlyField.feature index 2107a65..798151c 100644 --- a/Tests/Tum4ik.StinimGen.Specs/Features/Field/ReadonlyField.feature +++ b/Tests/Tum4ik.StinimGen.Specs/Features/Field/ReadonlyField.feature @@ -4,48 +4,56 @@ Feature: Read-only field Scenario: Non-nullable field with keyworded type Given source member declaration """ - public readonly string ReadonlyField; + public static readonly float StaticReadonlyField; """ When run generator for field Then generated for interface """ - string ReadonlyField { get; } + float StaticReadonlyField { get; } """ And generated for struct implementation """ - public string ReadonlyField { get => _instance.ReadonlyField; } + public float StaticReadonlyField { get => @Namespace.@TypeName.StaticReadonlyField; } """ And generated for class implementation """ - public new string ReadonlyField { get => _instance.ReadonlyField; } + public new float StaticReadonlyField { get => @Namespace.@TypeName.StaticReadonlyField; } """ And generated for sealed class implementation """ - public string ReadonlyField { get => _instance.ReadonlyField; } + public float StaticReadonlyField { get => @Namespace.@TypeName.StaticReadonlyField; } + """ + And generated for static class implementation + """ + public float StaticReadonlyField { get => @Namespace.@TypeName.StaticReadonlyField; } """ Scenario: Nullable field with keyworded type Given source member declaration """ - public readonly string? ReadonlyField; + public static readonly float? StaticReadonlyField; """ When run generator for field Then generated for interface """ - string? ReadonlyField { get; } + float? StaticReadonlyField { get; } """ And generated for struct implementation """ - public string? ReadonlyField { get => _instance.ReadonlyField; } + public float? StaticReadonlyField { get => @Namespace.@TypeName.StaticReadonlyField; } """ And generated for class implementation """ - public new string? ReadonlyField { get => _instance.ReadonlyField; } + public new float? StaticReadonlyField { get => @Namespace.@TypeName.StaticReadonlyField; } """ And generated for sealed class implementation """ - public string? ReadonlyField { get => _instance.ReadonlyField; } + public float? StaticReadonlyField { get => @Namespace.@TypeName.StaticReadonlyField; } + """ + And generated for static class implementation + """ + public float? StaticReadonlyField { get => @Namespace.@TypeName.StaticReadonlyField; } """ @@ -56,24 +64,28 @@ Scenario: Non-nullable field """ And source member declaration """ - public readonly DateTime ReadonlyField; + public static readonly StringComparer StaticReadonlyField; """ When run generator for field Then generated for interface """ - global::System.DateTime ReadonlyField { get; } + global::System.StringComparer StaticReadonlyField { get; } """ And generated for struct implementation """ - public global::System.DateTime ReadonlyField { get => _instance.ReadonlyField; } + public global::System.StringComparer StaticReadonlyField { get => @Namespace.@TypeName.StaticReadonlyField; } """ And generated for class implementation """ - public new global::System.DateTime ReadonlyField { get => _instance.ReadonlyField; } + public new global::System.StringComparer StaticReadonlyField { get => @Namespace.@TypeName.StaticReadonlyField; } """ And generated for sealed class implementation """ - public global::System.DateTime ReadonlyField { get => _instance.ReadonlyField; } + public global::System.StringComparer StaticReadonlyField { get => @Namespace.@TypeName.StaticReadonlyField; } + """ + And generated for static class implementation + """ + public global::System.StringComparer StaticReadonlyField { get => @Namespace.@TypeName.StaticReadonlyField; } """ @@ -84,22 +96,26 @@ Scenario: Nullable field """ And source member declaration """ - public readonly DateTime? ReadonlyField; + public static readonly StringComparer? StaticReadonlyField; """ When run generator for field Then generated for interface """ - global::System.DateTime? ReadonlyField { get; } + global::System.StringComparer? StaticReadonlyField { get; } """ And generated for struct implementation """ - public global::System.DateTime? ReadonlyField { get => _instance.ReadonlyField; } + public global::System.StringComparer? StaticReadonlyField { get => @Namespace.@TypeName.StaticReadonlyField; } """ And generated for class implementation """ - public new global::System.DateTime? ReadonlyField { get => _instance.ReadonlyField; } + public new global::System.StringComparer? StaticReadonlyField { get => @Namespace.@TypeName.StaticReadonlyField; } """ And generated for sealed class implementation """ - public global::System.DateTime? ReadonlyField { get => _instance.ReadonlyField; } + public global::System.StringComparer? StaticReadonlyField { get => @Namespace.@TypeName.StaticReadonlyField; } + """ + And generated for static class implementation + """ + public global::System.StringComparer? StaticReadonlyField { get => @Namespace.@TypeName.StaticReadonlyField; } """ diff --git a/Tests/Tum4ik.StinimGen.Specs/Features/Field/ReadonlyField.feature.cs b/Tests/Tum4ik.StinimGen.Specs/Features/Field/ReadonlyField.feature.cs index c45e6e3..cdb8ba7 100644 --- a/Tests/Tum4ik.StinimGen.Specs/Features/Field/ReadonlyField.feature.cs +++ b/Tests/Tum4ik.StinimGen.Specs/Features/Field/ReadonlyField.feature.cs @@ -99,22 +99,29 @@ public void Non_NullableFieldWithKeywordedType() { this.ScenarioStart(); #line 5 - testRunner.Given("source member declaration", "public readonly string ReadonlyField;", ((TechTalk.SpecFlow.Table)(null)), "Given "); + testRunner.Given("source member declaration", "public static readonly float StaticReadonlyField;", ((TechTalk.SpecFlow.Table)(null)), "Given "); #line hidden #line 9 testRunner.When("run generator for field", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); #line hidden #line 10 - testRunner.Then("generated for interface", "string ReadonlyField { get; }", ((TechTalk.SpecFlow.Table)(null)), "Then "); + testRunner.Then("generated for interface", "float StaticReadonlyField { get; }", ((TechTalk.SpecFlow.Table)(null)), "Then "); #line hidden #line 14 - testRunner.And("generated for struct implementation", "public string ReadonlyField { get => _instance.ReadonlyField; }", ((TechTalk.SpecFlow.Table)(null)), "And "); + testRunner.And("generated for struct implementation", "public float StaticReadonlyField { get => @Namespace.@TypeName.StaticReadonlyFiel" + + "d; }", ((TechTalk.SpecFlow.Table)(null)), "And "); #line hidden #line 18 - testRunner.And("generated for class implementation", "public new string ReadonlyField { get => _instance.ReadonlyField; }", ((TechTalk.SpecFlow.Table)(null)), "And "); + testRunner.And("generated for class implementation", "public new float StaticReadonlyField { get => @Namespace.@TypeName.StaticReadonly" + + "Field; }", ((TechTalk.SpecFlow.Table)(null)), "And "); #line hidden #line 22 - testRunner.And("generated for sealed class implementation", "public string ReadonlyField { get => _instance.ReadonlyField; }", ((TechTalk.SpecFlow.Table)(null)), "And "); + testRunner.And("generated for sealed class implementation", "public float StaticReadonlyField { get => @Namespace.@TypeName.StaticReadonlyFiel" + + "d; }", ((TechTalk.SpecFlow.Table)(null)), "And "); +#line hidden +#line 26 + testRunner.And("generated for static class implementation", "public float StaticReadonlyField { get => @Namespace.@TypeName.StaticReadonlyFiel" + + "d; }", ((TechTalk.SpecFlow.Table)(null)), "And "); #line hidden } this.ScenarioCleanup(); @@ -128,7 +135,7 @@ public void NullableFieldWithKeywordedType() string[] tagsOfScenario = ((string[])(null)); System.Collections.Specialized.OrderedDictionary argumentsOfScenario = new System.Collections.Specialized.OrderedDictionary(); TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("Nullable field with keyworded type", null, tagsOfScenario, argumentsOfScenario, featureTags); -#line 28 +#line 32 this.ScenarioInitialize(scenarioInfo); #line hidden if ((TagHelper.ContainsIgnoreTag(tagsOfScenario) || TagHelper.ContainsIgnoreTag(featureTags))) @@ -138,23 +145,30 @@ public void NullableFieldWithKeywordedType() else { this.ScenarioStart(); -#line 29 - testRunner.Given("source member declaration", "public readonly string? ReadonlyField;", ((TechTalk.SpecFlow.Table)(null)), "Given "); -#line hidden #line 33 - testRunner.When("run generator for field", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); + testRunner.Given("source member declaration", "public static readonly float? StaticReadonlyField;", ((TechTalk.SpecFlow.Table)(null)), "Given "); #line hidden -#line 34 - testRunner.Then("generated for interface", "string? ReadonlyField { get; }", ((TechTalk.SpecFlow.Table)(null)), "Then "); +#line 37 + testRunner.When("run generator for field", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); #line hidden #line 38 - testRunner.And("generated for struct implementation", "public string? ReadonlyField { get => _instance.ReadonlyField; }", ((TechTalk.SpecFlow.Table)(null)), "And "); + testRunner.Then("generated for interface", "float? StaticReadonlyField { get; }", ((TechTalk.SpecFlow.Table)(null)), "Then "); #line hidden #line 42 - testRunner.And("generated for class implementation", "public new string? ReadonlyField { get => _instance.ReadonlyField; }", ((TechTalk.SpecFlow.Table)(null)), "And "); + testRunner.And("generated for struct implementation", "public float? StaticReadonlyField { get => @Namespace.@TypeName.StaticReadonlyFie" + + "ld; }", ((TechTalk.SpecFlow.Table)(null)), "And "); #line hidden #line 46 - testRunner.And("generated for sealed class implementation", "public string? ReadonlyField { get => _instance.ReadonlyField; }", ((TechTalk.SpecFlow.Table)(null)), "And "); + testRunner.And("generated for class implementation", "public new float? StaticReadonlyField { get => @Namespace.@TypeName.StaticReadonl" + + "yField; }", ((TechTalk.SpecFlow.Table)(null)), "And "); +#line hidden +#line 50 + testRunner.And("generated for sealed class implementation", "public float? StaticReadonlyField { get => @Namespace.@TypeName.StaticReadonlyFie" + + "ld; }", ((TechTalk.SpecFlow.Table)(null)), "And "); +#line hidden +#line 54 + testRunner.And("generated for static class implementation", "public float? StaticReadonlyField { get => @Namespace.@TypeName.StaticReadonlyFie" + + "ld; }", ((TechTalk.SpecFlow.Table)(null)), "And "); #line hidden } this.ScenarioCleanup(); @@ -168,7 +182,7 @@ public void Non_NullableField() string[] tagsOfScenario = ((string[])(null)); System.Collections.Specialized.OrderedDictionary argumentsOfScenario = new System.Collections.Specialized.OrderedDictionary(); TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("Non-nullable field", null, tagsOfScenario, argumentsOfScenario, featureTags); -#line 52 +#line 60 this.ScenarioInitialize(scenarioInfo); #line hidden if ((TagHelper.ContainsIgnoreTag(tagsOfScenario) || TagHelper.ContainsIgnoreTag(featureTags))) @@ -178,27 +192,33 @@ public void Non_NullableField() else { this.ScenarioStart(); -#line 53 +#line 61 testRunner.Given("usings", "using System;", ((TechTalk.SpecFlow.Table)(null)), "Given "); #line hidden -#line 57 - testRunner.And("source member declaration", "public readonly DateTime ReadonlyField;", ((TechTalk.SpecFlow.Table)(null)), "And "); +#line 65 + testRunner.And("source member declaration", "public static readonly StringComparer StaticReadonlyField;", ((TechTalk.SpecFlow.Table)(null)), "And "); #line hidden -#line 61 +#line 69 testRunner.When("run generator for field", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); #line hidden -#line 62 - testRunner.Then("generated for interface", "global::System.DateTime ReadonlyField { get; }", ((TechTalk.SpecFlow.Table)(null)), "Then "); -#line hidden -#line 66 - testRunner.And("generated for struct implementation", "public global::System.DateTime ReadonlyField { get => _instance.ReadonlyField; }", ((TechTalk.SpecFlow.Table)(null)), "And "); -#line hidden #line 70 - testRunner.And("generated for class implementation", "public new global::System.DateTime ReadonlyField { get => _instance.ReadonlyField" + - "; }", ((TechTalk.SpecFlow.Table)(null)), "And "); + testRunner.Then("generated for interface", "global::System.StringComparer StaticReadonlyField { get; }", ((TechTalk.SpecFlow.Table)(null)), "Then "); #line hidden #line 74 - testRunner.And("generated for sealed class implementation", "public global::System.DateTime ReadonlyField { get => _instance.ReadonlyField; }", ((TechTalk.SpecFlow.Table)(null)), "And "); + testRunner.And("generated for struct implementation", "public global::System.StringComparer StaticReadonlyField { get => @Namespace.@Typ" + + "eName.StaticReadonlyField; }", ((TechTalk.SpecFlow.Table)(null)), "And "); +#line hidden +#line 78 + testRunner.And("generated for class implementation", "public new global::System.StringComparer StaticReadonlyField { get => @Namespace." + + "@TypeName.StaticReadonlyField; }", ((TechTalk.SpecFlow.Table)(null)), "And "); +#line hidden +#line 82 + testRunner.And("generated for sealed class implementation", "public global::System.StringComparer StaticReadonlyField { get => @Namespace.@Typ" + + "eName.StaticReadonlyField; }", ((TechTalk.SpecFlow.Table)(null)), "And "); +#line hidden +#line 86 + testRunner.And("generated for static class implementation", "public global::System.StringComparer StaticReadonlyField { get => @Namespace.@Typ" + + "eName.StaticReadonlyField; }", ((TechTalk.SpecFlow.Table)(null)), "And "); #line hidden } this.ScenarioCleanup(); @@ -212,7 +232,7 @@ public void NullableField() string[] tagsOfScenario = ((string[])(null)); System.Collections.Specialized.OrderedDictionary argumentsOfScenario = new System.Collections.Specialized.OrderedDictionary(); TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("Nullable field", null, tagsOfScenario, argumentsOfScenario, featureTags); -#line 80 +#line 92 this.ScenarioInitialize(scenarioInfo); #line hidden if ((TagHelper.ContainsIgnoreTag(tagsOfScenario) || TagHelper.ContainsIgnoreTag(featureTags))) @@ -222,29 +242,33 @@ public void NullableField() else { this.ScenarioStart(); -#line 81 +#line 93 testRunner.Given("usings", "using System;", ((TechTalk.SpecFlow.Table)(null)), "Given "); #line hidden -#line 85 - testRunner.And("source member declaration", "public readonly DateTime? ReadonlyField;", ((TechTalk.SpecFlow.Table)(null)), "And "); +#line 97 + testRunner.And("source member declaration", "public static readonly StringComparer? StaticReadonlyField;", ((TechTalk.SpecFlow.Table)(null)), "And "); #line hidden -#line 89 +#line 101 testRunner.When("run generator for field", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); #line hidden -#line 90 - testRunner.Then("generated for interface", "global::System.DateTime? ReadonlyField { get; }", ((TechTalk.SpecFlow.Table)(null)), "Then "); +#line 102 + testRunner.Then("generated for interface", "global::System.StringComparer? StaticReadonlyField { get; }", ((TechTalk.SpecFlow.Table)(null)), "Then "); #line hidden -#line 94 - testRunner.And("generated for struct implementation", "public global::System.DateTime? ReadonlyField { get => _instance.ReadonlyField; }" + - "", ((TechTalk.SpecFlow.Table)(null)), "And "); +#line 106 + testRunner.And("generated for struct implementation", "public global::System.StringComparer? StaticReadonlyField { get => @Namespace.@Ty" + + "peName.StaticReadonlyField; }", ((TechTalk.SpecFlow.Table)(null)), "And "); #line hidden -#line 98 - testRunner.And("generated for class implementation", "public new global::System.DateTime? ReadonlyField { get => _instance.ReadonlyFiel" + - "d; }", ((TechTalk.SpecFlow.Table)(null)), "And "); +#line 110 + testRunner.And("generated for class implementation", "public new global::System.StringComparer? StaticReadonlyField { get => @Namespace" + + ".@TypeName.StaticReadonlyField; }", ((TechTalk.SpecFlow.Table)(null)), "And "); #line hidden -#line 102 - testRunner.And("generated for sealed class implementation", "public global::System.DateTime? ReadonlyField { get => _instance.ReadonlyField; }" + - "", ((TechTalk.SpecFlow.Table)(null)), "And "); +#line 114 + testRunner.And("generated for sealed class implementation", "public global::System.StringComparer? StaticReadonlyField { get => @Namespace.@Ty" + + "peName.StaticReadonlyField; }", ((TechTalk.SpecFlow.Table)(null)), "And "); +#line hidden +#line 118 + testRunner.And("generated for static class implementation", "public global::System.StringComparer? StaticReadonlyField { get => @Namespace.@Ty" + + "peName.StaticReadonlyField; }", ((TechTalk.SpecFlow.Table)(null)), "And "); #line hidden } this.ScenarioCleanup(); diff --git a/Tests/Tum4ik.StinimGen.Specs/Features/Field/StaticField.feature b/Tests/Tum4ik.StinimGen.Specs/Features/Field/StaticField.feature deleted file mode 100644 index 18e300d..0000000 --- a/Tests/Tum4ik.StinimGen.Specs/Features/Field/StaticField.feature +++ /dev/null @@ -1,121 +0,0 @@ -Feature: Static field - - -Scenario: Non-nullable field with keyworded type - Given source member declaration - """ - public static object StaticField; - """ - When run generator for field - Then generated for interface - """ - object StaticField { get; set; } - """ - And generated for struct implementation - """ - public object StaticField { get => @Namespace.@TypeName.StaticField; set => @Namespace.@TypeName.StaticField = value; } - """ - And generated for class implementation - """ - public new object StaticField { get => @Namespace.@TypeName.StaticField; set => @Namespace.@TypeName.StaticField = value; } - """ - And generated for sealed class implementation - """ - public object StaticField { get => @Namespace.@TypeName.StaticField; set => @Namespace.@TypeName.StaticField = value; } - """ - And generated for static class implementation - """ - public object StaticField { get => @Namespace.@TypeName.StaticField; set => @Namespace.@TypeName.StaticField = value; } - """ - - -Scenario: Nullable field with keyworded type - Given source member declaration - """ - public static object? StaticField; - """ - When run generator for field - Then generated for interface - """ - object? StaticField { get; set; } - """ - And generated for struct implementation - """ - public object? StaticField { get => @Namespace.@TypeName.StaticField; set => @Namespace.@TypeName.StaticField = value; } - """ - And generated for class implementation - """ - public new object? StaticField { get => @Namespace.@TypeName.StaticField; set => @Namespace.@TypeName.StaticField = value; } - """ - And generated for sealed class implementation - """ - public object? StaticField { get => @Namespace.@TypeName.StaticField; set => @Namespace.@TypeName.StaticField = value; } - """ - And generated for static class implementation - """ - public object? StaticField { get => @Namespace.@TypeName.StaticField; set => @Namespace.@TypeName.StaticField = value; } - """ - - -Scenario: Non-nullable field - Given usings - """ - using System; - """ - And source member declaration - """ - public static Delegate StaticField; - """ - When run generator for field - Then generated for interface - """ - global::System.Delegate StaticField { get; set; } - """ - And generated for struct implementation - """ - public global::System.Delegate StaticField { get => @Namespace.@TypeName.StaticField; set => @Namespace.@TypeName.StaticField = value; } - """ - And generated for class implementation - """ - public new global::System.Delegate StaticField { get => @Namespace.@TypeName.StaticField; set => @Namespace.@TypeName.StaticField = value; } - """ - And generated for sealed class implementation - """ - public global::System.Delegate StaticField { get => @Namespace.@TypeName.StaticField; set => @Namespace.@TypeName.StaticField = value; } - """ - And generated for static class implementation - """ - public global::System.Delegate StaticField { get => @Namespace.@TypeName.StaticField; set => @Namespace.@TypeName.StaticField = value; } - """ - - -Scenario: Nullable field - Given usings - """ - using System; - """ - And source member declaration - """ - public static Delegate? StaticField; - """ - When run generator for field - Then generated for interface - """ - global::System.Delegate? StaticField { get; set; } - """ - And generated for struct implementation - """ - public global::System.Delegate? StaticField { get => @Namespace.@TypeName.StaticField; set => @Namespace.@TypeName.StaticField = value; } - """ - And generated for class implementation - """ - public new global::System.Delegate? StaticField { get => @Namespace.@TypeName.StaticField; set => @Namespace.@TypeName.StaticField = value; } - """ - And generated for sealed class implementation - """ - public global::System.Delegate? StaticField { get => @Namespace.@TypeName.StaticField; set => @Namespace.@TypeName.StaticField = value; } - """ - And generated for static class implementation - """ - public global::System.Delegate? StaticField { get => @Namespace.@TypeName.StaticField; set => @Namespace.@TypeName.StaticField = value; } - """ diff --git a/Tests/Tum4ik.StinimGen.Specs/Features/Field/StaticField.feature.cs b/Tests/Tum4ik.StinimGen.Specs/Features/Field/StaticField.feature.cs deleted file mode 100644 index 524b377..0000000 --- a/Tests/Tum4ik.StinimGen.Specs/Features/Field/StaticField.feature.cs +++ /dev/null @@ -1,295 +0,0 @@ -// ------------------------------------------------------------------------------ -// -// This code was generated by SpecFlow (https://www.specflow.org/). -// SpecFlow Version:3.9.0.0 -// SpecFlow Generator Version:3.9.0.0 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -// ------------------------------------------------------------------------------ -#region Designer generated code -#pragma warning disable -namespace Tum4ik.StinimGen.Specs.Features.Field -{ - using TechTalk.SpecFlow; - using System; - using System.Linq; - - - [System.CodeDom.Compiler.GeneratedCodeAttribute("TechTalk.SpecFlow", "3.9.0.0")] - [System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - public partial class StaticFieldFeature : object, Xunit.IClassFixture, System.IDisposable - { - - private static TechTalk.SpecFlow.ITestRunner testRunner; - - private static string[] featureTags = ((string[])(null)); - - private Xunit.Abstractions.ITestOutputHelper _testOutputHelper; - -#line 1 "StaticField.feature" -#line hidden - - public StaticFieldFeature(StaticFieldFeature.FixtureData fixtureData, Tum4ik_StinimGen_Specs_XUnitAssemblyFixture assemblyFixture, Xunit.Abstractions.ITestOutputHelper testOutputHelper) - { - this._testOutputHelper = testOutputHelper; - this.TestInitialize(); - } - - public static void FeatureSetup() - { - testRunner = TechTalk.SpecFlow.TestRunnerManager.GetTestRunner(); - TechTalk.SpecFlow.FeatureInfo featureInfo = new TechTalk.SpecFlow.FeatureInfo(new System.Globalization.CultureInfo("en-US"), "Features/Field", "Static field", null, ProgrammingLanguage.CSharp, featureTags); - testRunner.OnFeatureStart(featureInfo); - } - - public static void FeatureTearDown() - { - testRunner.OnFeatureEnd(); - testRunner = null; - } - - public void TestInitialize() - { - } - - public void TestTearDown() - { - testRunner.OnScenarioEnd(); - } - - public void ScenarioInitialize(TechTalk.SpecFlow.ScenarioInfo scenarioInfo) - { - testRunner.OnScenarioInitialize(scenarioInfo); - testRunner.ScenarioContext.ScenarioContainer.RegisterInstanceAs(_testOutputHelper); - } - - public void ScenarioStart() - { - testRunner.OnScenarioStart(); - } - - public void ScenarioCleanup() - { - testRunner.CollectScenarioErrors(); - } - - void System.IDisposable.Dispose() - { - this.TestTearDown(); - } - - [Xunit.SkippableFactAttribute(DisplayName="Non-nullable field with keyworded type")] - [Xunit.TraitAttribute("FeatureTitle", "Static field")] - [Xunit.TraitAttribute("Description", "Non-nullable field with keyworded type")] - public void Non_NullableFieldWithKeywordedType() - { - string[] tagsOfScenario = ((string[])(null)); - System.Collections.Specialized.OrderedDictionary argumentsOfScenario = new System.Collections.Specialized.OrderedDictionary(); - TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("Non-nullable field with keyworded type", null, tagsOfScenario, argumentsOfScenario, featureTags); -#line 4 -this.ScenarioInitialize(scenarioInfo); -#line hidden - if ((TagHelper.ContainsIgnoreTag(tagsOfScenario) || TagHelper.ContainsIgnoreTag(featureTags))) - { - testRunner.SkipScenario(); - } - else - { - this.ScenarioStart(); -#line 5 - testRunner.Given("source member declaration", "public static object StaticField;", ((TechTalk.SpecFlow.Table)(null)), "Given "); -#line hidden -#line 9 - testRunner.When("run generator for field", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); -#line hidden -#line 10 - testRunner.Then("generated for interface", "object StaticField { get; set; }", ((TechTalk.SpecFlow.Table)(null)), "Then "); -#line hidden -#line 14 - testRunner.And("generated for struct implementation", "public object StaticField { get => @Namespace.@TypeName.StaticField; set => @Name" + - "space.@TypeName.StaticField = value; }", ((TechTalk.SpecFlow.Table)(null)), "And "); -#line hidden -#line 18 - testRunner.And("generated for class implementation", "public new object StaticField { get => @Namespace.@TypeName.StaticField; set => @" + - "Namespace.@TypeName.StaticField = value; }", ((TechTalk.SpecFlow.Table)(null)), "And "); -#line hidden -#line 22 - testRunner.And("generated for sealed class implementation", "public object StaticField { get => @Namespace.@TypeName.StaticField; set => @Name" + - "space.@TypeName.StaticField = value; }", ((TechTalk.SpecFlow.Table)(null)), "And "); -#line hidden -#line 26 - testRunner.And("generated for static class implementation", "public object StaticField { get => @Namespace.@TypeName.StaticField; set => @Name" + - "space.@TypeName.StaticField = value; }", ((TechTalk.SpecFlow.Table)(null)), "And "); -#line hidden - } - this.ScenarioCleanup(); - } - - [Xunit.SkippableFactAttribute(DisplayName="Nullable field with keyworded type")] - [Xunit.TraitAttribute("FeatureTitle", "Static field")] - [Xunit.TraitAttribute("Description", "Nullable field with keyworded type")] - public void NullableFieldWithKeywordedType() - { - string[] tagsOfScenario = ((string[])(null)); - System.Collections.Specialized.OrderedDictionary argumentsOfScenario = new System.Collections.Specialized.OrderedDictionary(); - TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("Nullable field with keyworded type", null, tagsOfScenario, argumentsOfScenario, featureTags); -#line 32 -this.ScenarioInitialize(scenarioInfo); -#line hidden - if ((TagHelper.ContainsIgnoreTag(tagsOfScenario) || TagHelper.ContainsIgnoreTag(featureTags))) - { - testRunner.SkipScenario(); - } - else - { - this.ScenarioStart(); -#line 33 - testRunner.Given("source member declaration", "public static object? StaticField;", ((TechTalk.SpecFlow.Table)(null)), "Given "); -#line hidden -#line 37 - testRunner.When("run generator for field", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); -#line hidden -#line 38 - testRunner.Then("generated for interface", "object? StaticField { get; set; }", ((TechTalk.SpecFlow.Table)(null)), "Then "); -#line hidden -#line 42 - testRunner.And("generated for struct implementation", "public object? StaticField { get => @Namespace.@TypeName.StaticField; set => @Nam" + - "espace.@TypeName.StaticField = value; }", ((TechTalk.SpecFlow.Table)(null)), "And "); -#line hidden -#line 46 - testRunner.And("generated for class implementation", "public new object? StaticField { get => @Namespace.@TypeName.StaticField; set => " + - "@Namespace.@TypeName.StaticField = value; }", ((TechTalk.SpecFlow.Table)(null)), "And "); -#line hidden -#line 50 - testRunner.And("generated for sealed class implementation", "public object? StaticField { get => @Namespace.@TypeName.StaticField; set => @Nam" + - "espace.@TypeName.StaticField = value; }", ((TechTalk.SpecFlow.Table)(null)), "And "); -#line hidden -#line 54 - testRunner.And("generated for static class implementation", "public object? StaticField { get => @Namespace.@TypeName.StaticField; set => @Nam" + - "espace.@TypeName.StaticField = value; }", ((TechTalk.SpecFlow.Table)(null)), "And "); -#line hidden - } - this.ScenarioCleanup(); - } - - [Xunit.SkippableFactAttribute(DisplayName="Non-nullable field")] - [Xunit.TraitAttribute("FeatureTitle", "Static field")] - [Xunit.TraitAttribute("Description", "Non-nullable field")] - public void Non_NullableField() - { - string[] tagsOfScenario = ((string[])(null)); - System.Collections.Specialized.OrderedDictionary argumentsOfScenario = new System.Collections.Specialized.OrderedDictionary(); - TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("Non-nullable field", null, tagsOfScenario, argumentsOfScenario, featureTags); -#line 60 -this.ScenarioInitialize(scenarioInfo); -#line hidden - if ((TagHelper.ContainsIgnoreTag(tagsOfScenario) || TagHelper.ContainsIgnoreTag(featureTags))) - { - testRunner.SkipScenario(); - } - else - { - this.ScenarioStart(); -#line 61 - testRunner.Given("usings", "using System;", ((TechTalk.SpecFlow.Table)(null)), "Given "); -#line hidden -#line 65 - testRunner.And("source member declaration", "public static Delegate StaticField;", ((TechTalk.SpecFlow.Table)(null)), "And "); -#line hidden -#line 69 - testRunner.When("run generator for field", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); -#line hidden -#line 70 - testRunner.Then("generated for interface", "global::System.Delegate StaticField { get; set; }", ((TechTalk.SpecFlow.Table)(null)), "Then "); -#line hidden -#line 74 - testRunner.And("generated for struct implementation", "public global::System.Delegate StaticField { get => @Namespace.@TypeName.StaticFi" + - "eld; set => @Namespace.@TypeName.StaticField = value; }", ((TechTalk.SpecFlow.Table)(null)), "And "); -#line hidden -#line 78 - testRunner.And("generated for class implementation", "public new global::System.Delegate StaticField { get => @Namespace.@TypeName.Stat" + - "icField; set => @Namespace.@TypeName.StaticField = value; }", ((TechTalk.SpecFlow.Table)(null)), "And "); -#line hidden -#line 82 - testRunner.And("generated for sealed class implementation", "public global::System.Delegate StaticField { get => @Namespace.@TypeName.StaticFi" + - "eld; set => @Namespace.@TypeName.StaticField = value; }", ((TechTalk.SpecFlow.Table)(null)), "And "); -#line hidden -#line 86 - testRunner.And("generated for static class implementation", "public global::System.Delegate StaticField { get => @Namespace.@TypeName.StaticFi" + - "eld; set => @Namespace.@TypeName.StaticField = value; }", ((TechTalk.SpecFlow.Table)(null)), "And "); -#line hidden - } - this.ScenarioCleanup(); - } - - [Xunit.SkippableFactAttribute(DisplayName="Nullable field")] - [Xunit.TraitAttribute("FeatureTitle", "Static field")] - [Xunit.TraitAttribute("Description", "Nullable field")] - public void NullableField() - { - string[] tagsOfScenario = ((string[])(null)); - System.Collections.Specialized.OrderedDictionary argumentsOfScenario = new System.Collections.Specialized.OrderedDictionary(); - TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("Nullable field", null, tagsOfScenario, argumentsOfScenario, featureTags); -#line 92 -this.ScenarioInitialize(scenarioInfo); -#line hidden - if ((TagHelper.ContainsIgnoreTag(tagsOfScenario) || TagHelper.ContainsIgnoreTag(featureTags))) - { - testRunner.SkipScenario(); - } - else - { - this.ScenarioStart(); -#line 93 - testRunner.Given("usings", "using System;", ((TechTalk.SpecFlow.Table)(null)), "Given "); -#line hidden -#line 97 - testRunner.And("source member declaration", "public static Delegate? StaticField;", ((TechTalk.SpecFlow.Table)(null)), "And "); -#line hidden -#line 101 - testRunner.When("run generator for field", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); -#line hidden -#line 102 - testRunner.Then("generated for interface", "global::System.Delegate? StaticField { get; set; }", ((TechTalk.SpecFlow.Table)(null)), "Then "); -#line hidden -#line 106 - testRunner.And("generated for struct implementation", "public global::System.Delegate? StaticField { get => @Namespace.@TypeName.StaticF" + - "ield; set => @Namespace.@TypeName.StaticField = value; }", ((TechTalk.SpecFlow.Table)(null)), "And "); -#line hidden -#line 110 - testRunner.And("generated for class implementation", "public new global::System.Delegate? StaticField { get => @Namespace.@TypeName.Sta" + - "ticField; set => @Namespace.@TypeName.StaticField = value; }", ((TechTalk.SpecFlow.Table)(null)), "And "); -#line hidden -#line 114 - testRunner.And("generated for sealed class implementation", "public global::System.Delegate? StaticField { get => @Namespace.@TypeName.StaticF" + - "ield; set => @Namespace.@TypeName.StaticField = value; }", ((TechTalk.SpecFlow.Table)(null)), "And "); -#line hidden -#line 118 - testRunner.And("generated for static class implementation", "public global::System.Delegate? StaticField { get => @Namespace.@TypeName.StaticF" + - "ield; set => @Namespace.@TypeName.StaticField = value; }", ((TechTalk.SpecFlow.Table)(null)), "And "); -#line hidden - } - this.ScenarioCleanup(); - } - - [System.CodeDom.Compiler.GeneratedCodeAttribute("TechTalk.SpecFlow", "3.9.0.0")] - [System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - public class FixtureData : System.IDisposable - { - - public FixtureData() - { - StaticFieldFeature.FeatureSetup(); - } - - void System.IDisposable.Dispose() - { - StaticFieldFeature.FeatureTearDown(); - } - } - } -} -#pragma warning restore -#endregion diff --git a/Tests/Tum4ik.StinimGen.Specs/Features/Field/StaticReadonlyField.feature b/Tests/Tum4ik.StinimGen.Specs/Features/Field/StaticReadonlyField.feature deleted file mode 100644 index 72ad442..0000000 --- a/Tests/Tum4ik.StinimGen.Specs/Features/Field/StaticReadonlyField.feature +++ /dev/null @@ -1,121 +0,0 @@ -Feature: Static read-only field - - -Scenario: Non-nullable field with keyworded type - Given source member declaration - """ - public static readonly float StaticReadonlyField; - """ - When run generator for field - Then generated for interface - """ - float StaticReadonlyField { get; } - """ - And generated for struct implementation - """ - public float StaticReadonlyField { get => @Namespace.@TypeName.StaticReadonlyField; } - """ - And generated for class implementation - """ - public new float StaticReadonlyField { get => @Namespace.@TypeName.StaticReadonlyField; } - """ - And generated for sealed class implementation - """ - public float StaticReadonlyField { get => @Namespace.@TypeName.StaticReadonlyField; } - """ - And generated for static class implementation - """ - public float StaticReadonlyField { get => @Namespace.@TypeName.StaticReadonlyField; } - """ - - -Scenario: Nullable field with keyworded type - Given source member declaration - """ - public static readonly float? StaticReadonlyField; - """ - When run generator for field - Then generated for interface - """ - float? StaticReadonlyField { get; } - """ - And generated for struct implementation - """ - public float? StaticReadonlyField { get => @Namespace.@TypeName.StaticReadonlyField; } - """ - And generated for class implementation - """ - public new float? StaticReadonlyField { get => @Namespace.@TypeName.StaticReadonlyField; } - """ - And generated for sealed class implementation - """ - public float? StaticReadonlyField { get => @Namespace.@TypeName.StaticReadonlyField; } - """ - And generated for static class implementation - """ - public float? StaticReadonlyField { get => @Namespace.@TypeName.StaticReadonlyField; } - """ - - -Scenario: Non-nullable field - Given usings - """ - using System; - """ - And source member declaration - """ - public static readonly StringComparer StaticReadonlyField; - """ - When run generator for field - Then generated for interface - """ - global::System.StringComparer StaticReadonlyField { get; } - """ - And generated for struct implementation - """ - public global::System.StringComparer StaticReadonlyField { get => @Namespace.@TypeName.StaticReadonlyField; } - """ - And generated for class implementation - """ - public new global::System.StringComparer StaticReadonlyField { get => @Namespace.@TypeName.StaticReadonlyField; } - """ - And generated for sealed class implementation - """ - public global::System.StringComparer StaticReadonlyField { get => @Namespace.@TypeName.StaticReadonlyField; } - """ - And generated for static class implementation - """ - public global::System.StringComparer StaticReadonlyField { get => @Namespace.@TypeName.StaticReadonlyField; } - """ - - -Scenario: Nullable field - Given usings - """ - using System; - """ - And source member declaration - """ - public static readonly StringComparer? StaticReadonlyField; - """ - When run generator for field - Then generated for interface - """ - global::System.StringComparer? StaticReadonlyField { get; } - """ - And generated for struct implementation - """ - public global::System.StringComparer? StaticReadonlyField { get => @Namespace.@TypeName.StaticReadonlyField; } - """ - And generated for class implementation - """ - public new global::System.StringComparer? StaticReadonlyField { get => @Namespace.@TypeName.StaticReadonlyField; } - """ - And generated for sealed class implementation - """ - public global::System.StringComparer? StaticReadonlyField { get => @Namespace.@TypeName.StaticReadonlyField; } - """ - And generated for static class implementation - """ - public global::System.StringComparer? StaticReadonlyField { get => @Namespace.@TypeName.StaticReadonlyField; } - """ diff --git a/Tests/Tum4ik.StinimGen.Specs/Features/Field/StaticReadonlyField.feature.cs b/Tests/Tum4ik.StinimGen.Specs/Features/Field/StaticReadonlyField.feature.cs deleted file mode 100644 index cfec125..0000000 --- a/Tests/Tum4ik.StinimGen.Specs/Features/Field/StaticReadonlyField.feature.cs +++ /dev/null @@ -1,295 +0,0 @@ -// ------------------------------------------------------------------------------ -// -// This code was generated by SpecFlow (https://www.specflow.org/). -// SpecFlow Version:3.9.0.0 -// SpecFlow Generator Version:3.9.0.0 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -// ------------------------------------------------------------------------------ -#region Designer generated code -#pragma warning disable -namespace Tum4ik.StinimGen.Specs.Features.Field -{ - using TechTalk.SpecFlow; - using System; - using System.Linq; - - - [System.CodeDom.Compiler.GeneratedCodeAttribute("TechTalk.SpecFlow", "3.9.0.0")] - [System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - public partial class StaticRead_OnlyFieldFeature : object, Xunit.IClassFixture, System.IDisposable - { - - private static TechTalk.SpecFlow.ITestRunner testRunner; - - private static string[] featureTags = ((string[])(null)); - - private Xunit.Abstractions.ITestOutputHelper _testOutputHelper; - -#line 1 "StaticReadonlyField.feature" -#line hidden - - public StaticRead_OnlyFieldFeature(StaticRead_OnlyFieldFeature.FixtureData fixtureData, Tum4ik_StinimGen_Specs_XUnitAssemblyFixture assemblyFixture, Xunit.Abstractions.ITestOutputHelper testOutputHelper) - { - this._testOutputHelper = testOutputHelper; - this.TestInitialize(); - } - - public static void FeatureSetup() - { - testRunner = TechTalk.SpecFlow.TestRunnerManager.GetTestRunner(); - TechTalk.SpecFlow.FeatureInfo featureInfo = new TechTalk.SpecFlow.FeatureInfo(new System.Globalization.CultureInfo("en-US"), "Features/Field", "Static read-only field", null, ProgrammingLanguage.CSharp, featureTags); - testRunner.OnFeatureStart(featureInfo); - } - - public static void FeatureTearDown() - { - testRunner.OnFeatureEnd(); - testRunner = null; - } - - public void TestInitialize() - { - } - - public void TestTearDown() - { - testRunner.OnScenarioEnd(); - } - - public void ScenarioInitialize(TechTalk.SpecFlow.ScenarioInfo scenarioInfo) - { - testRunner.OnScenarioInitialize(scenarioInfo); - testRunner.ScenarioContext.ScenarioContainer.RegisterInstanceAs(_testOutputHelper); - } - - public void ScenarioStart() - { - testRunner.OnScenarioStart(); - } - - public void ScenarioCleanup() - { - testRunner.CollectScenarioErrors(); - } - - void System.IDisposable.Dispose() - { - this.TestTearDown(); - } - - [Xunit.SkippableFactAttribute(DisplayName="Non-nullable field with keyworded type")] - [Xunit.TraitAttribute("FeatureTitle", "Static read-only field")] - [Xunit.TraitAttribute("Description", "Non-nullable field with keyworded type")] - public void Non_NullableFieldWithKeywordedType() - { - string[] tagsOfScenario = ((string[])(null)); - System.Collections.Specialized.OrderedDictionary argumentsOfScenario = new System.Collections.Specialized.OrderedDictionary(); - TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("Non-nullable field with keyworded type", null, tagsOfScenario, argumentsOfScenario, featureTags); -#line 4 -this.ScenarioInitialize(scenarioInfo); -#line hidden - if ((TagHelper.ContainsIgnoreTag(tagsOfScenario) || TagHelper.ContainsIgnoreTag(featureTags))) - { - testRunner.SkipScenario(); - } - else - { - this.ScenarioStart(); -#line 5 - testRunner.Given("source member declaration", "public static readonly float StaticReadonlyField;", ((TechTalk.SpecFlow.Table)(null)), "Given "); -#line hidden -#line 9 - testRunner.When("run generator for field", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); -#line hidden -#line 10 - testRunner.Then("generated for interface", "float StaticReadonlyField { get; }", ((TechTalk.SpecFlow.Table)(null)), "Then "); -#line hidden -#line 14 - testRunner.And("generated for struct implementation", "public float StaticReadonlyField { get => @Namespace.@TypeName.StaticReadonlyFiel" + - "d; }", ((TechTalk.SpecFlow.Table)(null)), "And "); -#line hidden -#line 18 - testRunner.And("generated for class implementation", "public new float StaticReadonlyField { get => @Namespace.@TypeName.StaticReadonly" + - "Field; }", ((TechTalk.SpecFlow.Table)(null)), "And "); -#line hidden -#line 22 - testRunner.And("generated for sealed class implementation", "public float StaticReadonlyField { get => @Namespace.@TypeName.StaticReadonlyFiel" + - "d; }", ((TechTalk.SpecFlow.Table)(null)), "And "); -#line hidden -#line 26 - testRunner.And("generated for static class implementation", "public float StaticReadonlyField { get => @Namespace.@TypeName.StaticReadonlyFiel" + - "d; }", ((TechTalk.SpecFlow.Table)(null)), "And "); -#line hidden - } - this.ScenarioCleanup(); - } - - [Xunit.SkippableFactAttribute(DisplayName="Nullable field with keyworded type")] - [Xunit.TraitAttribute("FeatureTitle", "Static read-only field")] - [Xunit.TraitAttribute("Description", "Nullable field with keyworded type")] - public void NullableFieldWithKeywordedType() - { - string[] tagsOfScenario = ((string[])(null)); - System.Collections.Specialized.OrderedDictionary argumentsOfScenario = new System.Collections.Specialized.OrderedDictionary(); - TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("Nullable field with keyworded type", null, tagsOfScenario, argumentsOfScenario, featureTags); -#line 32 -this.ScenarioInitialize(scenarioInfo); -#line hidden - if ((TagHelper.ContainsIgnoreTag(tagsOfScenario) || TagHelper.ContainsIgnoreTag(featureTags))) - { - testRunner.SkipScenario(); - } - else - { - this.ScenarioStart(); -#line 33 - testRunner.Given("source member declaration", "public static readonly float? StaticReadonlyField;", ((TechTalk.SpecFlow.Table)(null)), "Given "); -#line hidden -#line 37 - testRunner.When("run generator for field", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); -#line hidden -#line 38 - testRunner.Then("generated for interface", "float? StaticReadonlyField { get; }", ((TechTalk.SpecFlow.Table)(null)), "Then "); -#line hidden -#line 42 - testRunner.And("generated for struct implementation", "public float? StaticReadonlyField { get => @Namespace.@TypeName.StaticReadonlyFie" + - "ld; }", ((TechTalk.SpecFlow.Table)(null)), "And "); -#line hidden -#line 46 - testRunner.And("generated for class implementation", "public new float? StaticReadonlyField { get => @Namespace.@TypeName.StaticReadonl" + - "yField; }", ((TechTalk.SpecFlow.Table)(null)), "And "); -#line hidden -#line 50 - testRunner.And("generated for sealed class implementation", "public float? StaticReadonlyField { get => @Namespace.@TypeName.StaticReadonlyFie" + - "ld; }", ((TechTalk.SpecFlow.Table)(null)), "And "); -#line hidden -#line 54 - testRunner.And("generated for static class implementation", "public float? StaticReadonlyField { get => @Namespace.@TypeName.StaticReadonlyFie" + - "ld; }", ((TechTalk.SpecFlow.Table)(null)), "And "); -#line hidden - } - this.ScenarioCleanup(); - } - - [Xunit.SkippableFactAttribute(DisplayName="Non-nullable field")] - [Xunit.TraitAttribute("FeatureTitle", "Static read-only field")] - [Xunit.TraitAttribute("Description", "Non-nullable field")] - public void Non_NullableField() - { - string[] tagsOfScenario = ((string[])(null)); - System.Collections.Specialized.OrderedDictionary argumentsOfScenario = new System.Collections.Specialized.OrderedDictionary(); - TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("Non-nullable field", null, tagsOfScenario, argumentsOfScenario, featureTags); -#line 60 -this.ScenarioInitialize(scenarioInfo); -#line hidden - if ((TagHelper.ContainsIgnoreTag(tagsOfScenario) || TagHelper.ContainsIgnoreTag(featureTags))) - { - testRunner.SkipScenario(); - } - else - { - this.ScenarioStart(); -#line 61 - testRunner.Given("usings", "using System;", ((TechTalk.SpecFlow.Table)(null)), "Given "); -#line hidden -#line 65 - testRunner.And("source member declaration", "public static readonly StringComparer StaticReadonlyField;", ((TechTalk.SpecFlow.Table)(null)), "And "); -#line hidden -#line 69 - testRunner.When("run generator for field", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); -#line hidden -#line 70 - testRunner.Then("generated for interface", "global::System.StringComparer StaticReadonlyField { get; }", ((TechTalk.SpecFlow.Table)(null)), "Then "); -#line hidden -#line 74 - testRunner.And("generated for struct implementation", "public global::System.StringComparer StaticReadonlyField { get => @Namespace.@Typ" + - "eName.StaticReadonlyField; }", ((TechTalk.SpecFlow.Table)(null)), "And "); -#line hidden -#line 78 - testRunner.And("generated for class implementation", "public new global::System.StringComparer StaticReadonlyField { get => @Namespace." + - "@TypeName.StaticReadonlyField; }", ((TechTalk.SpecFlow.Table)(null)), "And "); -#line hidden -#line 82 - testRunner.And("generated for sealed class implementation", "public global::System.StringComparer StaticReadonlyField { get => @Namespace.@Typ" + - "eName.StaticReadonlyField; }", ((TechTalk.SpecFlow.Table)(null)), "And "); -#line hidden -#line 86 - testRunner.And("generated for static class implementation", "public global::System.StringComparer StaticReadonlyField { get => @Namespace.@Typ" + - "eName.StaticReadonlyField; }", ((TechTalk.SpecFlow.Table)(null)), "And "); -#line hidden - } - this.ScenarioCleanup(); - } - - [Xunit.SkippableFactAttribute(DisplayName="Nullable field")] - [Xunit.TraitAttribute("FeatureTitle", "Static read-only field")] - [Xunit.TraitAttribute("Description", "Nullable field")] - public void NullableField() - { - string[] tagsOfScenario = ((string[])(null)); - System.Collections.Specialized.OrderedDictionary argumentsOfScenario = new System.Collections.Specialized.OrderedDictionary(); - TechTalk.SpecFlow.ScenarioInfo scenarioInfo = new TechTalk.SpecFlow.ScenarioInfo("Nullable field", null, tagsOfScenario, argumentsOfScenario, featureTags); -#line 92 -this.ScenarioInitialize(scenarioInfo); -#line hidden - if ((TagHelper.ContainsIgnoreTag(tagsOfScenario) || TagHelper.ContainsIgnoreTag(featureTags))) - { - testRunner.SkipScenario(); - } - else - { - this.ScenarioStart(); -#line 93 - testRunner.Given("usings", "using System;", ((TechTalk.SpecFlow.Table)(null)), "Given "); -#line hidden -#line 97 - testRunner.And("source member declaration", "public static readonly StringComparer? StaticReadonlyField;", ((TechTalk.SpecFlow.Table)(null)), "And "); -#line hidden -#line 101 - testRunner.When("run generator for field", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "When "); -#line hidden -#line 102 - testRunner.Then("generated for interface", "global::System.StringComparer? StaticReadonlyField { get; }", ((TechTalk.SpecFlow.Table)(null)), "Then "); -#line hidden -#line 106 - testRunner.And("generated for struct implementation", "public global::System.StringComparer? StaticReadonlyField { get => @Namespace.@Ty" + - "peName.StaticReadonlyField; }", ((TechTalk.SpecFlow.Table)(null)), "And "); -#line hidden -#line 110 - testRunner.And("generated for class implementation", "public new global::System.StringComparer? StaticReadonlyField { get => @Namespace" + - ".@TypeName.StaticReadonlyField; }", ((TechTalk.SpecFlow.Table)(null)), "And "); -#line hidden -#line 114 - testRunner.And("generated for sealed class implementation", "public global::System.StringComparer? StaticReadonlyField { get => @Namespace.@Ty" + - "peName.StaticReadonlyField; }", ((TechTalk.SpecFlow.Table)(null)), "And "); -#line hidden -#line 118 - testRunner.And("generated for static class implementation", "public global::System.StringComparer? StaticReadonlyField { get => @Namespace.@Ty" + - "peName.StaticReadonlyField; }", ((TechTalk.SpecFlow.Table)(null)), "And "); -#line hidden - } - this.ScenarioCleanup(); - } - - [System.CodeDom.Compiler.GeneratedCodeAttribute("TechTalk.SpecFlow", "3.9.0.0")] - [System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - public class FixtureData : System.IDisposable - { - - public FixtureData() - { - StaticRead_OnlyFieldFeature.FeatureSetup(); - } - - void System.IDisposable.Dispose() - { - StaticRead_OnlyFieldFeature.FeatureTearDown(); - } - } - } -} -#pragma warning restore -#endregion diff --git a/Tests/Tum4ik.StinimGen.Specs/Features/Property/StaticProperty.feature b/Tests/Tum4ik.StinimGen.Specs/Features/Property/Property.feature similarity index 99% rename from Tests/Tum4ik.StinimGen.Specs/Features/Property/StaticProperty.feature rename to Tests/Tum4ik.StinimGen.Specs/Features/Property/Property.feature index 5f7814d..ddf45cf 100644 --- a/Tests/Tum4ik.StinimGen.Specs/Features/Property/StaticProperty.feature +++ b/Tests/Tum4ik.StinimGen.Specs/Features/Property/Property.feature @@ -1,4 +1,4 @@ -Feature: Static property +Feature: Property Scenario: Property with only getter diff --git a/Tests/Tum4ik.StinimGen.Specs/Features/Property/StaticProperty.feature.cs b/Tests/Tum4ik.StinimGen.Specs/Features/Property/Property.feature.cs similarity index 92% rename from Tests/Tum4ik.StinimGen.Specs/Features/Property/StaticProperty.feature.cs rename to Tests/Tum4ik.StinimGen.Specs/Features/Property/Property.feature.cs index 5895a45..65c7498 100644 --- a/Tests/Tum4ik.StinimGen.Specs/Features/Property/StaticProperty.feature.cs +++ b/Tests/Tum4ik.StinimGen.Specs/Features/Property/Property.feature.cs @@ -19,7 +19,7 @@ namespace Tum4ik.StinimGen.Specs.Features.Property [System.CodeDom.Compiler.GeneratedCodeAttribute("TechTalk.SpecFlow", "3.9.0.0")] [System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - public partial class StaticPropertyFeature : object, Xunit.IClassFixture, System.IDisposable + public partial class PropertyFeature : object, Xunit.IClassFixture, System.IDisposable { private static TechTalk.SpecFlow.ITestRunner testRunner; @@ -28,10 +28,10 @@ public partial class StaticPropertyFeature : object, Xunit.IClassFixture