Esempio n. 1
0
        public void TestEnumMember()
        {
            var obj = new EnumMember {
                Member = TestEnum.Value1
            };
            var container = new NodeContainer();

            // Construction
            var containerNode = container.GetOrCreateNode(obj);

            Helper.TestNonCollectionObjectNode(containerNode, obj, 1);
            var memberNode = containerNode.Members.First();

            Helper.TestMemberNode(containerNode, memberNode, obj, obj.Member, nameof(EnumMember.Member), false);

            // Update from object
            obj.Member = TestEnum.Value2;
            Helper.TestMemberNode(containerNode, memberNode, obj, obj.Member, nameof(EnumMember.Member), false);

            // Update from Quantum
            containerNode.Members.First().Update(TestEnum.Value3);
            Helper.TestMemberNode(containerNode, memberNode, obj, obj.Member, nameof(EnumMember.Member), false);
        }
Esempio n. 2
0
 private void CompareEnumMember(EnumType expectedEnumType, EnumMember expectedMemeber, EnumType actualEnumType, EnumMember actualMember)
 {
     this.SatisfiesEquals(expectedMemeber.Name, actualMember.Name, "Enum member name not match.");
     this.SatisfiesEquals(this.GetIntegralEnumMemberValue(expectedEnumType, expectedMemeber), this.GetIntegralEnumMemberValue(actualEnumType, actualMember), "Enum member value does not match.");
     this.CompareAnnotations(expectedMemeber.Annotations, actualMember.Annotations);
 }
