Exemple #1
0
        public void Test_Select_Adjacent_CrossJoin_Cache()
        {
            var store = DatabaseHelper.Default.GetStore();
            var data  = new CrossModel()
            {
                Xs = new List <int>()
                {
                    1, 2
                },
                Ys = new List <int>()
                {
                    5, 6
                },
            };

            var relation = store.From(data).Select("Xs.Item", "Ys.Item");
            var result   = relation.Body.ToArray();

            result.Length.ShouldBe(2 * 2);

            result[0][0].ShouldBeSameAs(result[1][0]);
            result[2][0].ShouldBeSameAs(result[3][0]);

            result[0][1].ShouldBeSameAs(result[2][1]);
            result[1][1].ShouldBeSameAs(result[3][1]);
        }
 public GamepadModel()
 {
     LeftThumbstick  = new ThumbstickModel();
     RightThumbstick = new ThumbstickModel();
     ActionButtons   = new ActionButtonsModel();
     Cross           = new CrossModel();
 }
Exemple #3
0
        public void Test_Select_Adjacent_CrossJoin()
        {
            var store = DatabaseHelper.Default.GetStore();
            var data  = new CrossModel()
            {
                Xs = new List <int>()
                {
                    1, 2, 3, 4
                },
                Ys = new List <int>()
                {
                    5, 6
                },
                Zs = new List <int>()
                {
                    7, 8, 9
                },
            };

            var rel1 = store.From(data).Select("Xs.Item", "Ys.Item", "Zs.Item");
            var rel2 = store.From(data).Select("Zs.Item", "Ys.Item", "Xs.Item");

            var data1 = rel1.Body.ToArray();
            var data2 = rel2.Body.ToArray();

            data1.Length.ShouldBe(4 * 2 * 3);

            data1[0].Select(f => f.Identity.Name).ShouldBe(new[] { "Xs.Item[0]", "Ys.Item[0]", "Zs.Item[0]" });
            data1[1].Select(f => f.Identity.Name).ShouldBe(new[] { "Xs.Item[0]", "Ys.Item[0]", "Zs.Item[1]" });
            data1[2].Select(f => f.Identity.Name).ShouldBe(new[] { "Xs.Item[0]", "Ys.Item[0]", "Zs.Item[2]" });
            data1[3].Select(f => f.Identity.Name).ShouldBe(new[] { "Xs.Item[0]", "Ys.Item[1]", "Zs.Item[0]" });
            data1[4].Select(f => f.Identity.Name).ShouldBe(new[] { "Xs.Item[0]", "Ys.Item[1]", "Zs.Item[1]" });
            data1[5].Select(f => f.Identity.Name).ShouldBe(new[] { "Xs.Item[0]", "Ys.Item[1]", "Zs.Item[2]" });

            data1[6].Select(f => f.Identity.Name).ShouldBe(new[] { "Xs.Item[1]", "Ys.Item[0]", "Zs.Item[0]" });
            data1[7].Select(f => f.Identity.Name).ShouldBe(new[] { "Xs.Item[1]", "Ys.Item[0]", "Zs.Item[1]" });
            data1[8].Select(f => f.Identity.Name).ShouldBe(new[] { "Xs.Item[1]", "Ys.Item[0]", "Zs.Item[2]" });
            data1[9].Select(f => f.Identity.Name).ShouldBe(new[] { "Xs.Item[1]", "Ys.Item[1]", "Zs.Item[0]" });
            data1[10].Select(f => f.Identity.Name).ShouldBe(new[] { "Xs.Item[1]", "Ys.Item[1]", "Zs.Item[1]" });
            data1[11].Select(f => f.Identity.Name).ShouldBe(new[] { "Xs.Item[1]", "Ys.Item[1]", "Zs.Item[2]" });

            data1[12].Select(f => f.Identity.Name).ShouldBe(new[] { "Xs.Item[2]", "Ys.Item[0]", "Zs.Item[0]" });
            data1[13].Select(f => f.Identity.Name).ShouldBe(new[] { "Xs.Item[2]", "Ys.Item[0]", "Zs.Item[1]" });
            data1[14].Select(f => f.Identity.Name).ShouldBe(new[] { "Xs.Item[2]", "Ys.Item[0]", "Zs.Item[2]" });
            data1[15].Select(f => f.Identity.Name).ShouldBe(new[] { "Xs.Item[2]", "Ys.Item[1]", "Zs.Item[0]" });
            data1[16].Select(f => f.Identity.Name).ShouldBe(new[] { "Xs.Item[2]", "Ys.Item[1]", "Zs.Item[1]" });
            data1[17].Select(f => f.Identity.Name).ShouldBe(new[] { "Xs.Item[2]", "Ys.Item[1]", "Zs.Item[2]" });

            data1[18].Select(f => f.Identity.Name).ShouldBe(new[] { "Xs.Item[3]", "Ys.Item[0]", "Zs.Item[0]" });
            data1[19].Select(f => f.Identity.Name).ShouldBe(new[] { "Xs.Item[3]", "Ys.Item[0]", "Zs.Item[1]" });
            data1[20].Select(f => f.Identity.Name).ShouldBe(new[] { "Xs.Item[3]", "Ys.Item[0]", "Zs.Item[2]" });
            data1[21].Select(f => f.Identity.Name).ShouldBe(new[] { "Xs.Item[3]", "Ys.Item[1]", "Zs.Item[0]" });
            data1[22].Select(f => f.Identity.Name).ShouldBe(new[] { "Xs.Item[3]", "Ys.Item[1]", "Zs.Item[1]" });
            data1[23].Select(f => f.Identity.Name).ShouldBe(new[] { "Xs.Item[3]", "Ys.Item[1]", "Zs.Item[2]" });

            data1[0].Select(f => (int)f.Snapshot).ShouldBe(new[] { 1, 5, 7 });
            data1[1].Select(f => (int)f.Snapshot).ShouldBe(new[] { 1, 5, 8 });
            data1[2].Select(f => (int)f.Snapshot).ShouldBe(new[] { 1, 5, 9 });
            data1[3].Select(f => (int)f.Snapshot).ShouldBe(new[] { 1, 6, 7 });
            data1[4].Select(f => (int)f.Snapshot).ShouldBe(new[] { 1, 6, 8 });
            data1[5].Select(f => (int)f.Snapshot).ShouldBe(new[] { 1, 6, 9 });

            data1[6].Select(f => (int)f.Snapshot).ShouldBe(new[] { 2, 5, 7 });
            data1[7].Select(f => (int)f.Snapshot).ShouldBe(new[] { 2, 5, 8 });
            data1[8].Select(f => (int)f.Snapshot).ShouldBe(new[] { 2, 5, 9 });
            data1[9].Select(f => (int)f.Snapshot).ShouldBe(new[] { 2, 6, 7 });
            data1[10].Select(f => (int)f.Snapshot).ShouldBe(new[] { 2, 6, 8 });
            data1[11].Select(f => (int)f.Snapshot).ShouldBe(new[] { 2, 6, 9 });

            data1[12].Select(f => (int)f.Snapshot).ShouldBe(new[] { 3, 5, 7 });
            data1[13].Select(f => (int)f.Snapshot).ShouldBe(new[] { 3, 5, 8 });
            data1[14].Select(f => (int)f.Snapshot).ShouldBe(new[] { 3, 5, 9 });
            data1[15].Select(f => (int)f.Snapshot).ShouldBe(new[] { 3, 6, 7 });
            data1[16].Select(f => (int)f.Snapshot).ShouldBe(new[] { 3, 6, 8 });
            data1[17].Select(f => (int)f.Snapshot).ShouldBe(new[] { 3, 6, 9 });

            data1[18].Select(f => (int)f.Snapshot).ShouldBe(new[] { 4, 5, 7 });
            data1[19].Select(f => (int)f.Snapshot).ShouldBe(new[] { 4, 5, 8 });
            data1[20].Select(f => (int)f.Snapshot).ShouldBe(new[] { 4, 5, 9 });
            data1[21].Select(f => (int)f.Snapshot).ShouldBe(new[] { 4, 6, 7 });
            data1[22].Select(f => (int)f.Snapshot).ShouldBe(new[] { 4, 6, 8 });
            data1[23].Select(f => (int)f.Snapshot).ShouldBe(new[] { 4, 6, 9 });

            data2.Length.ShouldBe(3 * 2 * 4);

            data2[0].Select(f => f.Identity.Name).ShouldBe(new[] { "Zs.Item[0]", "Ys.Item[0]", "Xs.Item[0]" });
            data2[1].Select(f => f.Identity.Name).ShouldBe(new[] { "Zs.Item[0]", "Ys.Item[0]", "Xs.Item[1]" });
            data2[2].Select(f => f.Identity.Name).ShouldBe(new[] { "Zs.Item[0]", "Ys.Item[0]", "Xs.Item[2]" });
            data2[3].Select(f => f.Identity.Name).ShouldBe(new[] { "Zs.Item[0]", "Ys.Item[0]", "Xs.Item[3]" });

            data2[4].Select(f => f.Identity.Name).ShouldBe(new[] { "Zs.Item[0]", "Ys.Item[1]", "Xs.Item[0]" });
            data2[5].Select(f => f.Identity.Name).ShouldBe(new[] { "Zs.Item[0]", "Ys.Item[1]", "Xs.Item[1]" });
            data2[6].Select(f => f.Identity.Name).ShouldBe(new[] { "Zs.Item[0]", "Ys.Item[1]", "Xs.Item[2]" });
            data2[7].Select(f => f.Identity.Name).ShouldBe(new[] { "Zs.Item[0]", "Ys.Item[1]", "Xs.Item[3]" });

            data2[8].Select(f => f.Identity.Name).ShouldBe(new[] { "Zs.Item[1]", "Ys.Item[0]", "Xs.Item[0]" });
            data2[9].Select(f => f.Identity.Name).ShouldBe(new[] { "Zs.Item[1]", "Ys.Item[0]", "Xs.Item[1]" });
            data2[10].Select(f => f.Identity.Name).ShouldBe(new[] { "Zs.Item[1]", "Ys.Item[0]", "Xs.Item[2]" });
            data2[11].Select(f => f.Identity.Name).ShouldBe(new[] { "Zs.Item[1]", "Ys.Item[0]", "Xs.Item[3]" });

            data2[12].Select(f => f.Identity.Name).ShouldBe(new[] { "Zs.Item[1]", "Ys.Item[1]", "Xs.Item[0]" });
            data2[13].Select(f => f.Identity.Name).ShouldBe(new[] { "Zs.Item[1]", "Ys.Item[1]", "Xs.Item[1]" });
            data2[14].Select(f => f.Identity.Name).ShouldBe(new[] { "Zs.Item[1]", "Ys.Item[1]", "Xs.Item[2]" });
            data2[15].Select(f => f.Identity.Name).ShouldBe(new[] { "Zs.Item[1]", "Ys.Item[1]", "Xs.Item[3]" });

            data2[16].Select(f => f.Identity.Name).ShouldBe(new[] { "Zs.Item[2]", "Ys.Item[0]", "Xs.Item[0]" });
            data2[17].Select(f => f.Identity.Name).ShouldBe(new[] { "Zs.Item[2]", "Ys.Item[0]", "Xs.Item[1]" });
            data2[18].Select(f => f.Identity.Name).ShouldBe(new[] { "Zs.Item[2]", "Ys.Item[0]", "Xs.Item[2]" });
            data2[19].Select(f => f.Identity.Name).ShouldBe(new[] { "Zs.Item[2]", "Ys.Item[0]", "Xs.Item[3]" });

            data2[20].Select(f => f.Identity.Name).ShouldBe(new[] { "Zs.Item[2]", "Ys.Item[1]", "Xs.Item[0]" });
            data2[21].Select(f => f.Identity.Name).ShouldBe(new[] { "Zs.Item[2]", "Ys.Item[1]", "Xs.Item[1]" });
            data2[22].Select(f => f.Identity.Name).ShouldBe(new[] { "Zs.Item[2]", "Ys.Item[1]", "Xs.Item[2]" });
            data2[23].Select(f => f.Identity.Name).ShouldBe(new[] { "Zs.Item[2]", "Ys.Item[1]", "Xs.Item[3]" });

            data2[0].Select(f => (int)f.Snapshot).ShouldBe(new[] { 7, 5, 1 });
            data2[1].Select(f => (int)f.Snapshot).ShouldBe(new[] { 7, 5, 2 });
            data2[2].Select(f => (int)f.Snapshot).ShouldBe(new[] { 7, 5, 3 });
            data2[3].Select(f => (int)f.Snapshot).ShouldBe(new[] { 7, 5, 4 });

            data2[4].Select(f => (int)f.Snapshot).ShouldBe(new[] { 7, 6, 1 });
            data2[5].Select(f => (int)f.Snapshot).ShouldBe(new[] { 7, 6, 2 });
            data2[6].Select(f => (int)f.Snapshot).ShouldBe(new[] { 7, 6, 3 });
            data2[7].Select(f => (int)f.Snapshot).ShouldBe(new[] { 7, 6, 4 });

            data2[8].Select(f => (int)f.Snapshot).ShouldBe(new[] { 8, 5, 1 });
            data2[9].Select(f => (int)f.Snapshot).ShouldBe(new[] { 8, 5, 2 });
            data2[10].Select(f => (int)f.Snapshot).ShouldBe(new[] { 8, 5, 3 });
            data2[11].Select(f => (int)f.Snapshot).ShouldBe(new[] { 8, 5, 4 });

            data2[12].Select(f => (int)f.Snapshot).ShouldBe(new[] { 8, 6, 1 });
            data2[13].Select(f => (int)f.Snapshot).ShouldBe(new[] { 8, 6, 2 });
            data2[14].Select(f => (int)f.Snapshot).ShouldBe(new[] { 8, 6, 3 });
            data2[15].Select(f => (int)f.Snapshot).ShouldBe(new[] { 8, 6, 4 });

            data2[16].Select(f => (int)f.Snapshot).ShouldBe(new[] { 9, 5, 1 });
            data2[17].Select(f => (int)f.Snapshot).ShouldBe(new[] { 9, 5, 2 });
            data2[18].Select(f => (int)f.Snapshot).ShouldBe(new[] { 9, 5, 3 });
            data2[19].Select(f => (int)f.Snapshot).ShouldBe(new[] { 9, 5, 4 });

            data2[20].Select(f => (int)f.Snapshot).ShouldBe(new[] { 9, 6, 1 });
            data2[21].Select(f => (int)f.Snapshot).ShouldBe(new[] { 9, 6, 2 });
            data2[22].Select(f => (int)f.Snapshot).ShouldBe(new[] { 9, 6, 3 });
            data2[23].Select(f => (int)f.Snapshot).ShouldBe(new[] { 9, 6, 4 });
        }