Пример #1
0
        public void CompareExpression()
        {
            Expression <Func <int, int> > f1 = a => a;
            Expression <Func <int, int> > f2 = a => a;
            Expression <Func <int, int> > f3 = b => b;

            Assert.IsTrue(ExpressionComparer.AreEqual(f1, f2, checkParameterNames: true));
            Assert.IsTrue(ExpressionComparer.AreEqual(f1, f2, checkParameterNames: false));
            Assert.IsFalse(ExpressionComparer.AreEqual(f1, f3, checkParameterNames: true));
            Assert.IsTrue(ExpressionComparer.AreEqual(f1, f3, checkParameterNames: false));

            f1.Evaluate(1);
            Assert2.Throws <InvalidOperationException>("cache", () => f2.Evaluate(2));
        }
Пример #2
0
        public void RetrieveSealed()
        {
            using (Transaction tr = new Transaction())
                using (new EntityCache(EntityCacheType.ForceNewSealed))
                {
                    var albums = Database.Query <AlbumEntity>().ToList();

                    Assert2.AssertAll(GraphExplorer.FromRoots(albums), a => a.Modified == ModifiedState.Sealed);

                    Assert2.Throws <InvalidOperationException>("sealed", () => albums.First().Name = "New name");


                    var notes = Database.Query <NoteWithDateEntity>().ToList();
                    Assert2.AssertAll(GraphExplorer.FromRoots(notes), a => a.Modified == ModifiedState.Sealed);

                    //tr.Commit();
                }
        }
Пример #3
0
        public void NestedNamedRollback()
        {
            using (Transaction tr = new Transaction())
            {
                SetName("Mickey");

                Assert.AreEqual("Mickey", GetName());

                using (Transaction tr2 = new Transaction("hola"))
                {
                    SetName("Minie");

                    Assert.AreEqual("Minie", GetName());

                    using (Transaction tr3 = new Transaction())
                    {
                        SetName("Mouse");

                        Assert.AreEqual("Mouse", GetName());

                        //tr3.Commit();
                    }

                    Assert2.Throws <InvalidOperationException>(() =>
                    {
                        using (Transaction tr3 = new Transaction())
                        {
                            SetName("Mouse");

                            Assert.AreEqual("Mouse", GetName());

                            tr3.Commit();
                        }

                        tr2.Commit();
                    });
                }

                tr.Commit();
            }

            Assert.AreEqual("Mickey", GetName());
        }
Пример #4
0
        public void SaveManyMList()
        {
            using (Transaction tr = new Transaction())
                using (OperationLogic.AllowSave <AlbumEntity>())
                    using (OperationLogic.AllowSave <ArtistEntity>())
                    {
                        var prev = Database.MListQuery((AlbumEntity a) => a.Songs).Count();

                        var authors =
                            Database.Query <BandEntity>().Take(6).ToList().Concat <IAuthorEntity>(
                                Database.Query <ArtistEntity>().Take(8).ToList()).ToList();

                        List <AlbumEntity> albums = 0.To(16).Select(i => new AlbumEntity()
                        {
                            Name   = "System Greatest hits {0}".FormatWith(i),
                            Author = i < authors.Count ? authors[i] : new ArtistEntity {
                                Name = ".Net Framework"
                            },
                            Year  = 2001,
                            Songs = { new SongEntity {
                                          Name = "Compilation {0}".FormatWith(i)
                                      } },
                            State = AlbumState.Saved
                        }).ToList();

                        albums.SaveList();

                        Assert2.AssertAll(GraphExplorer.FromRoots(albums), a => !a.IsGraphModified);

                        Assert.AreEqual(prev + 16, Database.MListQuery((AlbumEntity a) => a.Songs).Count());

                        albums.ForEach(a => a.Name += "Updated");

                        albums.SaveList();

                        albums.ForEach(a => a.Songs.ForEach(s => s.Name = "Updated"));

                        albums.SaveList();

                        //tr.Commit();
                    }
        }
