def parse(pref_fname="preferences.txt", groups_fname="groups.txt", terms_fname="terms.txt", assign_fname="output.txt"): preferences = parse_preferences(open(pref_fname).read()) assignments = parse_assignments(open(assign_fname).read()) groups = parse_groups(open(groups_fname).read()) subjects, terms = parse_subjects_and_terms(open(terms_fname).read()) return Configuration(preferences, groups, subjects, terms), assignments
def test_parsing(self): subjects, terms = parse_subjects_and_terms(''' [645274] 1 645350:11:0:0:70:88:0:1 645354:12:0:1:51:69:0:1 [645275] 1 645362:10:0:0:31:49:1:1 [kolizje] 645274,645350;645274,645354 645274,645354;645274,645350 645274,645354;645275,645362 ''') self.assertEquals(subjects, frozenset([Subject(id=645274), Subject(id=645275)])) self.assertEquals(terms, frozenset([Term(id=645350), Term(id=645354), Term(id=645362)])) capacities = {term.id: term.capacity for term in terms} subjects = {term.id: term.subject for term in terms} collisions = {term.id: term.collisions for term in terms} self.assertEquals(capacities, { 645350: 11, 645354: 12, 645362: 10 }) self.assertEquals(subjects, { 645350: Subject(id=645274), 645354: Subject(id=645274), 645362: Subject(id=645275) }) self.assertEquals(collisions, { 645350: frozenset({Term(id=645354)}), 645354: frozenset({Term(id=645362), Term(id=645350)}), 645362: frozenset() })