Beispiel #1
0
        private void InicializeFruits()
        {
            Fruit apple      = new Apple(2, 3, GraphicsFruit);
            Fruit banana     = new Banana(6, 8, GraphicsFruit);
            Fruit brezel     = new Brezel(15, 6, GraphicsFruit);
            Fruit cherry     = new Cherry(19, 2, GraphicsFruit);
            Fruit peach      = new Peach(13, 4, GraphicsFruit);
            Fruit pear       = new Pear(11, 12, GraphicsFruit);
            Fruit strawberry = new Strawberry(4, 10, GraphicsFruit);

            fruits = new List <Fruit> {
                apple, banana, brezel, cherry, peach, pear, strawberry
            };

            foreach (var fruit in fruits)
            {
                string[] placeAvailable = AvailableFruitXY().Split();
                int      placeFruitX    = int.Parse(placeAvailable[0]);
                int      placeFruitY    = int.Parse(placeAvailable[1]);
                fruit.FruitPositionX = placeFruitX;
                fruit.FruitPositionY = placeFruitY;
            }

            fruits.RemoveAll(x => x.FruitPositionX >= Global.XMax || x.FruitPositionY >= Global.YMax);
        }
Beispiel #2
0
    void InitialRegist()
    {
        onClientConnect += ((NetworkConnection conn) => waitToConnect.Add(new Pear(conn)));

        RegistNet("connected it", (object ob) =>
        {
            if (hasConnected)
            {
                return;
            }
            myNetId = (int)ob;
            SendToServer("RemoveWait", ob);
            if (onConnectToServer_Stable != null)
            {
                onConnectToServer_Stable.Invoke((int)ob);
            }
        });
        //pear
        RegistNet("RemoveWait", (object ob) =>
        {
            Pear p = waitToConnect.Find(x => x.conn.connectionId == (int)ob);
            if (p == null)
            {
                return;
            }

            pears.Add(p);
            waitToConnect.Remove(p);
        });
    }
Beispiel #3
0
        private void AddFruitsToBoard()
        {
            var fruitPositions = this.GetPiecePositions(CountOfFruit, GlobalConstants.DisabledCellsAroundFruit);

            Random random = new Random();


            for (int i = 0; i < CountOfFruit; i++)
            {
                IFruit fruit;

                //// Pick the type of next fruit to add on the board.
                //// There is 50% chance of Apple and 50% chance of Pear.
                int randomNumber = random.Next(0, 200);
                if (randomNumber >= 100)
                {
                    fruit = new Apple();
                }
                else
                {
                    fruit = new Pear();
                }

                this.board.AddPiece(fruit, fruitPositions[i]);
            }
        }
 public void Chop(Mobile from)
 {
     if (from.InRange(this.GetWorldLocation(), 1))
     {
         if (from == m_sower)
         {
             from.Direction = from.GetDirectionTo(this);
             double lumberValue = from.Skills[SkillName.Lumberjacking].Value / 100;
             if ((lumberValue > .5) && (Utility.RandomDouble() <= lumberValue))
             {
                 Pear fruit = new Pear(Utility.Random(m_yield + 2));
                 from.AddToBackpack(fruit);
                 int cnt  = Utility.Random(20) + 1;
                 Log logs = new Log(cnt);
                 from.AddToBackpack(logs);
             }
             this.Delete();
             from.SendMessage("You chop the plant up");
         }
         else
         {
             from.SendMessage("You do not own this plant !!!");
         }
     }
     else
     {
         from.SendLocalizedMessage(500446);
     }
 }
Beispiel #5
0
        public void WarriorEatPearTest()
        {
            Fruit fruit       = new Pear();
            int   speedPoints = _warrior.SpeedPoints;

            _warrior.EatFruit(fruit);
            speedPoints += 1;
            Assert.AreEqual(speedPoints, _warrior.SpeedPoints);
        }
