Exemple #1
0
        public void Smoke()
        {
            using (var context = CreateMethodContext())
            {
                SaveBasicData(context);

                // Get dataset identifiers
                var dataSet0 = context.GetDataSet("DataSet0");
                var dataSet1 = context.GetDataSet("DataSet1");

                // Create keys
                var keyA0 = new BaseSampleKey()
                {
                    RecordName  = "A",
                    RecordIndex = 0
                };
                var keyB0 = new BaseSampleKey()
                {
                    RecordName  = "B",
                    RecordIndex = 0
                };

                // Verify the result of loading records from datasets A and B
                VerifyLoad(context, "DataSet0", keyA0);
                VerifyLoad(context, "DataSet1", keyA0);
                VerifyLoad(context, "DataSet0", keyB0);
                VerifyLoad(context, "DataSet1", keyB0);
            }
        }
Exemple #2
0
        /// <summary>Save derived record.</summary>
        private TemporalId SaveDerivedRecord(Context context, string dataSetName, string recordName, int recordIndex)
        {
            var rec = new DerivedSample();

            rec.RecordName           = recordName;
            rec.RecordIndex          = recordIndex;
            rec.DoubleElement        = 300.0;
            rec.LocalDateElement     = new LocalDate(2003, 5, 1);
            rec.LocalTimeElement     = new LocalTime(10, 15, 30);                                         // 10:15:30
            rec.LocalMinuteElement   = new LocalMinute(10, 15);                                           // 10:15
            rec.LocalDateTimeElement = new LocalDateTime(2003, 5, 1, 10, 15);                             // 2003-05-01T10:15:00
            rec.InstantElement       = new LocalDateTime(2003, 5, 1, 10, 15).ToInstant(DateTimeZone.Utc); // 2003-05-01T10:15:00
            rec.StringElement2       = String.Empty;                                                      // Test how empty value is recorded
            rec.DoubleElement2       = 200.0;

            // String collections
            rec.ArrayOfString = new string[] { "A", "B", "C" };
            rec.ListOfString  = new List <string>()
            {
                "A", "B", "C"
            };

            // Double collections
            rec.ArrayOfDouble = new double[] { 1.0, 2.0, 3.0 };
            rec.ListOfDouble  = new List <double>()
            {
                1.0, 2.0, 3.0
            };
            rec.ListOfNullableDouble = new List <double?>();
            rec.ListOfNullableDouble.Add(10.0);
            rec.ListOfNullableDouble.Add(null);
            rec.ListOfNullableDouble.Add(30.0);

            // Data element
            rec.DataElement = new ElementSample();
            rec.DataElement.DoubleElement3 = 1.0;
            rec.DataElement.StringElement3 = "AA";

            // Data element list
            rec.DataElementList = new List <ElementSample>();
            var elementList0 = new ElementSample();

            elementList0.DoubleElement3 = 1.0;
            elementList0.StringElement3 = "A0";
            rec.DataElementList.Add(elementList0);
            var elementList1 = new ElementSample();

            elementList1.DoubleElement3 = 2.0;
            elementList1.StringElement3 = "A1";
            rec.DataElementList.Add(elementList1);

            // Key element
            rec.KeyElement             = new BaseSampleKey();
            rec.KeyElement.RecordName  = "BB";
            rec.KeyElement.RecordIndex = 2;

            // Key element list
            rec.KeyElementList = new List <BaseSampleKey>();
            var keyList0 = new BaseSampleKey();

            keyList0.RecordName  = "B0";
            keyList0.RecordIndex = 3;
            rec.KeyElementList.Add(keyList0);
            var keyList1 = new BaseSampleKey();

            keyList1.RecordName  = "B1";
            keyList1.RecordIndex = 4;
            rec.KeyElementList.Add(keyList1);

            var dataSet = context.GetDataSet(dataSetName);

            context.SaveOne(rec, dataSet);
            return(rec.Id);
        }