Esempio n. 3
0
        public void EndElement(string localName, string qName)
        {
            if (!abort)
            {
                if (qName.Equals(rdfProfileElement) || qName.Equals(cimsClassCategoryElement) ||
                    qName.Equals(rdfsClassElement) || qName.Equals(rdfPropertyElement))                        //end of element
                {
                    //novo
                    if (prop != null)
                    {
                        string type;
                        prop.TryGetValue(rdfType, out type);

                        if (ExtractSimpleNameFromResourceURI(type) == "ClassCategory")
                        {
                            ClassCategory cs = new ClassCategory();
                            foreach (KeyValuePair <string, string> pp in prop)
                            {
                                string str = pp.Value;
                                if ((pp.Key.Equals(cimsBelongsToCategory)) && (str != null))
                                {
                                    cs.BelongsToCategory = str;
                                    AddBelongingInformation(cs, cs.BelongsToCategory);
                                }
                                else if ((pp.Key.Equals(rdfsComment)) && (str != null))
                                {
                                    cs.Comment = str;
                                }
                                else if ((pp.Key.Equals(rdfsLabel)) && (str != null))
                                {
                                    cs.Label = str;
                                }
                                else if ((pp.Key.Equals(rdfType)) && (str != null))
                                {
                                    cs.Type = str;
                                }
                                else if ((pp.Key.Equals(rdfProfileElement)) && (str != null))
                                {
                                    cs.URI = str;
                                }
                                else if ((pp.Key.Equals(cimsMultiplicity)) && (str != null))
                                {
                                    cs.MultiplicityAsString = ExtractSimpleNameFromResourceURI(str);
                                }
                            }
                            AddProfileElement(ProfileElementTypes.ClassCategory, cs);
                        }
                        else if (ExtractSimpleNameFromResourceURI(type) == "Class")
                        {
                            Class cs = new Class();
                            foreach (KeyValuePair <string, string> pp in prop)
                            {
                                string str = pp.Value;
                                if ((pp.Key.Equals(cimsBelongsToCategory)) && (str != null))
                                {
                                    cs.BelongsToCategory = str;
                                    AddBelongingInformation(cs, cs.BelongsToCategory);
                                }
                                else if ((pp.Key.Equals(rdfsComment)) && (str != null))
                                {
                                    cs.Comment = str;
                                }
                                else if ((pp.Key.Equals(rdfsLabel)) && (str != null))
                                {
                                    cs.Label = str;
                                }
                                else if ((pp.Key.Equals(cimsMultiplicity)) && (str != null))
                                {
                                    cs.MultiplicityAsString = ExtractSimpleNameFromResourceURI(str);
                                }
                                else if ((pp.Key.Contains(cimsStereotype)) && (str != null))
                                {
                                    cs.AddStereotype(str);
                                }
                                else if ((pp.Key.Contains(rdfsSubClassOf)) && (str != null))
                                {
                                    cs.SubClassOf = str;
                                }
                                else if ((pp.Key.Equals(rdfType)) && (str != null))
                                {
                                    cs.Type = str;
                                }
                                else if ((pp.Key.Equals(rdfProfileElement)) && (str != null))
                                {
                                    cs.URI = str;
                                }
                            }
                            AddProfileElement(ProfileElementTypes.Class, cs);
                        }
                        else if (ExtractSimpleNameFromResourceURI(type) == "Property")
                        {
                            Property pr = new Property();
                            foreach (KeyValuePair <string, string> pp in prop)
                            {
                                string str = pp.Value;
                                if ((pp.Key.Equals(cimsDataType)) && (str != null))
                                {
                                    pr.DataType = str;
                                }
                                else if ((pp.Key.Equals(cimsMultiplicity)) && (str != null))
                                {
                                    pr.MultiplicityAsString = str;
                                }
                                else if ((pp.Key.Equals(rdfProfileElement)) && (str != null))
                                {
                                    pr.URI = str;
                                }
                                else if ((pp.Key.Equals(rdfType)) && (str != null))
                                {
                                    pr.Type = str;
                                }
                                else if ((pp.Key.Equals(rdfsDomain)) && (str != null))
                                {
                                    pr.Domain = str;
                                    AddBelongingInformation(pr, pr.Domain);
                                }
                                else if ((pp.Key.Contains(cimsStereotype)) && (str != null))
                                {
                                    pr.AddStereotype(str);
                                }
                                else if ((pp.Key.Contains(rdfsComment)) && (str != null))
                                {
                                    pr.Comment = str;
                                }
                                else if ((pp.Key.Equals(rdfsLabel)) && (str != null))
                                {
                                    pr.Label = str;
                                }
                                else if ((pp.Key.Equals(rdfsRange)) && (str != null))
                                {
                                    pr.Range = str;
                                }
                            }
                            AddProfileElement(ProfileElementTypes.Property, pr);
                        }
                        else
                        {
                            EnumMember en = new EnumMember();
                            foreach (KeyValuePair <string, string> pp in prop)
                            {
                                string str = pp.Value;
                                if ((pp.Key.Equals(rdfsComment)) && (str != null))
                                {
                                    en.Comment = str;
                                }
                                else if ((pp.Key.Equals(rdfsLabel)) && (str != null))
                                {
                                    en.Label = str;
                                }
                                else if ((pp.Key.Equals(rdfType)) && (str != null))
                                {
                                    en.Type = str;
                                }
                                else if ((pp.Key.Equals(rdfProfileElement)) && (str != null))
                                {
                                    en.URI = str;
                                }
                                else if ((pp.Key.Equals(cimsMultiplicity)) && (str != null))
                                {
                                    en.MultiplicityAsString = ExtractSimpleNameFromResourceURI(str);
                                }
                            }
                            AddProfileElement(ProfileElementTypes.Unknown, en);
                        }
                        prop.Clear();
                    }
                }

                else if (qName.Equals(rdfsLabel))                //// end of label subelement
                {
                    content = content.Trim();
                    if (!string.IsNullOrEmpty(content))
                    {
                        //novo
                        string ls;
                        prop.TryGetValue(qName, out ls);
                        if (ls == null)
                        {
                            ls = (string)content.Clone();
                            prop.Add(qName, ls);
                        }
                        content = string.Empty;
                    }
                }
                else if (qName.Equals(rdfsComment))                //// end of comment subelement
                {
                    content = content.Trim();
                    if (!string.IsNullOrEmpty(content))
                    {
                        //novo
                        string ls;
                        prop.TryGetValue(qName, out ls);
                        if (ls == null)
                        {
                            ls = (string)content.Clone();
                            prop.Add(qName, ls);
                        }
                        content = string.Empty;
                    }
                }
                else if (qName.Equals(cimsIsAggregate))                //// end of isAggregate subelement
                {
                    content = content.Trim();
                    if (!string.IsNullOrEmpty(content))
                    {
                        bool paresedValue;

                        //novo
                        string ls;
                        prop.TryGetValue(qName, out ls);
                        if (ls == null)
                        {
                            if (bool.TryParse((string)content.Clone(), out paresedValue))
                            {
                                ls = paresedValue.ToString();
                            }
                            prop.Add(qName, ls);
                        }
                        content = string.Empty;
                    }
                }
            }
        }
