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(); }
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 }); }