public void BasicTest() { const string levelData = @" ########## #-------.# #-######-# #------#-# #------#-# #---@--#-# #------#-# #------#-# #--------# ##########"; const string pathData = @" ########## #-------*# #-######*# #------#*# #------#*# #---*--#*# #---*--#*# #---*--#*# #---*****# ##########"; var level = new LevelCreator().Create(levelData); var aStar = new AStarBuilder <Tuple <int, int> >().Neighbors(new TestNeighborsProvider(level)).Build(); var path = aStar.Search(Tuple.Create(level.PlayerX, level.PlayerY), level.Targets.Single()); Assert.NotNull(path); var result = Draw(level, path); Assert.AreEqual(pathData.Trim(), result); }
public void ShouldPreferHorizontalMovement() { const string levelData = @" ########## #-------.# #-######-# #------#-# #------#-# #---@--#-# #------#-# #------#-# #--------# ##########"; const string pathData = @" ########## #********# #*######-# #*-----#-# #****--#-# #---*--#-# #------#-# #------#-# #--------# ##########"; var level = new LevelCreator().Create(levelData); var aStar = new AStarBuilder <Tuple <int, int> >() .Distance((f, s) => f.Item1 != s.Item1 ? 1 : 1.1) .Neighbors(new TestNeighborsProvider(level)) .Build(); var path = aStar.Search(Tuple.Create(level.PlayerX, level.PlayerY), level.Targets.Single()); Assert.NotNull(path); var result = Draw(level, path); Assert.AreEqual(pathData.Trim(), result); }