Esempio n. 4
0
 protected override void VisitEdmEnumTypeMember(EnumMember item)
 {
     _schemaWriter.WriteEnumTypeMemberElementHeader(item);
     base.VisitEdmEnumTypeMember(item);
     _schemaWriter.WriteEndElement();
 }
Esempio n. 5
0
 public static IEnumerable <object> GetFlags(EnumMember member) => FlagEnums.GetFlags(member);
Esempio n. 6
0
 protected virtual void VisitEdmEnumTypeMember(EnumMember item)
 {
     VisitMetadataItem(item);
 }
Esempio n. 7
0
 private bool IsTheSame(EnumMember comparisonEnumMember)
 {
     return(IsTheSame(comparisonEnumMember, ComparisonDepth.Signature));
 }
        public void TestEnumMember()
        {
            var obj = new EnumMember { Member = TestEnum.Value1 };
            var container = new NodeContainer();

            // Construction
            var containerNode = (GraphNode)container.GetOrCreateNode(obj);
            Helper.TestNonCollectionObjectContentNode(containerNode, obj, 1);
            var memberNode = containerNode.Children.First();
            Helper.TestMemberContentNode(containerNode, memberNode, obj, obj.Member, nameof(EnumMember.Member), false);

            // Update from object
            obj.Member = TestEnum.Value2;
            Helper.TestMemberContentNode(containerNode, memberNode, obj, obj.Member, nameof(EnumMember.Member), false);

            // Update from Quantum
            containerNode.Children.First().Content.Update(TestEnum.Value3);
            Helper.TestMemberContentNode(containerNode, memberNode, obj, obj.Member, nameof(EnumMember.Member), false);
        }
 public override void OnEnumMember(EnumMember node)
 {
     base.OnEnumMember(node);
     Check(node);
 }
Esempio n. 10
0
 public EnumNode(string type, string value, Location location) : base(location)
 {
     Type       = type;
     Value      = value;
     EnumMember = EnumData.GetEnumValue(type, value);
 }
Esempio n. 11
0
            private bool IsTheSame(EnumMember comparisonEnumMember, ComparisonDepth depth)
            {
                if (Name == comparisonEnumMember.Name)
                {
                    if ((ParentObject == null && comparisonEnumMember.ParentObject == null) ||
                        (ParentObject.GetType() == comparisonEnumMember.ParentObject.GetType() &&
                        ParentObject.Name == comparisonEnumMember.ParentObject.Name))
                    {
                        if (depth == ComparisonDepth.Signature)
                        {
                            return true;
                        }

                        if (!base.IsTheSame(comparisonEnumMember, depth))
                        {
                            return false;
                        }
                        return true;
                    }
                }
                return false;
            }
Esempio n. 12
0
 private bool IsTheSame(EnumMember comparisonEnumMember)
 {
     return IsTheSame(comparisonEnumMember, ComparisonDepth.Signature);
 }
Esempio n. 13
0
 private EnumMember(EnumMember emToCopyFrom)
     : base(null)
 {
     emToCopyFrom.CloneInto(this);
     Value = emToCopyFrom.Value;
 }
Esempio n. 14
0
 public InternalEnumMember(TypeSystemServices tagManager, EnumMember member)
 {
     _member = member;
 }
Esempio n. 15
0
 // Implemented in derived class
 int IComparable <EnumMember <TEnum> > .CompareTo(EnumMember <TEnum> other) => 0;