Beispiel #6
0
 public void EatFruitsTestEatPeaFail()
 {
     Point point = new Point() { X = 1, Y = 1 };
     Pigeon warior = new Pigeon() { Position = point };
     Fruit fruit = new Pear() { Position = new Point() { X = 0, Y = 0 } };
     List<Figure> fruits = new List<Figure>() { fruit };
     int wariorSpeed = warior.SpeedPoints;
     _playersManager.EatFruits(warior, fruits);
     Assert.AreEqual(wariorSpeed, warior.SpeedPoints);
     CollectionAssert.Contains(fruits, fruit);
 }
        public async void TestDbParameterQueries()
        {
            var configManager    = new ServiceDbConfigManager("TestService");
            var dbAccess         = CreateDbAccess(configManager);
            var dbAccessProvider = new TestDocumentDbAccessProvider(dbAccess);

            var fruitStore = new FruitStore(dbAccessProvider);

            await dbAccess.Open(new[] { fruitStore });

            var pears = new List <Pear>();

            for (int i = 0; i < 50; i++)
            {
                var bartlett = new Pear
                {
                    Id     = Guid.NewGuid(),
                    Colour = "Red"
                };

                var comice = new Pear
                {
                    Id     = Guid.NewGuid(),
                    Colour = "Green"
                };

                await fruitStore.UpsertPear(bartlett);

                await fruitStore.UpsertPear(comice);

                pears.AddRange(new[] { bartlett, comice });
            }

            var r1 = await fruitStore.GetPearByQuery("[x].Colour = @colour", new[] { new DbParameter("colour", "Red") });

            Assert.Equal(50, r1.Length);
            Assert.True(r1.All(x => x.Colour == "Red"));

            var r2 = await fruitStore.GetPearByQuery("[x].Colour = @colour", new[] { new DbParameter("@colour", "Red") });

            Assert.Equal(50, r2.Length);
            Assert.True(r2.All(x => x.Colour == "Red"));

            var r3 = await fruitStore.GetPearByQuery("[x].Colour = @colour", new[] { new DbParameter("colour", "Green") });

            Assert.Equal(50, r3.Length);
            Assert.True(r3.All(x => x.Colour == "Green"));

            var r4 = await fruitStore.GetPearByQuery("[x].Colour = @colour", new[] { new DbParameter("colour", "Blue") });

            Assert.Empty(r4);
        }
Beispiel #8
0
        public void AddPieceWithValidParametersShouldUpdateThePositionOfThePiece()
        {
            // Arrange
            var    board    = new Board();
            IPiece piece    = new Pear();
            var    position = new Position(4, 4);

            // Act
            board.AddPiece(piece, position);

            // Assert
            Assert.AreEqual(position, piece.Position);
        }
        public async void TestMetadataQueries()
        {
            var configManager = new ServiceDbConfigManager("TestService");
            var dbAccess      = await CreateDbAccess(configManager);

            var dbAccessProvider = new TestDocumentDbAccessProvider(dbAccess);

            var fruitStore = new FruitStore(dbAccessProvider);

            var bartlett = new Pear
            {
                Id     = Guid.NewGuid(),
                Colour = "Red"
            };

            var comice = new Pear
            {
                Id     = Guid.NewGuid(),
                Colour = "Green"
            };

            for (int i = 0; i < 50; i++)
            {
                // Mutate the record.
                bartlett.Colour = i % 2 == 0 ? "Red" : "DarkRed";

                await fruitStore.UpsertPear(bartlett);

                await fruitStore.UpsertPear(comice);
            }

            await fruitStore.DeletePearById(bartlett.Id);

            var r1 = await fruitStore.GetPearByQuery("[x].Colour = @colour", new[] { new DbParameter("colour", "Red") });

            Assert.True(r1.All(x => x.Colour == "Red"));

            var r2 = await fruitStore.GetPearVersions(bartlett.Id.ToString());

            Assert.NotNull(r2);
            Assert.Equal(51, r2.Metadata.Count);
            Assert.Equal(1, r2.Metadata[0].Version);
            Assert.False(r2.Metadata[0].IsDeleted);

            var lastVersion = r2.Metadata.Last();

            Assert.Equal(51, lastVersion.Version);
            Assert.True(lastVersion.IsDeleted);
            Assert.True(lastVersion.CreatedTime < lastVersion.ModifiedTime);
            Assert.Equal(r2.Metadata[0].CreatedTime, lastVersion.CreatedTime);
        }
