public async Task Storing_value()
        {
            var dictionary = new MockReliableDictionary <Guid, MyDto>(new Uri("fabric://popo"));

            var dto = new MyDto(Guid.NewGuid(), "toto", "jean", 32, new DateTime(1985, 02, 11));
            var tx  = new MockTransaction(null, 1);
            await dictionary.AddAsync(tx, dto.Id, dto);
        }
Exemple #2
0
 public bool Equals(MyDto other)
 {
     if (ReferenceEquals(null, other))
     {
         return(false);
     }
     if (ReferenceEquals(this, other))
     {
         return(true);
     }
     return(Id.Equals(other.Id) && string.Equals(FirstName, other.FirstName) && string.Equals(Lastname, other.Lastname) && Score == other.Score && Birth.Equals(other.Birth));
 }
Exemple #3
0
        public void ExpressionMember_should_give_index_value()
        {
            var dto = new MyDto(Guid.NewGuid(), "toto", "jean", 32, new DateTime(1985, 02, 11));
            Expression <Func <MyDto, string> > expression1 = v => v.FirstName;
            Expression <Func <MyDto, string> > expression2 = v => v.Birth.ToString();

            var f1     = expression1.Compile();
            var f2     = expression2.Compile();
            var value1 = f1(dto);
            var value2 = f2(dto);

            Check.That(value1).Equals("toto");
            Check.That(value2).IsEqualTo(new DateTime(1985, 02, 11).ToString());
        }
