# Path: tests/util.py
# def check_call(cmd, expected_retcode=0, stdin_str="", **kwargs):
# def DataPath(path):
# def GetDataPathContents():
#   def assertMatchesRegex(self, regex, string):
#   def setUp(self):
#   def tearDown(self):
#   def setUp(self):
#   def GetExamplePath(self, name):
#   def GetTestDataPath(self, *path):
#   def GetPath(self, *path):
#   def setUp(self):
#   def tearDown(self):
#   def CheckCallWithPath(self, cmd, expected_retcode=0, stdin_str=""):
#   def ConvertZipToDict(self, zip):
#   def ConvertDictToZip(self, dict):
#   def setUp(self):
#   def tearDown(self):
#   def setUp(self):
#   def MakeLoaderAndLoad(self,
#                         problems=None,
#                         extra_validation=True,
#                         gtfs_factory=None):
#   def AppendToArchiveContents(self, arcname, s):
#   def SetArchiveContents(self, arcname, contents):
#   def GetArchiveContents(self, arcname):
#   def RemoveArchive(self, arcname):
#   def GetArchiveNames(self):
#   def CreateZip(self):
#   def DumpZipFile(self, zf):
#   def setUp(self):
#   def Load(self, feed_name):
#   def ExpectInvalidValue(self, feed_name, column_name):
#   def ExpectMissingFile(self, feed_name, file_name):
#   def setUp(self):
#   def tearDown(self):
#   def ExpectNoProblems(self, object):
#   def ValidateAndExpectMissingValue(self, object, column_name):
#   def ExpectMissingValueInClosure(self, column_name, c):
#   def ValidateAndExpectInvalidValue(self, object, column_name,
#                                     value=INVALID_VALUE):
#   def ExpectInvalidValueInClosure(self, column_name, value=INVALID_VALUE,
#                                   c=None):
#   def ValidateAndExpectInvalidFloatValue(self, object, value):
#   def ValidateAndExpectOtherProblem(self, object):
#   def ExpectOtherProblemInClosure(self, c):
#   def ValidateAndExpectDateOutsideValidRange(self, object, column_name,
#                                              value=INVALID_VALUE):
#   def ExpectException(self, type_name, column_name=None, value=INVALID_VALUE):
#   def SimpleSchedule(self):
#   def __init__(self, test_case, ignore_types=None):
#   def _Report(self, e):
#   def PopException(self, type_name):
#   def FormatException(self, exce, tb):
#   def TearDownAssertNoMoreExceptions(self):
#   def AssertNoMoreExceptions(self):
#   def PopColumnSpecificException(self, type_name, column_name, file_name=None):
#   def PopInvalidValue(self, column_name, file_name=None):
#   def PopMissingValue(self, column_name, file_name=None):
#   def PopDateOutsideValidRange(self, column_name, file_name=None):
#   def PopDuplicateColumn(self, file_name, header, count):
#   def _SortExceptionGroups(self):
#     def ProcessExceptionGroup():
#   def __init__(self, test_case, ignore_types=("ExpirationDate",)):
#   def _Report(self, e):
# def GetTestFailureProblemReporter(test_case,
#                                   ignore_types=("ExpirationDate",)):
#   def __init__(self):
#   def ExpirationDate(self, expiration, context=None):
# class TestCase(unittest.TestCase):
# class RedirectStdOutTestCaseBase(TestCase):
# class GetPathTestCase(TestCase):
# class TempDirTestCaseBase(GetPathTestCase):
# class TempFileTestCaseBase(TestCase):
# class MemoryZipTestCase(TestCase):
# class LoadTestCase(TestCase):
# class ValidationTestCase(TestCase):
# class RecordingProblemAccumulator(transitfeed.ProblemAccumulatorInterface):
# class TestFailureProblemAccumulator(transitfeed.ProblemAccumulatorInterface):
# class ExceptionProblemReporterNoExpiration(transitfeed.ProblemReporter):
#   _IGNORE_TYPES = ["ExpirationDate"]
# INVALID_VALUE = Exception()
# 
# Path: transitfeed/compat.py



import os
import tempfile
import unittest
import kmlparser
import kmlwriter
import transitfeed
  import xml.etree.ElementTree as ET  # python 2.5
  import elementtree.ElementTree as ET  # older pythons
from tests import util
from transitfeed.compat import StringIO
  ET.ElementTree(root).write(output, 'utf-8')
  return output.getvalue()


class TestKMLStopsRoundtrip(util.TestCase):
  """Checks to see whether all stops are preserved when going to and from KML.
  """

  def setUp(self):
    fd, self.kml_output = tempfile.mkstemp('kml')
    os.close(fd)

  def tearDown(self):
    os.remove(self.kml_output)

  def runTest(self):
    gtfs_input = DataPath('good_feed.zip')
    feed1 = transitfeed.Loader(gtfs_input).Load()
    kmlwriter.KMLWriter().Write(feed1, self.kml_output)
    feed2 = transitfeed.Schedule()
    kmlparser.KmlParser().Parse(self.kml_output, feed2)

    stop_name_mapper = lambda x: x.stop_name

    stops1 = set(map(stop_name_mapper, feed1.GetStopList()))
    stops2 = set(map(stop_name_mapper, feed2.GetStopList()))

    self.assertEqual(stops1, stops2)