Beispiel #10
0
        public void AddPieceWithValidParametersShouldAddThePieceToTheBoard()
        {
            // Arrange
            var    board    = new Board();
            IPiece piece    = new Pear();
            var    position = new Position(4, 4);

            // Act
            board.AddPiece(piece, position);
            var extractedPiece = board.GetPieceAtPosition(position);

            // Assert
            Assert.AreSame(piece, extractedPiece);
        }
Beispiel #11
0
        public void WarriorGainsSpeedWhenItEatsPear()
        {
            // Arrange
            var monkey   = new Monkey('1');
            var pear     = new Pear();
            var oldSpeed = monkey.Speed;

            // Act
            monkey.Eat(pear);

            // Assert
            var newSpeed = monkey.Speed;

            Assert.Greater(newSpeed, oldSpeed);
        }
Beispiel #12
0
        public void RemovePieceShouldNullThisPositionOnTheBoard()
        {
            // Arrange
            var    board    = new Board();
            IPiece piece    = new Pear();
            var    position = new Position(4, 4);

            board.AddPiece(piece, position);

            // Act
            board.RemovePiece(position);
            var extractedPiece = board.GetPieceAtPosition(position);

            // Assert
            Assert.AreEqual(null, extractedPiece);
        }
Beispiel #13
0
        /// <summary>
        /// Oh no! all the fruits are named the wrong names!
        /// Fix them, both in the constructor and the FruitSalad.AddX methods!
        /// </summary>
        public void FirstExercise()
        {
            var pear   = new Apple();
            var apple  = new Pear();
            var orange = new Lime();
            var lime   = new Orange();


            // Creat the CustomFruitSaladImplementation
            var fruitSalad = new FruitSalad();

            fruitSalad.AddApple(pear);
            fruitSalad.AddPear(apple);
            fruitSalad.AddLime(orange);
            fruitSalad.AddOrange(lime);
        }
        /// <summary>
        /// Oh no! We have to implement our own fruit salad.
        /// Create a class, and give it some AddX() methods for each fruit.
        /// </summary>
        public void SecondExercise()
        {
            var apple  = new Apple();
            var pear   = new Pear();
            var lime   = new Lime();
            var orange = new Orange();


            // Create the CustomFruitSaladImplementation
            var fruitSalad = new CustomFruitSaladImplementation();

            // Implement an AddX for each fruit type above and call it
            // It doesn't have to do anything
            // E.g. fruitSalad.AddApple(apple);
            // fruitSalad.AddPear(pear);
        }
        public void ContainerInjectionIgnoringDuplicates()
        {
            var sut = new Container();

            sut.Register <Fruit>(new Apple());

            var auxContainer = new Container();
            var myPear       = new Pear();

            auxContainer.Register <Fruit>(myPear).And().Register <FruitPie>();

            sut.ImportContainer(auxContainer, ImportOptions.IgnoreDuplicates)
            .GetComponent <Fruit>()
            .Should()
            .BeOfType <Apple>();
        }
        public void Chop(Mobile from)
        {
            if (from.InRange(this.GetWorldLocation(), 2))
            {
                if ((chopTimer == null) || (!chopTimer.Running))
                {
                    if ((TreeHelper.TreeOrdinance) && (from.AccessLevel == AccessLevel.Player))
                    {
                        if (from.Region is Regions.GuardedRegion)
                        {
                            from.CriminalAction(true);
                        }
                    }

                    chopTimer = new TreeHelper.ChopAction(from);

                    Point3D pnt = this.Location;
                    Map     map = this.Map;

                    from.Direction = from.GetDirectionTo(this);
                    chopTimer.Start();

                    double cookValue = from.Skills[SkillName.Lumberjacking].Value / 100;
                    if ((cookValue > .5) && (Utility.RandomDouble() <= cookValue))
                    {
                        Pear fruit = new Pear((int)Utility.Random(13) + m_yield);
                        from.AddToBackpack(fruit);

                        int cnt  = Utility.Random((int)(cookValue * 10) + 1);
                        Log logs = new Log(cnt);
                        from.AddToBackpack(logs);

                        FruitTreeStump i_stump = new FruitTreeStump(typeof(PearTree));
                        Timer          poof    = new StumpTimer(this, i_stump, from);
                        poof.Start();
                    }
                    else
                    {
                        from.SendLocalizedMessage(500495);
                    }
                }
            }
            else
            {
                from.SendLocalizedMessage(500446);
            }
        }
