def setUp(self): """ Initalize render pipeline test setup. """ self.blank = blank.BlankTile() self.route = route.RouteTile32x32() self.weather_large = weather.WeatherTile64x32({}) self.tiles = [self.route, self.weather_large] self.manager = tile_manager.TileManager(self.tiles, 32, 2)
def testToMatrixBlankTile(self): """ Ensure a blank tile renders properly. """ tiles = [] manager = tile_manager.TileManager(tiles, 32, 2) manager._RenderAddNewTiles() manager._RenderToMatrix() self.AssertSameImage(manager.matrix.offscreen_buffer, 'testdata/to_matrix_blank_tile.png')
def testFullLoop(self): weather_large = weather.WeatherTile64x32( { 'id': 208, 'main': 'other', 'description': 'sunny and clear.', 'icon': '01d', 'temp': 72, 'temp_min': 68, 'temp_max': 78, 'humidity': 23 }, scrolling=(0, -2)) stops = [ datetime.datetime(2017, 1, 1, 9, 0, tzinfo=pytz.timezone('America/Los_Angeles')), datetime.datetime(2017, 10, 11, 10, 0, tzinfo=pytz.timezone('America/Los_Angeles')), datetime.datetime(2017, 11, 11, 11, 0, tzinfo=pytz.timezone('America/Los_Angeles')), datetime.datetime(2017, 12, 12, 12, 0, tzinfo=pytz.timezone('America/Los_Angeles')) ] tile = route.RouteTile32x32(stops=stops) manager = tile_manager.TileManager([weather_large, tile], 32, 2) manager.Run()
def testToMatrixMultiLine(self): """ Ensure a multi line render works properly. """ tiles = [ self.route, weather.WeatherTile64x32({ 'id': 208, 'main': 'sunny', 'description': 'sunny and clear.', 'icon': '01d', 'temp': 72, 'temp_min': 68, 'temp_max': 78, 'humidity': 23 }) ] manager = tile_manager.TileManager(tiles, 64, 4, tile_size=32) manager._RenderAddNewTiles() manager._RenderToMatrix() self.AssertSameImage(manager.matrix.offscreen_buffer, 'testdata/to_matrix_multiline.png')
def testGetNextTileLargeSkipped(self): """ Ensure a large tile is skipped properly. """ tiles = [self.weather_large, self.blank] manager = tile_manager.TileManager(tiles, 32, 2) tile_index = manager._GetNextTile((32, 32)) self.assertIsInstance(manager.tiles[tile_index], blank.BlankTile)
def testStaticTileFrameCount(self): """ Ensure a static tile has appropriate frame count set. """ static_tile = route.RouteTile32x32(scrolling=(0, 0)) manager = tile_manager.TileManager([static_tile], 32, 2) self.assertEqual(manager.tiles[0].GetMaxFrames(), 5)
def testTileLargerThanMatrix(self): """ Ensure a tile larger than the matrix screen fails. """ with self.assertRaises(Exception): tile_manager.TileManager([self.blank], 8, 1)
def testAddNewTilesBlankTiles(self): """ Ensure an empty pipeline is filled. """ tiles = [] manager = tile_manager.TileManager(tiles, 32, 2) manager._RenderAddNewTiles() self.assertEqual(manager.render_pipeline, [[-1, -1]])
def testAddNewTilesMultiLine(self): """ Ensure tile placing works across multiple rows. """ tiles = [weather.WeatherTile64x32({}), weather.WeatherTile64x32({})] manager = tile_manager.TileManager(tiles, 64, 4, tile_size=32) manager._RenderAddNewTiles() self.assertEqual(manager.render_pipeline, [[0, 0], [1, 1]])
def testAddNewTilesLargeNoRoom(self): """ Ensure a large tile is not place if there is no room. """ tiles = [self.route, self.blank, self.weather_large] manager = tile_manager.TileManager(tiles, 32, 4) manager._RenderAddNewTiles() self.assertEqual(manager.render_pipeline, [[0, 1, 2, -1]])
def testAddNewTilesLargeSmallCombined(self): """ Ensure adding a large and a small tile on the same row is correct. """ tiles = [self.weather_large, self.route] manager = tile_manager.TileManager(tiles, 32, 4) manager._RenderAddNewTiles() self.assertEqual(manager.render_pipeline, [[0, 0, 1, -1]])