From fd73b5b32895f54d026a904f8d3b60d69d32d28c Mon Sep 17 00:00:00 2001 From: rsiddharth Date: Sat, 12 Dec 2015 21:01:45 -0500 Subject: Added lps_gen.py + tests for it. Contains `LPSRenderer` and `LPSMarkdown` classes which convert a given Markdown LP schedule text to a python dictionary (OrderedDict). --- tests/test_lps_gen.py | 165 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 165 insertions(+) create mode 100644 tests/test_lps_gen.py (limited to 'tests/test_lps_gen.py') diff --git a/tests/test_lps_gen.py b/tests/test_lps_gen.py new file mode 100644 index 0000000..cbc9195 --- /dev/null +++ b/tests/test_lps_gen.py @@ -0,0 +1,165 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2015 lpschedule-generator author(s). See AUTHORS. +# +# This file is part of lpschedule-generator. +# +# lpschedule-generator is free software: you can redistribute it +# and/or modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation, either version 3 of +# the License, or (at your option) any later version. +# +# lpschedule-generator is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with lpschedule-generator (see COPYING). If not, see +# . + +import json +import pprint + +import mistune + +from os import path + +from nose.tools import * + +from lps_gen import * + +class TestLpsGen(object): + """ + Class that tests the lps_gen.py module. + """ + @classmethod + def setup_class(self): + """Runs before running any tests in this class.""" + + self.MD_FILE = path.join('tests', 'files', 'lp-sch.md') + self.MD_FILE_CONTENT = read_file(self.MD_FILE) + + self.markdown = LPSMarkdown() + self.lps_dict = self.markdown(self.MD_FILE_CONTENT) + + def setup(self): + """Runs before each test in this class.""" + pass + + + def test_LPSMarkdown_day(self): + """ + Testing `LPSMarkdown` class - Day. + """ + days = ['Saturday, March 19', + 'Sunday, March 20'] + i = 0 + for day in self.lps_dict.keys(): + assert_equal(day, days[i]) + i = i + 1 + + + def test_LPSMarkdown_timeslot(self): + """ + Testing `LPSMarkdown` class - Timeslot. + """ + timeslots = [ + '09:00 - 09:45: Registration and Breakfast', + '09:45 - 10:45: Opening Keynote: Richard Stallman', + '10:55 - 11:40: Session Block 1A', + '11:40 - 11:50: Break', + '11:50 - 12:35: Session Block 2A', + '09:00 - 09:45: Registration and breakfast', + '09:45 - 10:30: Keynote: Benjamin Mako Hill', + '10:30 - 10:40: Break', + '10:40 - 11:25: Session Block 1B', + ] + + i = 0 + for lps_timeslots in self.lps_dict.values(): + for timeslot in lps_timeslots.keys(): + assert_equal(timeslot, timeslots[i]) + i = i + 1 + + + def test_LPSMarkdown_session(self): + """ + Testing `LPSMarkdown` class - Session. + """ + sessions = [ + 'Free software, free hardware, and other things', + 'Federation and GNU', + 'Dr. Hyde and Mr. Jekyll: advocating for free software in nonfree academic contexts', + 'TAFTA, CETA, TISA: traps and threats to Free Software Everywhere', + 'Let\'s encrypt!', + 'Attribution revolution -- turning copyright upside-down', + 'Access without empowerment', + 'Fork and ignore: fighting a GPL violation by coding instead', + 'Who did this? Just wait until your father gets home', + ] + + i = 0 + for lps_timeslots in self.lps_dict.values(): + for lps_sessions in lps_timeslots.values(): + for session in lps_sessions.keys(): + assert_equal(session, sessions[i]) + i = i + 1 + + + def test_LPSMarkdown_speaker(self): + """ + Testing `LPSMarkdown` class - Speaker + """ + speakers = [ + 'Richard Stallman', + 'Christopher Webber', + 'ginger coons', + ['Marianne Corvellec', 'Jonathan Le Lous'], + 'Seth Schoen', + 'Jonas Öberg', + 'Benjamin Mako Hill', + 'Bradley Kuhn', + 'Ken Starks', + ] + + i = 0 + for lps_timeslots in self.lps_dict.values(): + for lps_sessions in lps_timeslots.values(): + for session_info in lps_sessions.values(): + assert_equal(session_info['speaker'], speakers[i]) + i = i + 1 + + + def test_LPSMarkdown_room(self): + """ + Testing `LPSMarkdown` class - Room + """ + rooms = [ + 'Room 32-123', + 'Room 32-123', + 'Room 32-141', + 'Room 32-155', + 'Room 32-123', + 'Room 32-141', + 'Room 32-123', + 'Room 32-123', + 'Room 32-141', + ] + i = 0 + for lps_timeslots in self.lps_dict.values(): + for lps_sessions in lps_timeslots.values(): + for session_info in lps_sessions.values(): + assert_equal(session_info['room'], rooms[i]) + i = i + 1 + + + def teardown(self): + """Cleans up things after each test in this class.""" + pass + + + @classmethod + def teardown_class(self): + """Purge the mess created by this test.""" + pass -- cgit v1.2.3