Beispiel #17
0
        public void FruitIntoDeprecatedZoneTest()
        {
            Figure fruit = new Apple()
            {
                Position = new Point {
                    X = 4, Y = 6
                }
            };
            Figure otherFruit = new Pear()
            {
                Position = new Point {
                    X = 3, Y = 6
                }
            };

            Assert.IsTrue(fruit.IntoDeprecatedZone(otherFruit));
        }
Beispiel #18
0
        static void Main(string[] args)
        {
            IItem banana = new Banana();
            IItem apple  = new Apple();
            IItem pear   = new Pear();

            IOperation operation = new Eat();

            Console.WriteLine(banana.AcceptOperation(operation));
            Console.WriteLine(apple.AcceptOperation(operation));
            Console.WriteLine(pear.AcceptOperation(operation));

            operation = new Throw();

            Console.WriteLine(banana.AcceptOperation(operation));
            Console.WriteLine(apple.AcceptOperation(operation));
            Console.WriteLine(pear.AcceptOperation(operation));
        }
        public async void TestCustomDocumentMetadata()
        {
            var configManager    = new ServiceDbConfigManager("TestService");
            var dbAccess         = CreateDbAccess(configManager);
            var dbAccessProvider = new TestDocumentDbAccessProvider(dbAccess);
            var metadataSource   = new TestDocumentMetadataSource("User1");

            var fruitStore = new FruitStore(dbAccessProvider, metadataSource);

            await dbAccess.Open(new[] { fruitStore });

            var bartlett = new Pear
            {
                Id     = Guid.NewGuid(),
                Colour = "Red"
            };

            await fruitStore.UpsertPear(bartlett);

            metadataSource.ActorId = "User2";
            await fruitStore.UpsertPear(bartlett);

            metadataSource.ActorId = "User3";
            await fruitStore.DeletePearById(bartlett.Id);

            var r1 = await fruitStore.GetPearById(bartlett.Id, 1);

            Assert.Equal("User1", r1.Metadata.ActorId);

            var r2 = await fruitStore.GetPearById(bartlett.Id, 2);

            Assert.Equal("User2", r2.Metadata.ActorId);

            var r3 = await fruitStore.GetPearById(bartlett.Id, 3);

            Assert.True(r3.Metadata.IsDeleted);
            Assert.Equal("User3", r3.Metadata.ActorId);
        }