Exemple #4
0
        public async Task InsertRecord_should_index_members()
        {
            var store = await DataStore <Guid, MyDto> .Build(
                () => new InMemoryKeyValueStore <Guid, MyDto>(),
                async _ => new InMemoryKeyValueStore <FieldValue, HashSet <Guid> >(),
                dto => dto.FirstName,
                dto => dto.Lastname,
                dto => dto.Birth.Day.ToString());

            for (var i = 0; i < 10; i++)
            {
                var d   = 1000 + i * 200;
                var dto = new MyDto(Guid.NewGuid(), $"firstname {i}", $"lastname {i}", i,
                                    new DateTime(1985, 02, 11) - TimeSpan.FromDays(d));

                await store.Insert(dto);
            }

            var someId       = (await store.Records.AllKeys()).First();
            var resultsById  = (await new QueryById(someId).Execute(store)).ToList();
            var expectedById = (await store.Records.AllValues()).First();

            Check.That(resultsById).CountIs(1);
            Check.That(resultsById.Single().FirstName).IsEqualTo(expectedById.FirstName);
            Check.That(resultsById.Single().Lastname).IsEqualTo(expectedById.Lastname);
            Check.That(resultsById.Single().Score).IsEqualTo(expectedById.Score);

            var expectedByAndoperation =
                (await
                 new And(
                     new QueryByField("FirstName", "firstname 5"),
                     new QueryByField("Lastname", "lastname 5")).Execute(store)).ToList();

            Check.That(expectedByAndoperation).CountIs(1);
            Check.That(expectedByAndoperation.Single().FirstName).IsEqualTo("firstname 5");

            var expectedByOroperation =
                (await
                 new Or(
                     new QueryByField("FirstName", "firstname 5"),
                     new QueryByField("Lastname", "lastname 4")).Execute(store))
                .OrderBy(r => r.Score)
                .ToList();

            Check.That(expectedByOroperation).CountIs(2);
            Check.That(expectedByOroperation[0].FirstName).IsEqualTo("firstname 4");
            Check.That(expectedByOroperation[1].FirstName).IsEqualTo("firstname 5");

            var expectedByOroperation2 =
                (await
                 new Or(
                     new QueryByField("FirstName", "firstname 5"),
                     new Or(
                         new QueryByField("Lastname", "lastname 4"),
                         new QueryByField("Lastname", "lastname 2")
                         )).Execute(store))
                .OrderBy(r => r.Score)
                .ToList();

            Check.That(expectedByOroperation2).CountIs(3);
            Check.That(expectedByOroperation2[0].FirstName).IsEqualTo("firstname 2");
            Check.That(expectedByOroperation2[1].FirstName).IsEqualTo("firstname 4");
            Check.That(expectedByOroperation2[2].FirstName).IsEqualTo("firstname 5");
        }
        public async Task InsertRecord_should_index_members()
        {
            IReliableDictionary <Guid, MyDto> wrappedReliableDictionary = new MockReliableDictionary <Guid, MyDto>(new Uri("fabric://popo"));
            Func <ITransaction> transactionBuilder = () => new MockTransaction(null, 1);

            var store = await DataStore <Guid, MyDto> .Build(
                () => new ServiceFabAsyncKeyValueStore <Guid, MyDto>(wrappedReliableDictionary, transactionBuilder),
                async _ => new ServiceFabAsyncKeyValueStore <FieldValue, HashSet <Guid> >(new MockReliableDictionary <FieldValue, HashSet <Guid> >(new Uri("fabric://popo")), transactionBuilder),
                new Expression <Func <MyDto, string> >[]
            {
                dto => dto.FirstName,
                dto => dto.Lastname,
                dto => dto.Birth.Day.ToString()
            });

            for (var i = 0; i < 10; i++)
            {
                var d   = 1000 + i * 200;
                var dto = new MyDto(Guid.NewGuid(), $"firstname {i}", $"lastname {i}", i,
                                    new DateTime(1985, 02, 11) - TimeSpan.FromDays(d));
                await store.Insert(dto);
            }

            var someId       = (await store.Records.AllKeys()).First();
            var resultsById  = (await new QueryById(someId).Execute(store)).ToList();
            var expectedById = (await store.Records.AllValues()).First();

            Check.That(resultsById).CountIs(1);
            Check.That(resultsById.Single().FirstName).IsEqualTo(expectedById.FirstName);
            Check.That(resultsById.Single().Lastname).IsEqualTo(expectedById.Lastname);
            Check.That(resultsById.Single().Score).IsEqualTo(expectedById.Score);

            var expectedByAndoperation =
                (await
                 new And(
                     new QueryByField("FirstName", "firstname 5"),
                     new QueryByField("Lastname", "lastname 5")).Execute(store)).ToList();

            Check.That(expectedByAndoperation).CountIs(1);
            Check.That(expectedByAndoperation.Single().FirstName).IsEqualTo("firstname 5");

            var expectedByOroperation =
                (await
                 new Or(
                     new QueryByField("FirstName", "firstname 5"),
                     new QueryByField("Lastname", "lastname 4")).Execute(store))
                .OrderBy(r => r.Score)
                .ToList();

            Check.That(expectedByOroperation).CountIs(2);
            Check.That(expectedByOroperation[0].FirstName).IsEqualTo("firstname 4");
            Check.That(expectedByOroperation[1].FirstName).IsEqualTo("firstname 5");

            var expectedByOroperation2 =
                (await
                 new Or(
                     new QueryByField("FirstName", "firstname 5"),
                     new Or(
                         new QueryByField("Lastname", "lastname 4"),
                         new QueryByField("Lastname", "lastname 2")
                         )).Execute(store))
                .OrderBy(r => r.Score)
                .ToList();

            Check.That(expectedByOroperation2).CountIs(3);
            Check.That(expectedByOroperation2[0].FirstName).IsEqualTo("firstname 2");
            Check.That(expectedByOroperation2[1].FirstName).IsEqualTo("firstname 4");
            Check.That(expectedByOroperation2[2].FirstName).IsEqualTo("firstname 5");

            var myDtos = await store.Find(q => q.Where(m => m.Lastname == "lastname 4" || m.FirstName == "firstname 2"));

            Check.That(myDtos).CountIs(2);
        }