public void Pass_OnRegisterFlyweight()
        {
            // arrange
            var provider = new NamedFlyweightProvider();

            // act
            provider.RegisterFlyweight(TestFlyweight.FlyweightOne);

            // assert
            Assert.AreSame(TestFlyweight.FlyweightOne, provider.GetFlyweight(TestFlyweight.FlyweightOne.Name));
        }
        public void Fail_OnRegister_ByArgumentException_BecauseOfDoubleRegistration()
        {
            // arrange
            var provider = new NamedFlyweightProvider();

            // act
            provider.RegisterFlyweight(TestFlyweight.FlyweightOne);

            // assert
            Assert.Throws<ArgumentException>(() => provider.RegisterFlyweight(TestFlyweight.FlyweightOne));
        }
        public void Pass_OnGetAllFlyweights()
        {
            // arrange
            var provider = new NamedFlyweightProvider();
            provider.RegisterFlyweight(TestFlyweight.FlyweightOne);
            provider.RegisterFlyweight(TestFlyweight.FlyweightTwo);
            IFlyweight[] flyweights = null;

            // arrange
            flyweights = provider.GetAllFlyweights();

            // assert
            Assert.IsNotNull(flyweights);
            Assert.AreEqual(2, flyweights.Count());
            Assert.AreSame(TestFlyweight.FlyweightOne, flyweights[0]);
            Assert.AreSame(TestFlyweight.FlyweightTwo, flyweights[1]);
        }