Beispiel #20
0
        private static async Task WriteFruitsAsync(IUnitOfWork context)
        {
            Console.WriteLine("Retrieving Pyrasta Pear");
            Pear pyrastaPear = await context.Pears.FindByIdAsync(_pyrastaPearId.ToString());

            Console.WriteLine($"\tType: {pyrastaPear.Type} Id {pyrastaPear.Id}");

            Console.WriteLine("Retrieving Cortland Apples.");
            IEnumerable <Apple> cortlandApples = await context.Apples.QueryAsync(new CortlandApplesQuery());

            foreach (Apple apple in cortlandApples.ToList())
            {
                Console.WriteLine($"\tType: {apple.Type} Id: {apple.Id}");
            }

            Console.WriteLine("Retrieving Favourite Bananas.");
            FavouriteBananaTypes favouriteBananaTypes = new FavouriteBananaTypes("Burro", "Lady Finger");
            IEnumerable <Banana> favouriteBananas     = await context.Bananas.QueryAsync(new LadyFingerBananasQuery(favouriteBananaTypes));

            foreach (Banana banana in favouriteBananas.ToList())
            {
                Console.WriteLine($"\tType: {banana.Type} Id: {banana.Id}");
            }
        }
        public async void TestMultipleStoreDocumentTypes()
        {
            var configManager    = new ServiceDbConfigManager("TestService");
            var dbAccess         = CreateDbAccess(configManager);
            var dbAccessProvider = new TestDocumentDbAccessProvider(dbAccess);

            var fruitStore = new FruitStore(dbAccessProvider);

            await dbAccess.Open(new[] { fruitStore });

            var apples = new List <Apple>();
            var pears  = new List <Pear>();

            for (int i = 0; i < 50; i++)
            {
                var gala = new Apple
                {
                    Id   = Guid.NewGuid(),
                    Type = "Gala"
                };

                var fuji = new Apple
                {
                    Id   = Guid.NewGuid(),
                    Type = "Fuji"
                };

                await fruitStore.UpsertApple(gala);

                await fruitStore.UpsertApple(fuji);

                apples.AddRange(new[] { gala, fuji });

                var bartlett = new Pear
                {
                    Id     = Guid.NewGuid(),
                    Colour = "Red"
                };

                var comice = new Pear
                {
                    Id     = Guid.NewGuid(),
                    Colour = "Green"
                };

                await fruitStore.UpsertPear(bartlett);

                await fruitStore.UpsertPear(comice);

                pears.AddRange(new[] { bartlett, comice });
            }

            var r1 = await fruitStore.GetAppleByQuery("[x].Type = 'Gala'");

            Assert.Equal(50, r1.Length);
            Assert.True(r1.All(x => x.Type == "Gala"));

            var r2 = await fruitStore.GetAllApples();

            Assert.Equal(100, r2.Length);

            var lastApple = apples.Last();
            var r3        = await fruitStore.GetAppleById(lastApple.Id);

            Assert.Equal(lastApple.Id, r3.Id);
            Assert.Equal(lastApple.Type, r3.Type);

            var r4 = await fruitStore.GetAppleByIds(apples.Select(x => x.Id.ToString()));

            Assert.Equal(100, r4.Length);

            var r5 = await fruitStore.GetPearByQuery("[x].Colour = @colour", new[] { new DbParameter("colour", "Red") });

            Assert.Equal(50, r5.Length);
            Assert.True(r5.All(x => x.Colour == "Red"));

            var r6 = await fruitStore.GetAllPears();

            Assert.Equal(100, r6.Length);

            var lastPear = pears.Last();
            var r7       = await fruitStore.GetPearById(lastPear.Id);

            Assert.Equal(lastPear.Id, r7.Id);
            Assert.Equal(lastPear.Colour, r7.Colour);
        }
        public override void OnDoubleClick(Mobile from)
        {
            if (m_sower == null || m_sower.Deleted)
            {
                m_sower = from;
            }
            if (from != m_sower)
            {
                from.SendMessage("You do not own this plant !!!"); return;
            }

            if (from.Mounted && !CropHelper.CanWorkMounted)
            {
                from.SendMessage("You cannot harvest a crop while mounted."); return;
            }
            if (DateTime.UtcNow > lastpicked.AddSeconds(3))
            {
                lastpicked = DateTime.UtcNow;
                int cookValue = (int)from.Skills[SkillName.Cooking].Value / 20;
                if (cookValue == 0)
                {
                    from.SendMessage("You have no idea how to harvest this crop."); return;
                }
                if (from.InRange(this.GetWorldLocation(), 1))
                {
                    if (m_yield < 1)
                    {
                        from.SendMessage("There is nothing here to harvest.");
                    }
                    else
                    {
                        from.Direction = from.GetDirectionTo(this);
                        from.Animate(from.Mounted ? 29:32, 5, 1, true, false, 0);
                        m_lastvisit = DateTime.UtcNow;
                        if (cookValue > m_yield)
                        {
                            cookValue = m_yield + 1;
                        }
                        int pick = Utility.RandomMinMax(cookValue - 4, cookValue);
                        if (pick < 0)
                        {
                            pick = 0;
                        }
                        if (pick == 0)
                        {
                            from.SendMessage("You do not manage to harvest any crops."); return;
                        }
                        m_yield -= pick;
                        from.SendMessage("You harvest {0} crop{1}!", pick, (pick == 1 ? "" : "s"));
                        if (m_yield < 1)
                        {
                            ((Item)this).ItemID = pickedGraphic;
                        }
                        Pear crop = new Pear(pick);
                        from.AddToBackpack(crop);
                        if (!regrowTimer.Running)
                        {
                            regrowTimer.Start();
                        }
                    }
                }
                else
                {
                    from.SendMessage("You are too far away to harvest anything.");
                }
            }
        }