Exemple #3
0
        public void QueryWithFilterOnDeletedRecord()
        {
            using (var context = CreateMethodContext())
            {
                // Create datasets
                var dataSet0 = context.CreateDataSet("DataSet0");

                // Create initial version of the records
                context.Log.Verify("Write A;0 record to A dataset");
                SaveMinimalRecord(context, "DataSet0", "A", 0, 1);

                var keyA0 = new BaseSampleKey
                {
                    RecordName  = "A",
                    RecordIndex = 0
                };

                // Load from storage before deletion
                if (true)
                {
                    var loadedRecord = context.LoadOrNull(keyA0, dataSet0);
                    context.Log.Assert(loadedRecord != null, "Record found before deletion assert.");
                }

                // Query before deletion
                if (true)
                {
                    var query = context.GetQuery <BaseSample>(dataSet0)
                                .Where(p => p.Version == 1)
                                .AsEnumerable();
                    int recordCount = 0;
                    foreach (var obj in query)
                    {
                        var dataSetName = context.LoadOrNull <DataSet>(obj.DataSet).DataSetName;
                        context.Log.Verify($"Query returned Key={obj.Key} DataSet={dataSetName} Version={obj.Version}");
                        recordCount++;
                    }

                    context.Log.Verify($"Query record count before deletion {recordCount}");
                }

                context.Log.Verify("Delete A;0 record in A dataset");
                context.Delete(keyA0, dataSet0);

                // Load from storage before deletion
                if (true)
                {
                    var loadedRecord = context.LoadOrNull(keyA0, dataSet0);
                    context.Log.Assert(loadedRecord == null, "Record not found after deletion assert.");
                }

                // Query after deletion
                if (true)
                {
                    var query = context.GetQuery <BaseSample>(dataSet0)
                                .Where(p => p.Version == 1)
                                .AsEnumerable();
                    int recordCount = 0;
                    foreach (var obj in query)
                    {
                        var dataSetName = context.LoadOrNull <DataSet>(obj.DataSet).DataSetName;
                        context.Log.Verify($"Query returned Key={obj.Key} DataSet={dataSetName} Version={obj.Version}");
                        recordCount++;
                    }

                    context.Log.Verify($"Query record count after deletion {recordCount}");
                }
            }
        }
Exemple #4
0
        public void PolymorphicQuery()
        {
            using (var context = CreateMethodContext())
            {
                // Saves data in A and B datasets, A is an import of B
                SaveCompleteData(context);

                // Look in B dataset
                var dataSet3 = context.GetDataSet("DataSet3");

                // Load record of derived types by base
                context.Log.Verify("Load all records by key as MongoTestData.");
                {
                    var key = new BaseSampleKey {
                        RecordName = "A", RecordIndex = 0
                    };
                    var obj = context.LoadOrNull(key, dataSet3);
                    context.Log.Verify($"    Key={obj.Key} Type={obj.GetType().Name}");
                }
                {
                    var key = new BaseSampleKey {
                        RecordName = "B", RecordIndex = 0
                    };
                    var obj = context.LoadOrNull(key, dataSet3);
                    context.Log.Verify($"    Key={obj.Key} Type={obj.GetType().Name}");
                }
                {
                    var key = new BaseSampleKey {
                        RecordName = "C", RecordIndex = 0
                    };
                    var obj = context.LoadOrNull(key, dataSet3);
                    context.Log.Verify($"    Key={obj.Key} Type={obj.GetType().Name}");
                }
                {
                    var key = new BaseSampleKey {
                        RecordName = "D", RecordIndex = 0
                    };
                    var obj = context.LoadOrNull(key, dataSet3);
                    context.Log.Verify($"    Key={obj.Key} Type={obj.GetType().Name}");
                }
                {
                    context.Log.Verify("Query by MongoTestData, unconstrained");
                    var query = context.GetQuery <BaseSample>(dataSet3).SortBy(p => p.RecordName).SortBy(p => p.RecordIndex);
                    foreach (var obj in query.AsEnumerable())
                    {
                        context.Log.Verify($"    Key={obj.Key} Type={obj.GetType().Name}");
                    }
                }
                {
                    context.Log.Verify("Query by DerivedSample : BaseSample which also picks up DerivedFromDerivedSample : DerivedSample, unconstrained");
                    var query = context.GetQuery <DerivedSample>(dataSet3).SortBy(p => p.RecordName).SortBy(p => p.RecordIndex);
                    foreach (var obj in query.AsEnumerable())
                    {
                        context.Log.Verify($"    Key={obj.Key} Type={obj.GetType().Name}");
                    }
                }
                {
                    context.Log.Verify("Query by OtherDerivedSample : BaseSample, unconstrained");
                    var query = context.GetQuery <OtherDerivedSample>(dataSet3).SortBy(p => p.RecordName).SortBy(p => p.RecordIndex);
                    foreach (var obj in query.AsEnumerable())
                    {
                        context.Log.Verify($"    Key={obj.Key} Type={obj.GetType().Name}");
                    }
                }
                {
                    context.Log.Verify("Query by DerivedFromDerivedSample : DerivedSample, where DerivedSample : BaseSample, unconstrained");
                    var query = context.GetQuery <DerivedFromDerivedSample>(dataSet3).SortBy(p => p.RecordName).SortBy(p => p.RecordIndex);
                    foreach (var obj in query.AsEnumerable())
                    {
                        context.Log.Verify($"    Key={obj.Key} Type={obj.GetType().Name}");
                    }
                }
            }
        }
