public void SimpleEnum() { //-- arrange var enumMember = new TypeMember(); enumMember.Namespace = "SyntaxGeneratorTests"; enumMember.Name = "TestEnum"; enumMember.Members.Add(new EnumMember() { Name = "First" }); enumMember.Members.Add(new EnumMember() { Name = "Second" }); enumMember.Members.Add(new EnumMember() { Name = "Third" }); var emitter = new EnumSyntaxEmitter(enumMember); //-- act var syntax = emitter.EmitSyntax(); //-- assert syntax.Should().BeEquivalentToCode( "public enum TestEnum { First, Second, Third }" ); }
//----------------------------------------------------------------------------------------------------------------------------------------------------- private MemberDeclarationSyntax EmitTypeSyntax(TypeMember type) { MemberDeclarationSyntax typeSyntax; switch (type.TypeKind) { case TypeMemberKind.Class: var classEmitter = new ClassSyntaxEmitter(type); typeSyntax = classEmitter.EmitSyntax(); break; case TypeMemberKind.Enum: var enumEmitter = new EnumSyntaxEmitter(type); typeSyntax = enumEmitter.EmitSyntax(); break; default: throw new NotSupportedException($"TypeMember of kind '{type.TypeKind}' is not supported."); } var annotation = new SyntaxAnnotation(); typeSyntax = typeSyntax.WithAdditionalAnnotations(annotation); type.SafeBackendTag().Annotation = annotation; return(typeSyntax); }
public void FlagsEnum() { //-- arrange var enumMember = new TypeMember(); enumMember.Namespace = "SyntaxGeneratorTests"; enumMember.Name = "TestFlagsEnum"; enumMember.Attributes.Add(new AttributeDescription() { AttributeType = new TypeMember(typeof(FlagsAttribute)) }); enumMember.Members.Add(new EnumMember() { Name = "None", Value = 0 }); enumMember.Members.Add(new EnumMember() { Name = "First", Value = 0x01 }); enumMember.Members.Add(new EnumMember() { Name = "Second", Value = 0x02 }); enumMember.Members.Add(new EnumMember() { Name = "Both", Value = 0x01 | 0x02 }); var emitter = new EnumSyntaxEmitter(enumMember); //-- act var syntax = emitter.EmitSyntax(); //-- assert syntax.Should().BeEquivalentToCode( "[System.FlagsAttribute] public enum TestFlagsEnum { None = 0, First = 1, Second = 2, Both = 3 }" ); }