Beispiel #23
0
 static void PartialSample()
 {
     Pear pear = new Pear("Yellow");
 }
        public override void OnDoubleClick(Mobile from)
        {
            if (from.Mounted && !TreeHelper.CanPickMounted)
            {
                from.SendMessage("You cannot pick fruit while mounted.");
                return;
            }

            if (DateTime.UtcNow > lastpicked.AddSeconds(3))
            {
                lastpicked = DateTime.UtcNow;

                int cookValue = (int)from.Skills[SkillName.Cooking].Value / 30;
                if (from.Mounted)
                {
                    ++cookValue;
                }

                if (cookValue < 0)
                {
                    from.SendMessage("You have no idea how to pick this fruit.");
                    return;
                }

                if (from.InRange(this.GetWorldLocation(), 2))
                {
                    if (m_yield < 1)
                    {
                        from.SendMessage("There is nothing here to harvest.");
                    }
                    else
                    {
                        from.Direction = from.GetDirectionTo(this);

                        from.Animate(from.Mounted ? 26:17, 7, 1, true, false, 0);

                        if (cookValue < m_yield)
                        {
                            cookValue = m_yield + 1;
                        }

                        int pick = Utility.Random(cookValue);
                        if (pick == 0)
                        {
                            from.SendMessage("You do not manage to gather any fruit.");
                            return;
                        }

                        m_yield -= pick;
                        from.SendMessage("You pick {0} pear{1}!", pick, (pick == 1 ? "" : "s"));

                        Pear crop = new Pear(pick);
                        from.AddToBackpack(crop);

                        if (!regrowTimer.Running)
                        {
                            regrowTimer.Start();
                        }
                    }
                }
                else
                {
                    from.SendLocalizedMessage(500446);
                }
            }
        }
