public void GetValueInfos_CachesValues()
        {
            var valueDiscoveryServiceMock = MockRepository.GenerateMock <IExtensibleEnumValueDiscoveryService>();

            valueDiscoveryServiceMock
            .Expect(mock => mock.GetValueInfos(Arg <ExtensibleEnumDefinition <Color> > .Is.Anything))
            .Return(GetInfos(_red))
            .Repeat.Once();
            valueDiscoveryServiceMock.Replay();

            var extensibleEnumDefinition = new ExtensibleEnumDefinition <Color> (valueDiscoveryServiceMock);
            var values1 = extensibleEnumDefinition.GetValueInfos();
            var values2 = extensibleEnumDefinition.GetValueInfos();

            valueDiscoveryServiceMock.VerifyAllExpectations();
            Assert.That(values1, Is.SameAs(values2));
        }
        public void GetValueInfos_PassesExtensibleEnumDefinitionInstance_ToExtensibleEnumValueDiscoveryService()
        {
            var valueDiscoveryServiceMock = MockRepository.GenerateMock <IExtensibleEnumValueDiscoveryService>();
            var infos = GetInfos(_red);

            valueDiscoveryServiceMock.Stub(mock => mock.GetValueInfos(Arg <ExtensibleEnumDefinition <Color> > .Is.Anything)).Return(infos);

            var extensibleEnumDefinition = new ExtensibleEnumDefinition <Color> (valueDiscoveryServiceMock);

            extensibleEnumDefinition.GetValueInfos();

            valueDiscoveryServiceMock.AssertWasCalled(mock => mock.GetValueInfos(extensibleEnumDefinition));
        }