# Path: tests/util.py
# def check_call(cmd, expected_retcode=0, stdin_str="", **kwargs):
# def DataPath(path):
# def GetDataPathContents():
#   def assertMatchesRegex(self, regex, string):
#   def setUp(self):
#   def tearDown(self):
#   def setUp(self):
#   def GetExamplePath(self, name):
#   def GetTestDataPath(self, *path):
#   def GetPath(self, *path):
#   def setUp(self):
#   def tearDown(self):
#   def CheckCallWithPath(self, cmd, expected_retcode=0, stdin_str=""):
#   def ConvertZipToDict(self, zip):
#   def ConvertDictToZip(self, dict):
#   def setUp(self):
#   def tearDown(self):
#   def setUp(self):
#   def MakeLoaderAndLoad(self,
#                         problems=None,
#                         extra_validation=True,
#                         gtfs_factory=None):
#   def AppendToArchiveContents(self, arcname, s):
#   def SetArchiveContents(self, arcname, contents):
#   def GetArchiveContents(self, arcname):
#   def RemoveArchive(self, arcname):
#   def GetArchiveNames(self):
#   def CreateZip(self):
#   def DumpZipFile(self, zf):
#   def setUp(self):
#   def Load(self, feed_name):
#   def ExpectInvalidValue(self, feed_name, column_name):
#   def ExpectMissingFile(self, feed_name, file_name):
#   def setUp(self):
#   def tearDown(self):
#   def ExpectNoProblems(self, object):
#   def ValidateAndExpectMissingValue(self, object, column_name):
#   def ExpectMissingValueInClosure(self, column_name, c):
#   def ValidateAndExpectInvalidValue(self, object, column_name,
#                                     value=INVALID_VALUE):
#   def ExpectInvalidValueInClosure(self, column_name, value=INVALID_VALUE,
#                                   c=None):
#   def ValidateAndExpectInvalidFloatValue(self, object, value):
#   def ValidateAndExpectOtherProblem(self, object):
#   def ExpectOtherProblemInClosure(self, c):
#   def ValidateAndExpectDateOutsideValidRange(self, object, column_name,
#                                              value=INVALID_VALUE):
#   def ExpectException(self, type_name, column_name=None, value=INVALID_VALUE):
#   def SimpleSchedule(self):
#   def __init__(self, test_case, ignore_types=None):
#   def _Report(self, e):
#   def PopException(self, type_name):
#   def FormatException(self, exce, tb):
#   def TearDownAssertNoMoreExceptions(self):
#   def AssertNoMoreExceptions(self):
#   def PopColumnSpecificException(self, type_name, column_name, file_name=None):
#   def PopInvalidValue(self, column_name, file_name=None):
#   def PopMissingValue(self, column_name, file_name=None):
#   def PopDateOutsideValidRange(self, column_name, file_name=None):
#   def PopDuplicateColumn(self, file_name, header, count):
#   def _SortExceptionGroups(self):
#     def ProcessExceptionGroup():
#   def __init__(self, test_case, ignore_types=("ExpirationDate",)):
#   def _Report(self, e):
# def GetTestFailureProblemReporter(test_case,
#                                   ignore_types=("ExpirationDate",)):
#   def __init__(self):
#   def ExpirationDate(self, expiration, context=None):
# class TestCase(unittest.TestCase):
# class RedirectStdOutTestCaseBase(TestCase):
# class GetPathTestCase(TestCase):
# class TempDirTestCaseBase(GetPathTestCase):
# class TempFileTestCaseBase(TestCase):
# class MemoryZipTestCase(TestCase):
# class LoadTestCase(TestCase):
# class ValidationTestCase(TestCase):
# class RecordingProblemAccumulator(transitfeed.ProblemAccumulatorInterface):
# class TestFailureProblemAccumulator(transitfeed.ProblemAccumulatorInterface):
# class ExceptionProblemReporterNoExpiration(transitfeed.ProblemReporter):
#   _IGNORE_TYPES = ["ExpirationDate"]
# INVALID_VALUE = Exception()
# 
# Path: transitfeed/compat.py



# Path: tests/testkmlwriter.py
import os
import tempfile
import unittest
import kmlparser
import kmlwriter
import transitfeed
  import xml.etree.ElementTree as ET  # python 2.5
  import elementtree.ElementTree as ET  # older pythons
from tests import util
from transitfeed.compat import StringIO

  ET.ElementTree(root).write(output, 'utf-8')
  return output.getvalue()


class TestKMLStopsRoundtrip(util.TestCase):
  """Checks to see whether all stops are preserved when going to and from KML.
  """

  def setUp(self):
    fd, self.kml_output = tempfile.mkstemp('kml')
    os.close(fd)

  def tearDown(self):
    os.remove(self.kml_output)

  def runTest(self):
    gtfs_input = DataPath('good_feed.zip')
    feed1 = transitfeed.Loader(gtfs_input).Load()
    kmlwriter.KMLWriter().Write(feed1, self.kml_output)
    feed2 = transitfeed.Schedule()
    kmlparser.KmlParser().Parse(self.kml_output, feed2)

    stop_name_mapper = lambda x: x.stop_name

    stops1 = set(map(stop_name_mapper, feed1.GetStopList()))
    stops2 = set(map(stop_name_mapper, feed2.GetStopList()))

    self.assertEqual(stops1, stops2)



class TestKMLGeneratorMethods(util.TestCase):