Esempio n. 16
0
 protected override Expression <Func <EnumMember, bool> > FindExisting(EnumMember record)
 => existing
 => existing.DocumentationCommentId == record.DocumentationCommentId &&
 ((existing.EqualsValueId == null && record.EqualsValueId == null) || (existing.EqualsValueId == record.EqualsValueId)) &&
 existing.IdentifierId == record.IdentifierId;
Esempio n. 17
0
 /// <summary>
 /// Retrieves the <see cref="EnumMember"/>s of the flags that compose <paramref name="member"/>'s value.
 /// </summary>
 /// <param name="member">The enum member.</param>
 /// <returns>The <see cref="EnumMember"/>s of the flags that compose <paramref name="member"/>'s value.</returns>
 /// <exception cref="ArgumentNullException"><paramref name="member"/> is <c>null</c>.</exception>
 public static IEnumerable <EnumMember> GetFlagMembers(this EnumMember member)
 {
     Preconditions.NotNull(member, nameof(member));
     return(member.GetFlagMembers());
 }
Esempio n. 18
0
 private EnumMember(EnumMember emToCopyFrom)
     : base(null)
 {
     emToCopyFrom.CloneInto(this);
     Value = emToCopyFrom.Value;
 }
 internal MetadataEnumMember(string name, TypeUsage enumType, EnumMember enumMember)
     : base(MetadataMemberClass.EnumMember, name)
 {
     this.EnumType   = enumType;
     this.EnumMember = enumMember;
 }
Esempio n. 20
0
 private void ParseEnumMember(TypeExpression typeExpression, List<ITypeDeclarationMember> members, TokenSet followers)
   //^ requires this.currentToken == Token.LeftBracket || Parser.IdentifierOrNonReservedKeyword[this.currentToken];
   //^ ensures followers[this.currentToken] || this.currentToken == Token.EndOfFile;
 {
   SourceLocationBuilder sctx = new SourceLocationBuilder(this.scanner.SourceLocationOfLastScannedToken);
   List<SourceCustomAttribute>/*?*/ attributes = this.ParseAttributes(followers|Parser.AttributeOrTypeDeclarationStart|Parser.IdentifierOrNonReservedKeyword);
   if (!Parser.IdentifierOrNonReservedKeyword[this.currentToken])
     this.HandleError(Error.ExpectedIdentifier);
   NameDeclaration name = this.ParseNameDeclaration();
   Expression/*?*/ initializer = null;
   if (this.currentToken == Token.Assign) {
     this.GetNextToken();
     initializer = this.ParseExpression(followers);
   }
   EnumMember member = new EnumMember(attributes, typeExpression, name, initializer, sctx);
   members.Add(member);
   this.SkipTo(followers);
 }
Esempio n. 21
0
 internal void WriteEnumTypeMemberElementHeader(EnumMember enumTypeMember)
 {
     _xmlWriter.WriteStartElement(XmlConstants.Member);
     _xmlWriter.WriteAttributeString(XmlConstants.Name, enumTypeMember.Name);
     _xmlWriter.WriteAttributeString(XmlConstants.Value, enumTypeMember.Value.ToString());
 }
Esempio n. 22
0
 public override void OnEnumMember(EnumMember node)
 {
     throw new NotImplementedException();
     IL_0006 :;
 }
Esempio n. 23
0
 public EnumValuePair(EnumMember member, bool constant, CodeType type) : base(member.CodeName, constant ? CompletionItemKind.Constant : CompletionItemKind.EnumMember)
 {
     Member   = member;
     CodeType = type;
 }
Esempio n. 24
0
 public static IEnumerable <EnumMember> GetFlagMembers(EnumMember member) => FlagEnums.GetFlagMembers(member);
Esempio n. 25
0
 /// <summary>
 /// Indicates whether <paramref name="member"/>'s value is a valid flag combination of its enum's defined values.
 /// </summary>
 /// <param name="member">The enum member.</param>
 /// <returns>Indication of whether <paramref name="member"/>'s value is a valid flag combination of its enum's defined values.</returns>
 /// <exception cref="ArgumentNullException"><paramref name="member"/> is <c>null</c>.</exception>
 public static bool IsValidFlagCombination([NotNull] this EnumMember member)
 {
     return(member.IsValidFlagCombination());
 }
