#!/usr/bin/env python3 import program import unittest class TestThing(unittest.TestCase): def setUp(self): pass def testGetGames(self): lines = program.get_lines("test-input.txt") games = program.get_games(lines) target = { 1: "3 blue, 4 red; 1 red, 2 green, 6 blue; 2 green", 2: "1 blue, 2 green; 3 green, 4 blue, 1 red; 1 green, 1 blue", 3: "8 green, 6 blue, 20 red; 5 blue, 4 red, 13 green; 5 green, 1 red", 4: "1 green, 3 red, 6 blue; 3 green, 6 red; 3 green, 15 blue, 14 red", 5: "6 red, 1 blue, 3 green; 2 blue, 1 red, 2 green" } self.assertEqual(games, target) def testMaxCubes(self): test_cases = [ ("3 blue, 2 red; 3 red, 4 blue", {"blue": 4, "red": 3}), ("2 red, 1 blue; 4 blue, 2 yellow", {"red": 2, "blue": 4, "yellow": 2}) ] for grabs, max_cubes in test_cases: self.assertEqual(program.get_max_cubes(grabs), max_cubes) def testGameIsValid(self): cube_pools = {"red": 4, "green": 5, "blue": 6} test_cases = [ ({"blue": 4, "red": 3, "green": 1}, True), ({"blue": 7}, False), ({"green": 2, "red": 1}, True), ({"blue": 3, "red": 2, "yellow": 1}, False) ] for test_case, test_result in test_cases: self.assertEqual(program.game_is_valid(test_case, cube_pools), test_result) def testSumOfValidGames(self): lines = program.get_lines("test-input.txt") games = program.get_games(lines) cube_pools = {"red": 12, "green": 13, "blue": 14} self.assertEqual(program.sum_of_valid_games(games, cube_pools), 8) if __name__ == '__main__': unittest.main()