Beispiel #25
0
 public void SendToPear(Pear p, string _type, object _msg)
 {
     SendToNetId(p.conn.connectionId, _type, _msg);
 }
        public async void TestDocumentPurge()
        {
            var configManager    = new ServiceDbConfigManager("TestService");
            var dbAccess         = CreateDbAccess(configManager);
            var dbAccessProvider = new TestDocumentDbAccessProvider(dbAccess);

            var fruitStore = new FruitStore(dbAccessProvider);

            await dbAccess.Open(new[] { fruitStore });

            var gala = new Apple {
                Id = Guid.NewGuid(), Type = "Gala"
            };
            var opal = new Apple {
                Id = Guid.NewGuid(), Type = "Opal"
            };

            var redBartlett = new Pear {
                Id = Guid.NewGuid(), Colour = "Red"
            };
            var darkRedBartlett = new Pear {
                Id = Guid.NewGuid(), Colour = "DarkRed"
            };

            await fruitStore.UpsertApple(gala);

            await fruitStore.UpsertApple(gala);

            await fruitStore.UpsertApple(gala);

            await fruitStore.UpsertApple(opal);

            await fruitStore.UpsertPear(redBartlett);

            await fruitStore.UpsertPear(darkRedBartlett);

            await fruitStore.UpsertPear(darkRedBartlett);

            await fruitStore.DeletePearById(darkRedBartlett.Id);

            var galaResult = await fruitStore.GetAppleVersions(gala.Id);

            var opalResult = await fruitStore.GetAppleVersions(opal.Id);

            var redBartlettResult = await fruitStore.GetPearVersions(redBartlett.Id);

            var darkRedBartlettResult = await fruitStore.GetPearVersions(redBartlett.Id);

            Assert.NotNull(galaResult);
            Assert.NotNull(opalResult);
            Assert.NotNull(redBartlettResult);
            Assert.NotNull(darkRedBartlettResult);

            await fruitStore.PurgeAllPears();

            galaResult = await fruitStore.GetAppleVersions(gala.Id);

            opalResult = await fruitStore.GetAppleVersions(opal.Id);

            redBartlettResult = await fruitStore.GetPearVersions(redBartlett.Id);

            darkRedBartlettResult = await fruitStore.GetPearVersions(redBartlett.Id);

            Assert.NotNull(galaResult);
            Assert.NotNull(opalResult);
            Assert.Null(redBartlettResult);
            Assert.Null(darkRedBartlettResult);

            await fruitStore.PurgeApple(gala.Id);

            galaResult = await fruitStore.GetAppleVersions(gala.Id);

            opalResult = await fruitStore.GetAppleVersions(opal.Id);

            Assert.Null(galaResult);
            Assert.NotNull(opalResult);

            await fruitStore.UpsertApple(gala);

            var versionedGalaResult = await fruitStore.GetVersionedAppleById(gala.Id);

            Assert.NotNull(versionedGalaResult);
            Assert.Equal(1, versionedGalaResult.Metadata.Version);
        }
        public async void TestVersionedQueries()
        {
            var configManager    = new ServiceDbConfigManager("TestService");
            var dbAccess         = CreateDbAccess(configManager);
            var dbAccessProvider = new TestDocumentDbAccessProvider(dbAccess);

            var fruitStore = new FruitStore(dbAccessProvider);

            await dbAccess.Open(new[] { fruitStore });

            var bartlett = new Pear
            {
                Id     = Guid.NewGuid(),
                Colour = "Red"
            };

            var comice = new Pear
            {
                Id     = Guid.NewGuid(),
                Colour = "Green"
            };

            for (int i = 0; i < 50; i++)
            {
                // Mutate the record.
                bartlett.Colour = i % 2 == 0 ? "Red" : "DarkRed";

                await fruitStore.UpsertPear(bartlett);

                await fruitStore.UpsertPear(comice);
            }

            await fruitStore.DeletePearById(bartlett.Id);

            const int lastVersion = 51;

            var r1 = await fruitStore.GetPearById(bartlett.Id, lastVersion);

            Assert.Equal(lastVersion, r1.Metadata.Version);
            Assert.True(r1.Metadata.IsDeleted);
            Assert.Equal("DarkRed", r1.Document.Colour);

            var r2 = await fruitStore.GetPearById(bartlett.Id, lastVersion - 1);

            Assert.Equal(lastVersion - 1, r2.Metadata.Version);
            Assert.False(r2.Metadata.IsDeleted);
            Assert.Equal("DarkRed", r2.Document.Colour);

            var r3 = await fruitStore.GetPearById(bartlett.Id, lastVersion - 2);

            Assert.Equal(lastVersion - 2, r3.Metadata.Version);
            Assert.False(r3.Metadata.IsDeleted);
            Assert.Equal("Red", r3.Document.Colour);

            var r4 = await fruitStore.GetPearById(bartlett.Id, 1);

            Assert.Equal(1, r4.Metadata.Version);
            Assert.False(r4.Metadata.IsDeleted);
            Assert.Equal("Red", r4.Document.Colour);

            var r5 = await fruitStore.GetPearById(comice.Id, 1);

            Assert.Equal(1, r5.Metadata.Version);
            Assert.False(r5.Metadata.IsDeleted);
            Assert.Equal("Green", r5.Document.Colour);
        }
        public async void TestMetadataQueries()
        {
            var configManager    = new ServiceDbConfigManager("TestService");
            var dbAccess         = CreateDbAccess(configManager);
            var dbAccessProvider = new TestDocumentDbAccessProvider(dbAccess);

            var fruitStore = new FruitStore(dbAccessProvider);

            await dbAccess.Open(new[] { fruitStore });

            var bartlett = new Pear
            {
                Id     = Guid.NewGuid(),
                Colour = "Red"
            };

            var comice = new Pear
            {
                Id     = Guid.NewGuid(),
                Colour = "Green"
            };

            for (int i = 0; i < 5; i++)
            {
                // Mutate the record.
                bartlett.Colour = i % 2 == 0 ? "Red" : "DarkRed";

                await fruitStore.UpsertPear(bartlett);

                await fruitStore.UpsertPear(comice);

                Thread.Sleep(1000);
            }

            await fruitStore.DeletePearById(bartlett.Id);

            var r1 = await fruitStore.GetPearByQuery("[x].Colour = @colour", new[] { new DbParameter("colour", "Red") });

            Assert.True(r1.All(x => x.Colour == "Red"));

            var r2 = await fruitStore.GetPearVersions(bartlett.Id);

            Assert.NotNull(r2);
            Assert.Equal(6, r2.Metadata.Count);
            Assert.Equal(1, r2.Metadata[0].Version);
            Assert.False(r2.Metadata[0].IsDeleted);

            var lastVersion = r2.Metadata.Last();

            Assert.Equal(6, lastVersion.Version);
            Assert.True(lastVersion.IsDeleted);
            Assert.True(lastVersion.CreatedTime < lastVersion.ModifiedTime);
            Assert.Equal(r2.Metadata[0].CreatedTime, lastVersion.CreatedTime);

            for (var i = 1; i < r2.Metadata.Count; i++)
            {
                var prev    = r2.Metadata[i - 1];
                var current = r2.Metadata[i];

                Assert.True(current.ModifiedTime > prev.ModifiedTime);
                Assert.True(current.ModifiedTime - prev.ModifiedTime >= TimeSpan.FromSeconds(1));

                Assert.True(current.ModifiedTime > prev.CreatedTime);
                Assert.Equal(current.CreatedTime, prev.CreatedTime);

                Assert.False(prev.IsDeleted);
            }
        }
