public void Constructor()
        {
            // Act
            var actual = new EnumAttributeMap(SimpleEnum.Default, new[] { new Simple1Attribute() });

            // Assert
            actual.Attributes.ShouldHaveSameValueAs(new[] { new Simple1Attribute() });
            actual.EnumValue.ShouldHaveSameValueAs(SimpleEnum.Default);
        }
        public void GetFirstAttribute_NoMatchingAttributes()
        {
            // Arrange
            var componentUnderTest = new EnumAttributeMap(SimpleEnum.Default, new[] { new Simple1Attribute() });

            // Act
            var actual = componentUnderTest.GetFirstAttribute <ChildSimple1Attribute>();

            // Assert
            actual.ShouldHaveSameValueAs(null);
        }
        public void GetAttributes_MatchingAttributes()
        {
            // Arrange
            var componentUnderTest = new EnumAttributeMap(SimpleEnum.Default, new Attribute[] { new Simple1Attribute {
                                                                                                    MyInt = 1
                                                                                                }, new Simple1Attribute {
                                                                                                    MyInt = 2
                                                                                                }, new ChildSimple1Attribute(), new Simple2Attribute() });

            // Act
            var actual = componentUnderTest.GetAttributes <Simple1Attribute>();

            // Assert
            actual.ShouldHaveSameValuesAs(new Attribute[] { new Simple1Attribute {
                                                                MyInt = 1
                                                            }, new Simple1Attribute {
                                                                MyInt = 2
                                                            }, new ChildSimple1Attribute() });
        }