public void GetAncestor_3_can_translate() { var results = Enumerable.ToList( from p in _db.Patriarchy where p.Id.GetLevel() == 3 select p.Id.GetAncestor(3)); Assert.Equal( condense(@"SELECT [p].[Id].GetAncestor(3) FROM [Patriarchy] AS [p] WHERE [p].[Id].GetLevel() = CAST(3 AS smallint)"), condense(_db.Sql)); Assert.All(results, h => Assert.Equal(HierarchyId.GetRoot(), h)); }
public void Parse_can_translate() { var results = Enumerable.ToList( from p in _db.Patriarchy where p.Id == HierarchyId.GetRoot() select HierarchyId.Parse(p.Id.ToString())); Assert.Equal( condense(@"SELECT hierarchyid::Parse([p].[Id].ToString()) FROM [Patriarchy] AS [p] WHERE [p].[Id] = '/'"), condense(_db.Sql)); Assert.Equal(new[] { HierarchyId.Parse("/") }, results); }
public void HierarchyId_can_be_sent_as_parameter() { var results = Enumerable.ToList( from p in _db.Patriarchy where p.Id == HierarchyId.Parse("/1/") select p.Name); Assert.Equal( condense(@"SELECT [p].[Name] FROM [Patriarchy] AS [p] WHERE [p].[Id] = '/1/'"), condense(_db.Sql)); Assert.Equal(new[] { "Isaac" }, results); }
public void GetDescendent_can_translate() { var results = Enumerable.ToList( from p in _db.Patriarchy where p.Id.GetLevel() == 0 select p.Id.GetDescendant(null, null)); Assert.Equal( condense(@"SELECT [p].[Id].GetDescendant(NULL, NULL) FROM [Patriarchy] AS [p] WHERE [p].[Id].GetLevel() = CAST(0 AS smallint)"), condense(_db.Sql)); Assert.Equal(new[] { HierarchyId.Parse("/1/") }, results); }
public void HierarchyId_can_call_method_on_parameter() { var isaac = HierarchyId.Parse("/1/"); var results = Enumerable.ToList( from p in _db.Patriarchy where isaac.IsDescendantOf(p.Id) select p.Name); Assert.Equal( condense(@"SELECT [p].[Name] FROM [Patriarchy] AS [p] WHERE @__isaac_0.IsDescendantOf([p].[Id]) = CAST(1 AS bit)"), condense(_db.Sql)); Assert.Equal(new[] { "Abraham", "Isaac" }, results); }
public void HierarchyId_get_ancestor_of_level_is_root() { var results = Enumerable.ToList( from p in _db.Patriarchy where p.Id.GetAncestor(p.Id.GetLevel()) == HierarchyId.GetRoot() // HierarchyId.Parse("/1/") // HierarchyId.Parse(p.Id.ToString()).GetAncestor(HierarchyId.Parse(p.Id.ToString()).GetLevel()) select p.Name); Assert.Equal( condense(@"SELECT [p].[Name] FROM [Patriarchy] AS [p] WHERE [p].[Id].GetAncestor(CAST([p].[Id].GetLevel() AS int)) = '/'"), condense(_db.Sql)); var all = Enumerable.ToList( from p in _db.Patriarchy select p.Name); Assert.Equal(all, results); }