Пример #5
0
        public void SaveMList()
        {
            using (Transaction tr = new Transaction())
                using (OperationLogic.AllowSave <AlbumEntity>())
                    using (OperationLogic.AllowSave <ArtistEntity>())
                    {
                        var prev = Database.MListQuery((AlbumEntity a) => a.Songs).Count();

                        Type[] types = typeof(int).Assembly.GetTypes().Where(a => a.Name.Length > 3 && a.Name.StartsWith("A")).ToArray();

                        AlbumEntity album = new AlbumEntity()
                        {
                            Name   = "System Greatest hits",
                            Author = new ArtistEntity {
                                Name = ".Net Framework"
                            },
                            Year  = 2001,
                            Songs = types.Select(t => new SongEntity()
                            {
                                Name = t.Name
                            }).ToMList(),
                            State = AlbumState.Saved
                        }.Save();

                        Assert2.AssertAll(GraphExplorer.FromRoot(album), a => !a.IsGraphModified);

                        Assert.AreEqual(prev + types.Length, Database.MListQuery((AlbumEntity a) => a.Songs).Count());

                        album.Name += "Updated";

                        album.Save();

                        album.Songs.ForEach(a => a.Name = "Updated");

                        album.Save();

                        //tr.Commit();
                    }
        }
Пример #6
0
        public void StdDev()
        {
            Assert.AreEqual(null, new int[] { }.StdDev());
            Assert.AreEqual(null, new int?[] { }.StdDev());
            Assert.AreEqual(null, new int?[] { 1 }.StdDev());
            Assert.AreEqual(0, new int?[] { 1, 1, 1 }.StdDev());
            Assert.AreEqual(0, new int?[] { 1, null, 1 }.StdDev());
            Assert2.AreSimilar(Math.Sqrt(2), new int?[] { 1, null, 3 }.StdDev());

            Assert.AreEqual(null, new long[] { }.StdDev());
            Assert.AreEqual(null, new long?[] { }.StdDev());
            Assert.AreEqual(null, new long?[] { 1 }.StdDev());
            Assert.AreEqual(0, new long?[] { 1, 1, 1 }.StdDev());
            Assert.AreEqual(0, new long?[] { 1, null, 1 }.StdDev());
            Assert2.AreSimilar(Math.Sqrt(2), new long?[] { 1, null, 3 }.StdDev());

            Assert.AreEqual(null, new double[] { }.StdDev());
            Assert.AreEqual(null, new double?[] { }.StdDev());
            Assert.AreEqual(null, new double?[] { 1 }.StdDev());
            Assert.AreEqual(0, new double?[] { 1, 1, 1 }.StdDev());
            Assert.AreEqual(0, new double?[] { 1, null, 1 }.StdDev());
            Assert2.AreSimilar(Math.Sqrt(2), new double?[] { 1, null, 3 }.StdDev());

            Assert.AreEqual(null, new float[] { }.StdDev());
            Assert.AreEqual(null, new float?[] { }.StdDev());
            Assert.AreEqual(null, new float?[] { 1 }.StdDev());
            Assert.AreEqual(0, new float?[] { 1, 1, 1 }.StdDev());
            Assert.AreEqual(0, new float?[] { 1, null, 1 }.StdDev());
            Assert2.AreSimilar(Math.Sqrt(2), new float?[] { 1, null, 3 }.StdDev());

            Assert.AreEqual(null, new decimal[] { }.StdDev());
            Assert.AreEqual(null, new decimal?[] { }.StdDev());
            Assert.AreEqual(null, new decimal?[] { 1 }.StdDev());
            Assert.AreEqual(0, new decimal?[] { 1, 1, 1 }.StdDev());
            Assert.AreEqual(0, new decimal?[] { 1, null, 1 }.StdDev());
            Assert2.AreSimilar(Math.Sqrt(2), (double?)new decimal?[] { 1, null, 3 }.StdDev());
        }