Esempio n. 26
0
 protected virtual void Visit(EnumMember enumMember)
 {
 }
Esempio n. 27
0
 /// <summary>
 /// Retrieves the <see cref="EnumMember{TEnum}"/>s of the flags that compose <paramref name="member"/>'s value.
 /// </summary>
 /// <typeparam name="TEnum">The enum type.</typeparam>
 /// <param name="member">The enum member.</param>
 /// <returns>The <see cref="EnumMember{TEnum}"/>s of the flags that compose <paramref name="member"/>'s value.</returns>
 /// <exception cref="ArgumentNullException"><paramref name="member"/> is <c>null</c>.</exception>
 public static IEnumerable <EnumMember <TEnum> > GetFlagMembers <TEnum>([NotNull] this EnumMember <TEnum> member)
     where TEnum : struct, Enum, IComparable
 {
     return(member.GetGenericFlagMembers());
 }
Esempio n. 28
0
 public static CompilerError EnumMemberMustBeConstant(EnumMember member)
 {
     return(Instantiate("BCE0170", member, member.FullName));
 }
Esempio n. 29
0
 /// <summary>
 /// Indicates if <paramref name="member"/>'s value has all of the flags that are defined in its enum type.
 /// </summary>
 /// <param name="member">The enum member.</param>
 /// <returns>Indication if <paramref name="member"/> has all of the flags that are defined in its enum type.</returns>
 /// <exception cref="ArgumentNullException"><paramref name="member"/> is <c>null</c>.</exception>
 public static bool HasAllFlags([NotNull] this EnumMember member)
 {
     return(member.HasAllFlags());
 }
Esempio n. 30
0
 /// <summary>
 /// Indicates whether the specified <see cref="EnumMember{TEnum}"/> is equal to the current <see cref="EnumMember{TEnum}"/>.
 /// </summary>
 /// <param name="other">The other <see cref="EnumMember{TEnum}"/>.</param>
 /// <returns>Indication whether the specified <see cref="EnumMember{TEnum}"/> is equal to the current <see cref="EnumMember{TEnum}"/>.</returns>
 public bool Equals(EnumMember <TEnum> other) => ReferenceEquals(this, other);
Esempio n. 31
0
 /// <summary>
 /// Retrieves the flag count of <paramref name="member"/>.
 /// </summary>
 /// <param name="member">The flags enum value.</param>
 /// <returns>The flag count of <paramref name="member"/>.</returns>
 public static int GetFlagCount([NotNull] this EnumMember member)
 {
     return(member.GetFlagCount());
 }
Esempio n. 32
0
 public EnumNode(string type, string value, Range range) : base(range)
 {
     Type       = type;
     Value      = value;
     EnumMember = EnumData.GetEnumValue(type, value);
 }
 public EnumValuePair(EnumMember member, bool constant, CodeType type) : base(member.CodeName, constant ? CompletionItemKind.Constant : CompletionItemKind.EnumMember)
 {
     Member    = member;
     CodeType  = type;
     TokenType = Deltin.Deltinteger.Parse.TokenType.EnumMember;
 }