Beispiel #29
0
        public override void OnDoubleClick(Mobile from)
        {
            if (from.Mounted && !TreeHelper.CanPickMounted)
            {
                from.SendMessage("You cannot pick fruit while mounted.");
                return;
            }

            if (DateTime.Now > lastpicked.AddSeconds(3))               // 3 seconds between picking
            {
                lastpicked = DateTime.Now;

                int lumberValue = (int)from.Skills[SkillName.Lumberjacking].Value / 20;
                if (from.Mounted)
                {
                    ++lumberValue;
                }

                if (lumberValue == 0)
                {
                    from.SendMessage("You have no idea how to pick this fruit.");
                    return;
                }

                if (from.InRange(this.GetWorldLocation(), 2))
                {
                    if (m_yield < 1)
                    {
                        from.SendMessage("There is nothing here to harvest.");
                    }
                    else                     //check skill
                    {
                        from.Direction = from.GetDirectionTo(this);

                        from.Animate(from.Mounted ? 26:17, 7, 1, true, false, 0);

                        if (lumberValue > m_yield)
                        {
                            lumberValue = m_yield + 1;
                        }

                        int pick = Utility.Random(lumberValue);
                        if (pick == 0)
                        {
                            from.SendMessage("You do not manage to gather any fruit.");
                            return;
                        }

                        m_yield -= pick;
                        from.SendMessage("You pick {0} pear{1}!", pick, (pick == 1 ? "" : "s"));

                        //PublicOverheadMessage( MessageType.Regular, 0x3BD, false, string.Format( "{0}", m_yield ));

                        Pear crop = new Pear(pick);
                        from.AddToBackpack(crop);

                        if (!regrowTimer.Running)
                        {
                            regrowTimer.Start();
                        }
                    }
                }
                else
                {
                    from.SendLocalizedMessage(500446);                       // That is too far away.
                }
            }
        }
 public async Task UpsertPear(Pear doc)
 {
     await StoreClient.UpsertDocumentAsync(doc, _pearMapping, new OperationOptions());
 }