Implement method add_loops along with tests
This commit is contained in:
		@@ -7,11 +7,19 @@ from typing import List
 | 
			
		||||
 | 
			
		||||
from squirrelbattle.interfaces import Map, Tile
 | 
			
		||||
from squirrelbattle.mapgeneration import broguelike
 | 
			
		||||
from squirrelbattle.display.texturepack import TexturePack
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class TestBroguelike(unittest.TestCase):
 | 
			
		||||
    def setUp(self) -> None:
 | 
			
		||||
        self.generator = broguelike.Generator()
 | 
			
		||||
        self.stom = lambda x : Map.load_from_string("0 0\n" + x)
 | 
			
		||||
        self.mtos = lambda x : x.draw_string(TexturePack.ASCII_PACK)
 | 
			
		||||
 | 
			
		||||
    def test_dist(self):
 | 
			
		||||
        m = self.stom(".. ..\n ... ")
 | 
			
		||||
        distance = broguelike.dist(m.tiles, 0, 0, 0, 4)
 | 
			
		||||
        self.assertEqual(distance, 6)
 | 
			
		||||
 | 
			
		||||
    def is_connex(self, grid: List[List[Tile]]) -> bool:
 | 
			
		||||
        h, w = len(grid), len(grid[0])
 | 
			
		||||
@@ -29,3 +37,17 @@ class TestBroguelike(unittest.TestCase):
 | 
			
		||||
    def test_connexity(self) -> None:
 | 
			
		||||
        m = self.generator.run()
 | 
			
		||||
        self.assertTrue(self.is_connex(m.tiles))
 | 
			
		||||
 | 
			
		||||
    def test_doors(self) -> None:
 | 
			
		||||
        # corridors shouldn't loop back into the room
 | 
			
		||||
        pass
 | 
			
		||||
 | 
			
		||||
    def test_loops(self) -> None:
 | 
			
		||||
        m = self.stom(3*"..   ..\n")
 | 
			
		||||
        self.generator.add_loop(m.tiles, 1, 3)
 | 
			
		||||
        s = self.mtos(m)
 | 
			
		||||
        self.assertEqual(s, "..   ..\n.......\n..   ..")
 | 
			
		||||
        self.assertFalse(self.generator.add_loop(m.tiles, 0, 0))
 | 
			
		||||
        m = self.stom("...\n. .\n...")
 | 
			
		||||
        self.assertFalse(self.generator.add_loop(m.tiles, 1, 1))
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user