Esempio n. 34
0
        /// <inheritdoc />
        public (Stream stream, ContentType contentType) Select(IRequest <MetadataDocument> request)
        {
            var stream   = new MemoryStream();
            var metadata = Metadata.Get(MetadataLevel.Full);

            using (var swr = new StreamWriter(stream, Encoding.UTF8, 1024, true))
            {
                swr.Write("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
                swr.Write("<edmx:Edmx Version=\"4.0\" xmlns:edmx=\"http://docs.oasis-open.org/odata/ns/edmx\"><edmx:DataServices>");
                swr.Write("<Schema Namespace=\"global\" xmlns=\"http://docs.oasis-open.org/odata/ns/edm\">");

                var(enumTypes, complexTypes) = metadata.PeripheralTypes.Split(t => t.Key.IsEnum);

                #region Print enum types

                foreach (var pair in enumTypes)
                {
                    swr.Write($"<EnumType Name=\"{pair.Key.FullName}\">");
                    foreach (var member in EnumMember.GetMembers(pair.Key))
                    {
                        swr.Write($"<Member Name=\"{member.Name}\" Value=\"{member.NumericValue}\"/>");
                    }
                    swr.Write("</EnumType>");
                }

                #endregion

                #region Print complex types

                foreach (var pair in complexTypes)
                {
                    var(type, members) = (pair.Key, pair.Value);
                    var(dynamicMembers, declaredMembers) = members.Split(IsDynamicMember);
                    var isOpenType = type.IsDynamic() || dynamicMembers.Any();
                    swr.Write($"<ComplexType Name=\"{type.FullName}\" OpenType=\"{isOpenType.XMLBool()}\">");
                    WriteMembers(swr, declaredMembers);
                    swr.Write("</ComplexType>");
                }

                #endregion

                #region Print entity types

                foreach (var pair in metadata.EntityResourceTypes.Where(t => t.Key != typeof(Metadata)))
                {
                    var(type, members) = (pair.Key, pair.Value);
                    var(dynamicMembers, declaredMembers) = members.Split(IsDynamicMember);
                    var isOpenType = type.IsDynamic() || dynamicMembers.Any();
                    swr.Write($"<EntityType Name=\"{type.FullName}\" OpenType=\"{isOpenType.XMLBool()}\">");
                    var key = declaredMembers.OfType <DeclaredProperty>().FirstOrDefault(p => p.HasAttribute <KeyAttribute>());
                    if (key != null)
                    {
                        swr.Write($"<Key><PropertyRef Name=\"{key.Name}\"/></Key>");
                    }
                    WriteMembers(swr, declaredMembers.Where(p => !(p is DeclaredProperty d) || !d.Hidden || d.Equals(key)));
                    swr.Write("</EntityType>");
                }
                swr.Write("<EntityType Name=\"RESTar.DynamicResource\" OpenType=\"true\"/>");

                #endregion

                #region Write entity container and entity sets

                swr.Write($"<EntityContainer Name=\"{EntityContainerName}\">");
                foreach (var entitySet in metadata.EntityResources.Where(t => t.Type != typeof(Metadata)))
                {
                    swr.Write($"<EntitySet EntityType=\"{GetEdmTypeName(entitySet.Type)}\" Name=\"{entitySet.Name}\">");
                    var methods = metadata.CurrentAccessScope[entitySet].Intersect(entitySet.AvailableMethods).ToList();
                    swr.Write(InsertableAnnotation(methods.Contains(Method.POST)));
                    swr.Write(UpdatableAnnotation(methods.Contains(Method.PATCH)));
                    swr.Write(DeletableAnnotation(methods.Contains(Method.DELETE)));
                    swr.Write("</EntitySet>");
                }
                swr.Write("</EntityContainer>");
                swr.Write($"<Annotations Target=\"global.{EntityContainerName}\">");
                swr.Write("<Annotation Term=\"Org.OData.Capabilities.V1.ConformanceLevel\"><EnumMember>Org.OData.Capabilities.V1." +
                          "ConformanceLevelType/Minimal</EnumMember></Annotation>");
                swr.Write("<Annotation Term=\"Org.OData.Capabilities.V1.SupportedFormats\">");
                swr.Write("<Collection>");
                swr.Write("<String>application/json;odata.metadata=minimal;IEEE754Compatible=false;odata.streaming=true</String>");
                swr.Write("</Collection>");
                swr.Write("</Annotation>");
                swr.Write("<Annotation Bool=\"true\" Term=\"Org.OData.Capabilities.V1.AsynchronousRequestsSupported\"/>");
                swr.Write("<Annotation Term=\"Org.OData.Capabilities.V1.FilterFunctions\"><Collection></Collection></Annotation>");
                swr.Write("</Annotations>");
                swr.Write("</Schema>");
                swr.Write("</edmx:DataServices></edmx:Edmx>");

                #endregion
            }
            return(stream, ContentType);
        }
Esempio n. 35
0
 /// <summary>
 /// Visit Enum member
 /// </summary>
 /// <param name="enumMember">enum member to visit</param>
 protected virtual void VisitEnumMember(EnumMember enumMember)
 {
     this.VisitAnnotatedItem(enumMember);
 }