Added a connexity test
This commit is contained in:
		
							
								
								
									
										29
									
								
								squirrelbattle/tests/mapgeneration_test.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								squirrelbattle/tests/mapgeneration_test.py
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,29 @@
 | 
				
			|||||||
 | 
					# Copyright (C) 2020 by ÿnérant, eichhornchen, nicomarg, charlse
 | 
				
			||||||
 | 
					# SPDX-License-Identifier: GPL-3.0-or-later
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import unittest
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					from squirrelbattle.interfaces import Map, Tile
 | 
				
			||||||
 | 
					from squirrelbattle.mapgeneration import randomwalk
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class TestRandomWalk(unittest.TestCase):
 | 
				
			||||||
 | 
					    def setUp(self) -> None:
 | 
				
			||||||
 | 
					        self.generator = randomwalk.Generator()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def test_starting(self) -> None:
 | 
				
			||||||
 | 
					        """
 | 
				
			||||||
 | 
					        Create a map and check that the whole map is accessible from the starting position using a 
 | 
				
			||||||
 | 
					        depth-first search
 | 
				
			||||||
 | 
					        """
 | 
				
			||||||
 | 
					        m = self.generator.run()
 | 
				
			||||||
 | 
					        self.assertTrue(m.tiles[m.start_y][m.start_x].can_walk())
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        #DFS
 | 
				
			||||||
 | 
					        queue = m.neighbourhood(m.start_y, m.start_x)
 | 
				
			||||||
 | 
					        while queue != []:
 | 
				
			||||||
 | 
					            y, x = queue.pop()
 | 
				
			||||||
 | 
					            if m.tiles[y][x].can_walk():
 | 
				
			||||||
 | 
					                m.tiles[y][x] = Tile.WALL
 | 
				
			||||||
 | 
					                queue += m.neighbourhood(y, x)
 | 
				
			||||||
 | 
					        self.assertFalse(any([any([t.can_walk() for t in l]) for l in m.tiles]))
 | 
				
			||||||
		Reference in New Issue
	
	Block a user