Exemple #5
0
        public void TypeChange()
        {
            using (var context = CreateMethodContext())
            {
                // Create records with minimal data

                var dataSet0 = context.CreateDataSet("DataSet0");
                SaveDerivedRecord(context, "DataSet0", "A", 0);

                var dataSet1 = context.CreateDataSet("DataSet1", new TemporalId[] { dataSet0 });
                SaveDerivedFromDerivedRecord(context, "DataSet1", "B", 0);

                // Create keys
                var keyA0 = new BaseSampleKey()
                {
                    RecordName  = "A",
                    RecordIndex = 0
                };
                var keyB0 = new BaseSampleKey()
                {
                    RecordName  = "B",
                    RecordIndex = 0
                };

                // Verify the result of loading records from datasets A and B
                context.Log.Verify("Initial load");
                VerifyLoad(context, "DataSet0", keyA0);
                VerifyLoad(context, "DataSet1", keyA0);
                VerifyLoad(context, "DataSet0", keyB0);
                VerifyLoad(context, "DataSet1", keyB0);

                context.Log.Verify("Query in dataset DataSet0 for type DerivedSample");
                VerifyQuery <DerivedSample>(context, "DataSet0");
                context.Log.Verify("Query in dataset DataSet1 for type DerivedSample");
                VerifyQuery <DerivedSample>(context, "DataSet1");

                context.Log.Verify("Change A0 record type in B dataset to C");
                SaveOtherDerivedRecord(context, "DataSet1", "A", 0);
                VerifyLoad(context, "DataSet0", keyA0);
                VerifyLoad(context, "DataSet1", keyA0);

                context.Log.Verify("Query in dataset DataSet0 for type DerivedSample");
                VerifyQuery <DerivedSample>(context, "DataSet0");
                context.Log.Verify("Query in dataset DataSet1 for type DerivedSample");
                VerifyQuery <DerivedSample>(context, "DataSet1");

                context.Log.Verify("Change A0 record type in A dataset to C");
                SaveOtherDerivedRecord(context, "DataSet0", "A", 0);
                VerifyLoad(context, "DataSet0", keyA0);
                VerifyLoad(context, "DataSet1", keyA0);

                context.Log.Verify("Query in dataset DataSet0 for type DerivedSample");
                VerifyQuery <DerivedSample>(context, "DataSet0");
                context.Log.Verify("Query in dataset DataSet1 for type DerivedSample");
                VerifyQuery <DerivedSample>(context, "DataSet1");

                context.Log.Verify("Change B0 record type in B dataset to C");
                SaveOtherDerivedRecord(context, "DataSet1", "B", 0);
                VerifyLoad(context, "DataSet0", keyB0);
                VerifyLoad(context, "DataSet1", keyB0);

                context.Log.Verify("Query in dataset DataSet0 for type DerivedSample");
                VerifyQuery <DerivedSample>(context, "DataSet0");
                context.Log.Verify("Query in dataset DataSet1 for type DerivedSample");
                VerifyQuery <DerivedSample>(context, "DataSet1");
            }
        }
Exemple #6
0
        public void Delete()
        {
            using (var context = CreateMethodContext())
            {
                SaveBasicData(context);

                // Get dataset identifiers
                var dataSet0 = context.GetDataSet("DataSet0");
                var dataSet1 = context.GetDataSet("DataSet1");

                // Create keys
                var keyA0 = new BaseSampleKey()
                {
                    RecordName  = "A",
                    RecordIndex = 0
                };
                var keyB0 = new BaseSampleKey()
                {
                    RecordName  = "B",
                    RecordIndex = 0
                };

                // Verify the result of loading records from datasets A and B
                context.Log.Verify("Initial load");
                VerifyLoad(context, "DataSet0", keyA0);
                VerifyLoad(context, "DataSet1", keyA0);
                VerifyLoad(context, "DataSet0", keyB0);
                VerifyLoad(context, "DataSet1", keyB0);

                context.Log.Verify("Query in dataset DataSet0");
                VerifyQuery <BaseSample>(context, "DataSet0");
                context.Log.Verify("Query in dataset DataSet1");
                VerifyQuery <BaseSample>(context, "DataSet1");

                context.Log.Verify("Delete A0 record in B dataset");
                context.Delete(keyA0, dataSet1);
                VerifyLoad(context, "DataSet0", keyA0);
                VerifyLoad(context, "DataSet1", keyA0);

                context.Log.Verify("Query in dataset DataSet0");
                VerifyQuery <BaseSample>(context, "DataSet0");
                context.Log.Verify("Query in dataset DataSet1");
                VerifyQuery <BaseSample>(context, "DataSet1");

                context.Log.Verify("Delete A0 record in A dataset");
                context.Delete(keyA0, dataSet0);
                VerifyLoad(context, "DataSet0", keyA0);
                VerifyLoad(context, "DataSet1", keyA0);

                context.Log.Verify("Query in dataset DataSet0");
                VerifyQuery <BaseSample>(context, "DataSet0");
                context.Log.Verify("Query in dataset DataSet1");
                VerifyQuery <BaseSample>(context, "DataSet1");

                context.Log.Verify("Delete B0 record in B dataset");
                context.Delete(keyB0, dataSet1);
                VerifyLoad(context, "DataSet0", keyB0);
                VerifyLoad(context, "DataSet1", keyB0);

                context.Log.Verify("Query in dataset DataSet0");
                VerifyQuery <BaseSample>(context, "DataSet0");
                context.Log.Verify("Query in dataset DataSet1");
                VerifyQuery <BaseSample>(context, "DataSet1");
            }
        }