Esempio n. 1
0
  def runTest(self):
    schedule = transitfeed.Schedule(
        problem_reporter=util.ExceptionProblemReporterNoExpiration())
    schedule.AddAgency("Sample Agency", "http://example.com",
                       "America/Los_Angeles")
    route = transitfeed.Route()
    route.route_id = "SAMPLE_ID"
    route.route_type = 3
    route.route_long_name = "Sample Route"
    schedule.AddRouteObject(route)

    service_period = transitfeed.ServicePeriod("WEEK")
    service_period.SetStartDate("20070101")
    service_period.SetEndDate("20071231")
    service_period.SetWeekdayService(True)
    schedule.AddServicePeriodObject(service_period)

    trip1 = transitfeed.Trip()
    trip1.route_id = "SAMPLE_ID"
    trip1.service_id = "WEEK"
    trip1.trip_id = "SAMPLE_TRIP"
    schedule.AddTripObject(trip1)

    trip2 = transitfeed.Trip()
    trip2.route_id = "SAMPLE_ID"
    trip2.service_id = "WEEK"
    trip2.trip_id = "SAMPLE_TRIP"
    try:
      schedule.AddTripObject(trip2)
      self.fail("Expected Duplicate ID validation failure")
    except transitfeed.DuplicateID as e:
      self.assertEqual("trip_id", e.column_name)
      self.assertEqual("SAMPLE_TRIP", e.value)
Esempio n. 2
0
  def runTest(self):
    # these should work fine
    trip = transitfeed.Trip()
    trip.trip_id = "SAMPLE_ID"
    trip.AddFrequency(0, 50, 1200)
    trip.AddFrequency("01:00:00", "02:00:00", "600")
    trip.AddFrequency(u"02:00:00", u"03:00:00", u"1800")
    headways = trip.GetFrequencyTuples()
    self.assertEqual(3, len(headways))
    self.assertEqual((0, 50, 1200, 0), headways[0])
    self.assertEqual((3600, 7200, 600, 0), headways[1])
    self.assertEqual((7200, 10800, 1800, 0), headways[2])
    self.assertEqual([("SAMPLE_ID", "00:00:00", "00:00:50", "1200", "0"),
                      ("SAMPLE_ID", "01:00:00", "02:00:00", "600", "0"),
                      ("SAMPLE_ID", "02:00:00", "03:00:00", "1800", "0")],
                     trip.GetFrequencyOutputTuples())

    # now test invalid input
    self.ExpectMissingValue(None, 50, 1200, "start_time")
    self.ExpectMissingValue("", 50, 1200, "start_time")
    self.ExpectInvalidValue("midnight", 50, 1200, "start_time",
                                       "midnight")
    self.ExpectInvalidValue(-50, 50, 1200, "start_time", -50)
    self.ExpectMissingValue(0, None, 1200, "end_time")
    self.ExpectMissingValue(0, "", 1200, "end_time")
    self.ExpectInvalidValue(0, "noon", 1200, "end_time", "noon")
    self.ExpectInvalidValue(0, -50, 1200, "end_time", -50)
    self.ExpectMissingValue(0, 600, 0, "headway_secs")
    self.ExpectMissingValue(0, 600, None, "headway_secs")
    self.ExpectMissingValue(0, 600, "", "headway_secs")
    self.ExpectInvalidValue(0, 600, "test", "headway_secs", "test")
    self.ExpectInvalidValue(0, 600, -60, "headway_secs", -60)
    self.ExpectInvalidValue(0, 0, 1200, "end_time", 0)
    self.ExpectInvalidValue("12:00:00", "06:00:00", 1200, "end_time",
                                       21600)
Esempio n. 3
0
  def runTest(self):
    schedule = transitfeed.Schedule(problem_reporter=self.problems)
    schedule.AddAgency("Sample Agency", "http://example.com",
                       "America/Los_Angeles")
    route = transitfeed.Route()
    route.route_id = "SAMPLE_ID"
    route.route_type = 3
    route.route_long_name = "Sample Route"
    schedule.AddRouteObject(route)

    service_period = transitfeed.ServicePeriod("WEEK")
    service_period.SetStartDate("20070101")
    service_period.SetEndDate("20071231")
    service_period.SetWeekdayService(True)
    schedule.AddServicePeriodObject(service_period)

    trip = transitfeed.Trip()
    trip.route_id = "SAMPLE_ID"
    trip.service_id = "WEEK"
    trip.trip_id = "SAMPLE_TRIP"
    schedule.AddTripObject(trip)

    stop1 = transitfeed.Stop()
    stop1.stop_id = "STOP1"
    stop1.stop_name = "Stop 1"
    stop1.stop_lat = 78.243587
    stop1.stop_lon = 32.258937
    schedule.AddStopObject(stop1)
    trip.AddStopTime(stop1, arrival_time="12:00:00", departure_time="12:00:00")

    stop2 = transitfeed.Stop()
    stop2.stop_id = "STOP2"
    stop2.stop_name = "Stop 2"
    stop2.stop_lat = 78.253587
    stop2.stop_lon = 32.258937
    schedule.AddStopObject(stop2)
    trip.AddStopTime(stop2, arrival_time="12:05:00", departure_time="12:05:00")
    schedule.Validate()

    stop3 = transitfeed.Stop()
    stop3.stop_id = "STOP3"
    stop3.stop_name = "Stop 3"
    stop3.stop_lat = 78.243587
    stop3.stop_lon = 32.268937
    schedule.AddStopObject(stop3)
    trip.AddStopTime(stop3, arrival_time="12:10:00", departure_time="12:10:00")
    schedule.Validate()
    self.accumulator.AssertNoMoreExceptions()

    stop4 = transitfeed.Stop()
    stop4.stop_id = "STOP4"
    stop4.stop_name = "Stop 4"
    stop4.stop_lat = 78.243588
    stop4.stop_lon = 32.268936
    schedule.AddStopObject(stop4)
    trip.AddStopTime(stop4, arrival_time="12:15:00", departure_time="12:15:00")
    schedule.Validate()
    e = self.accumulator.PopException('StopsTooClose')
    self.accumulator.AssertNoMoreExceptions()
Esempio n. 4
0
 def ExpectMissingValue(self, start_time, end_time, headway, column_name):
   try:
     trip = transitfeed.Trip()
     trip.AddFrequency(start_time, end_time, headway)
     self.fail("Expected MissingValue error on %s" % column_name)
   except transitfeed.MissingValue as e:
     self.assertEqual(column_name, e.column_name)
     self.assertEqual(0, len(trip.GetFrequencyTuples()))
Esempio n. 5
0
 def runTest(self):
   schedule = self.SimpleSchedule()
   trip1 = transitfeed.Trip()
   trip1.route_id = "054C"
   trip1.service_id = "WEEKDAY"
   trip1.trip_id = "054C_WEEK"
   self.ExpectInvalidValueInClosure(column_name="service_id",
                                    value="WEEKDAY",
                                    c=lambda: schedule.AddTripObject(trip1,
                                                           validate=True))
Esempio n. 6
0
 def ExpectInvalidValue(self, start_time, end_time, headway, column_name,
                        value):
     try:
         trip = transitfeed.Trip()
         trip.add_frequency(start_time, end_time, headway)
         self.fail("Expected InvalidValue error on %s" % column_name)
     except transitfeed.InvalidValue as e:
         self.assertEqual(column_name, e.column_name)
         self.assertEqual(value, e.value)
         self.assertEqual(0, len(trip.get_frequency_tuples()))
Esempio n. 7
0
 def setUp(self):
     util.ValidationTestCase.setUp(self)
     self.schedule = self.SimpleSchedule()
     trip = transitfeed.Trip()
     trip.route_id = '054C'
     trip.service_id = 'WEEK'
     trip.trip_id = '054C-00'
     trip.trip_headsign = 'via Polish Hill'
     trip.direction_id = '0'
     trip.block_id = None
     trip.shape_id = None
     self.schedule.add_trip_object(trip, self.problems, True)
     self.trip = trip
Esempio n. 8
0
 def setUp(self):
     util.ValidationTestCase.setUp(self)
     self.schedule = self.SimpleSchedule()
     trip = transitfeed.Trip()
     trip.route_id = "054C"
     trip.service_id = "WEEK"
     trip.trip_id = "054C-00"
     trip.trip_headsign = "via Polish Hill"
     trip.direction_id = "0"
     trip.block_id = None
     trip.shape_id = None
     self.schedule.AddTripObject(trip, self.problems, True)
     self.trip = trip
    def runTest(self):
        import transitfeed

        schedule = transitfeed.Schedule()
        schedule.AddAgency("Sample Agency", "http://example.com",
                           "America/Los_Angeles")
        route = transitfeed.Route()
        route.route_id = "SAMPLE_ID"
        route.route_type = 3
        route.route_short_name = "66"
        route.route_long_name = "Sample Route"
        schedule.AddRouteObject(route)

        service_period = transitfeed.ServicePeriod("WEEK")
        service_period.SetStartDate("20070101")
        service_period.SetEndDate("20071231")
        service_period.SetWeekdayService(True)
        schedule.AddServicePeriodObject(service_period)

        trip = transitfeed.Trip()
        trip.route_id = "SAMPLE_ID"
        trip.service_period = service_period
        trip.trip_id = "SAMPLE_TRIP"
        trip.direction_id = "0"
        trip.block_id = None
        schedule.AddTripObject(trip)

        stop1 = transitfeed.Stop()
        stop1.stop_id = "STOP1"
        stop1.stop_name = "Stop 1"
        stop1.stop_lat = 78.243587
        stop1.stop_lon = 32.258937
        schedule.AddStopObject(stop1)
        trip.AddStopTime(stop1,
                         arrival_time="12:00:00",
                         departure_time="12:00:00")

        stop2 = transitfeed.Stop()
        stop2.stop_id = "STOP2"
        stop2.stop_name = "Stop 2"
        stop2.stop_lat = 78.253587
        stop2.stop_lon = 32.258937
        schedule.AddStopObject(stop2)
        trip.AddStopTime(stop2,
                         arrival_time="12:05:00",
                         departure_time="12:05:00")

        schedule.Validate()  # not necessary, but helpful for finding problems
        schedule.WriteGoogleTransitFeed("new_feed.zip")
    def runTest(self):
        schedule = transitfeed.Schedule()
        schedule.AddAgency("Sample Agency", "http://example.com",
                           "America/Los_Angeles")
        route = transitfeed.Route()
        route.route_id = "SAMPLE_ID"
        route.route_type = 3
        route.route_short_name = "66"
        route.route_long_name = "Sample Route acute letter e\202"
        schedule.AddRouteObject(route)

        service_period = transitfeed.ServicePeriod("WEEK")
        service_period.SetStartDate("20070101")
        service_period.SetEndDate("20071231")
        service_period.SetWeekdayService(True)
        schedule.AddServicePeriodObject(service_period)

        trip = transitfeed.Trip()
        trip.route_id = "SAMPLE_ID"
        trip.service_period = service_period
        trip.trip_id = "SAMPLE_TRIP"
        schedule.AddTripObject(trip)

        stop1 = transitfeed.Stop()
        stop1.stop_id = "STOP1"
        stop1.stop_name = u'Stop 1 acute letter e\202'
        stop1.stop_lat = 78.243587
        stop1.stop_lon = 32.258937
        schedule.AddStopObject(stop1)
        trip.AddStopTime(stop1,
                         arrival_time="12:00:00",
                         departure_time="12:00:00")

        stop2 = transitfeed.Stop()
        stop2.stop_id = "STOP2"
        stop2.stop_name = "Stop 2"
        stop2.stop_lat = 78.253587
        stop2.stop_lon = 32.258937
        schedule.AddStopObject(stop2)
        trip.AddStopTime(stop2,
                         arrival_time="12:05:00",
                         departure_time="12:05:00")

        schedule.Validate()
        schedule.WriteGoogleTransitFeed(self.tempfilepath)
Esempio n. 11
0
  def runTest(self):
    problem_reporter = util.GetTestFailureProblemReporter(self)
    schedule = transitfeed.Schedule(problem_reporter=problem_reporter)
    route = schedule.AddRoute(short_name="10", long_name="", route_type="Bus")
    stop = schedule.AddStop(40, -128, "My stop")
    # Stop must be added to schedule so that the call
    # AddStopTime -> AddStopTimeObject -> GetStopTimes -> GetStop can work
    trip = transitfeed.Trip()
    trip.route_id = route.route_id
    trip.service_id = schedule.GetDefaultServicePeriod().service_id
    trip.trip_id = "SAMPLE_TRIP"
    schedule.AddTripObject(trip)

    # First stop must have time
    trip.AddStopTime(stop, arrival_secs=300, departure_secs=360)
    trip.AddStopTime(stop)
    trip.AddStopTime(stop, arrival_time="00:07:00", departure_time="00:07:30")
    trip.Validate(problem_reporter)
Esempio n. 12
0
  def testExtraObjectAttribute(self):
    """Extra columns added to an object are preserved when writing."""
    schedule = self.MakeLoaderAndLoad()
    # Add an attribute to an existing trip
    trip1 = schedule.GetTrip("AB1")
    trip1.t_foo = "foo"
    # Make a copy of trip_id=AB1 and add an attribute before AddTripObject
    trip2 = transitfeed.Trip(field_dict=trip1)
    trip2.trip_id = "AB2"
    trip2.t_foo = ""
    trip2.n_foo = "bar"
    schedule.AddTripObject(trip2)
    trip2.AddStopTime(stop=schedule.GetStop("BULLFROG"), stop_time="09:00:00")
    trip2.AddStopTime(stop=schedule.GetStop("STAGECOACH"), stop_time="09:30:00")
    saved_schedule_file = StringIO()
    schedule.WriteGoogleTransitFeed(saved_schedule_file)
    self.accumulator.AssertNoMoreExceptions()

    self.assertLoadAndCheckExtraValues(saved_schedule_file)
Esempio n. 13
0
  def runTest(self):
    trip = transitfeed.Trip()
    repr(trip)  # shouldn't crash

    schedule = self.SimpleSchedule()
    trip = transitfeed.Trip()
    repr(trip)  # shouldn't crash

    trip = transitfeed.Trip()
    trip.trip_headsign = '\xBA\xDF\x0D'  # Not valid ascii or utf8
    repr(trip)  # shouldn't crash

    trip.route_id = '054C'
    trip.service_id = 'WEEK'
    trip.trip_id = '054C-00'
    trip.trip_headsign = 'via Polish Hill'
    trip.trip_short_name = 'X12'
    trip.direction_id = '0'
    trip.block_id = None
    trip.shape_id = None
    trip.bikes_allowed = '1'
    trip.wheelchair_accessible = '2'
    trip.Validate(self.problems)
    self.accumulator.AssertNoMoreExceptions()
    repr(trip)  # shouldn't crash

    # missing route ID
    trip.route_id = None
    self.ValidateAndExpectMissingValue(trip, 'route_id')
    trip.route_id = '054C'

    # missing service ID
    trip.service_id = None
    self.ValidateAndExpectMissingValue(trip, 'service_id')
    trip.service_id = 'WEEK'

    # missing trip ID
    trip.trip_id = None
    self.ValidateAndExpectMissingValue(trip, 'trip_id')
    trip.trip_id = '054C-00'

    # invalid direction ID
    trip.direction_id = 'NORTH'
    self.ValidateAndExpectInvalidValue(trip, 'direction_id')
    trip.direction_id = '0'

    # invalid bikes_allowed
    trip.bikes_allowed = '3'
    self.ValidateAndExpectInvalidValue(trip, 'bikes_allowed')
    trip.bikes_allowed = None

    # invalid wheelchair_accessible
    trip.wheelchair_accessible = '3'
    self.ValidateAndExpectInvalidValue(trip, 'wheelchair_accessible')
    trip.wheelchair_accessible = None

    # AddTripObject validates that route_id, service_id, .... are found in the
    # schedule. The Validate calls made by self.Expect... above can't make this
    # check because trip is not in a schedule.
    trip.route_id = '054C-notfound'
    schedule.AddTripObject(trip, self.problems, True)
    e = self.accumulator.PopException('InvalidValue')
    self.assertEqual('route_id', e.column_name)
    self.accumulator.AssertNoMoreExceptions()
    trip.route_id = '054C'

    # Make sure calling Trip.Validate validates that route_id and service_id
    # are found in the schedule.
    trip.service_id = 'WEEK-notfound'
    trip.Validate(self.problems)
    e = self.accumulator.PopException('InvalidValue')
    self.assertEqual('service_id', e.column_name)
    self.accumulator.AssertNoMoreExceptions()
    trip.service_id = 'WEEK'

    trip.Validate(self.problems)
    self.accumulator.AssertNoMoreExceptions()

    # expect no problems for non-overlapping periods
    trip.AddFrequency("06:00:00", "12:00:00", 600)
    trip.AddFrequency("01:00:00", "02:00:00", 1200)
    trip.AddFrequency("04:00:00", "05:00:00", 1000)
    trip.AddFrequency("12:00:00", "19:00:00", 700)
    trip.Validate(self.problems)
    self.accumulator.AssertNoMoreExceptions()
    trip.ClearFrequencies()

    # overlapping headway periods
    trip.AddFrequency("00:00:00", "12:00:00", 600)
    trip.AddFrequency("06:00:00", "18:00:00", 1200)
    self.ValidateAndExpectOtherProblem(trip)
    trip.ClearFrequencies()
    trip.AddFrequency("12:00:00", "20:00:00", 600)
    trip.AddFrequency("06:00:00", "18:00:00", 1200)
    self.ValidateAndExpectOtherProblem(trip)
    trip.ClearFrequencies()
    trip.AddFrequency("06:00:00", "12:00:00", 600)
    trip.AddFrequency("00:00:00", "25:00:00", 1200)
    self.ValidateAndExpectOtherProblem(trip)
    trip.ClearFrequencies()
    trip.AddFrequency("00:00:00", "20:00:00", 600)
    trip.AddFrequency("06:00:00", "18:00:00", 1200)
    self.ValidateAndExpectOtherProblem(trip)
    trip.ClearFrequencies()
    self.accumulator.AssertNoMoreExceptions()
    def runTest(self):
        accumulator = util.RecordingProblemAccumulator(
            self, ignore_types=("ExpirationDate", ))
        problems = transitfeed.ProblemReporter(accumulator)
        schedule = transitfeed.Schedule(problem_reporter=problems)
        agency = transitfeed.Agency()
        agency.agency_id = "DTA"
        agency.agency_name = "Demo Transit Authority"
        agency.agency_url = "http://google.com"
        agency.agency_timezone = "America/Los_Angeles"
        agency.agency_lang = 'en'
        # Test that unknown columns, such as agency_mission, are preserved
        agency.agency_mission = "Get You There"
        schedule.AddAgencyObject(agency)

        routes = []
        route_data = [("AB", "DTA", "10", "Airport - Bullfrog", 3),
                      ("BFC", "DTA", "20", "Bullfrog - Furnace Creek Resort",
                       3),
                      ("STBA", "DTA", "30", "Stagecoach - Airport Shuttle", 3),
                      ("CITY", "DTA", "40", "City", 3),
                      ("AAMV", "DTA", "50", "Airport - Amargosa Valley", 3)]

        for route_entry in route_data:
            route = transitfeed.Route()
            (route.route_id, route.agency_id, route.route_short_name,
             route.route_long_name, route.route_type) = route_entry
            routes.append(route)
            schedule.AddRouteObject(route)

        shape_data = [
            (36.915760, -116.751709),
            (36.905018, -116.763206),
            (36.902134, -116.777969),
            (36.904091, -116.788185),
            (36.883602, -116.814537),
            (36.874523, -116.795593),
            (36.873302, -116.786491),
            (36.869202, -116.784241),
            (36.868515, -116.784729),
        ]

        shape = transitfeed.Shape("BFC1S")
        for (lat, lon) in shape_data:
            shape.AddPoint(lat, lon)
        schedule.AddShapeObject(shape)

        week_period = transitfeed.ServicePeriod()
        week_period.service_id = "FULLW"
        week_period.start_date = "20070101"
        week_period.end_date = "20071231"
        week_period.SetWeekdayService()
        week_period.SetWeekendService()
        week_period.SetDateHasService("20070604", False)
        schedule.AddServicePeriodObject(week_period)

        weekend_period = transitfeed.ServicePeriod()
        weekend_period.service_id = "WE"
        weekend_period.start_date = "20070101"
        weekend_period.end_date = "20071231"
        weekend_period.SetWeekendService()
        schedule.AddServicePeriodObject(weekend_period)

        stops = []
        stop_data = [
            ("FUR_CREEK_RES", "Furnace Creek Resort (Demo)", 36.425288,
             -117.133162, "zone-a", "1234"),
            ("BEATTY_AIRPORT", "Nye County Airport (Demo)", 36.868446,
             -116.784682, "zone-a", "1235"),
            ("BULLFROG", "Bullfrog (Demo)", 36.88108, -116.81797, "zone-b",
             "1236"),
            ("STAGECOACH", "Stagecoach Hotel & Casino (Demo)", 36.915682,
             -116.751677, "zone-c", "1237"),
            ("NADAV", "North Ave / D Ave N (Demo)", 36.914893, -116.76821, "",
             ""),
            ("NANAA", "North Ave / N A Ave (Demo)", 36.914944, -116.761472, "",
             ""),
            ("DADAN", "Doing AVe / D Ave N (Demo)", 36.909489, -116.768242, "",
             ""),
            ("EMSI", "E Main St / S Irving St (Demo)", 36.905697, -116.76218,
             "", ""),
            ("AMV", "Amargosa Valley (Demo)", 36.641496, -116.40094, "", ""),
        ]
        for stop_entry in stop_data:
            stop = transitfeed.Stop()
            (stop.stop_id, stop.stop_name, stop.stop_lat, stop.stop_lon,
             stop.zone_id, stop.stop_code) = stop_entry
            schedule.AddStopObject(stop)
            stops.append(stop)
        # Add a value to an unknown column and make sure it is preserved
        schedule.GetStop("BULLFROG").stop_sound = "croak!"

        trip_data = [
            ("AB", "FULLW", "AB1", "to Bullfrog", "0", "1", None),
            ("AB", "FULLW", "AB2", "to Airport", "1", "2", None),
            ("STBA", "FULLW", "STBA", "Shuttle", None, None, None),
            ("CITY", "FULLW", "CITY1", None, "0", None, None),
            ("CITY", "FULLW", "CITY2", None, "1", None, None),
            ("BFC", "FULLW", "BFC1", "to Furnace Creek Resort", "0", "1",
             "BFC1S"),
            ("BFC", "FULLW", "BFC2", "to Bullfrog", "1", "2", None),
            ("AAMV", "WE", "AAMV1", "to Amargosa Valley", "0", None, None),
            ("AAMV", "WE", "AAMV2", "to Airport", "1", None, None),
            ("AAMV", "WE", "AAMV3", "to Amargosa Valley", "0", None, None),
            ("AAMV", "WE", "AAMV4", "to Airport", "1", None, None),
        ]

        trips = []
        for trip_entry in trip_data:
            trip = transitfeed.Trip()
            (trip.route_id, trip.service_id, trip.trip_id, trip.trip_headsign,
             trip.direction_id, trip.block_id, trip.shape_id) = trip_entry
            trips.append(trip)
            schedule.AddTripObject(trip)

        stop_time_data = {
            "STBA":
            [("6:00:00", "6:00:00", "STAGECOACH", None, None, None, None),
             ("6:20:00", "6:20:00", "BEATTY_AIRPORT", None, None, None, None)],
            "CITY1":
            [("6:00:00", "6:00:00", "STAGECOACH", 1.34, 0, 0, "stop 1"),
             ("6:05:00", "6:07:00", "NANAA", 2.40, 1, 2, "stop 2"),
             ("6:12:00", "6:14:00", "NADAV", 3.0, 2, 2, "stop 3"),
             ("6:19:00", "6:21:00", "DADAN", 4, 2, 2, "stop 4"),
             ("6:26:00", "6:28:00", "EMSI", 5.78, 2, 3, "stop 5")],
            "CITY2": [("6:28:00", "6:28:00", "EMSI", None, None, None, None),
                      ("6:35:00", "6:37:00", "DADAN", None, None, None, None),
                      ("6:42:00", "6:44:00", "NADAV", None, None, None, None),
                      ("6:49:00", "6:51:00", "NANAA", None, None, None, None),
                      ("6:56:00", "6:58:00", "STAGECOACH", None, None, None,
                       None)],
            "AB1":
            [("8:00:00", "8:00:00", "BEATTY_AIRPORT", None, None, None, None),
             ("8:10:00", "8:15:00", "BULLFROG", None, None, None, None)],
            "AB2":
            [("12:05:00", "12:05:00", "BULLFROG", None, None, None, None),
             ("12:15:00", "12:15:00", "BEATTY_AIRPORT", None, None, None, None)
             ],
            "BFC1": [
                ("8:20:00", "8:20:00", "BULLFROG", None, None, None, None),
                ("9:20:00", "9:20:00", "FUR_CREEK_RES", None, None, None, None)
            ],
            "BFC2":
            [("11:00:00", "11:00:00", "FUR_CREEK_RES", None, None, None, None),
             ("12:00:00", "12:00:00", "BULLFROG", None, None, None, None)],
            "AAMV1": [("8:00:00", "8:00:00", "BEATTY_AIRPORT", None, None,
                       None, None),
                      ("9:00:00", "9:00:00", "AMV", None, None, None, None)],
            "AAMV2": [("10:00:00", "10:00:00", "AMV", None, None, None, None),
                      ("11:00:00", "11:00:00", "BEATTY_AIRPORT", None, None,
                       None, None)],
            "AAMV3": [("13:00:00", "13:00:00", "BEATTY_AIRPORT", None, None,
                       None, None),
                      ("14:00:00", "14:00:00", "AMV", None, None, None, None)],
            "AAMV4": [("15:00:00", "15:00:00", "AMV", None, None, None, None),
                      ("16:00:00", "16:00:00", "BEATTY_AIRPORT", None, None,
                       None, None)],
        }

        for trip_id, stop_time_list in stop_time_data.items():
            for stop_time_entry in stop_time_list:
                (arrival_time, departure_time, stop_id, shape_dist_traveled,
                 pickup_type, drop_off_type, stop_headsign) = stop_time_entry
                trip = schedule.GetTrip(trip_id)
                stop = schedule.GetStop(stop_id)
                trip.AddStopTime(stop,
                                 arrival_time=arrival_time,
                                 departure_time=departure_time,
                                 shape_dist_traveled=shape_dist_traveled,
                                 pickup_type=pickup_type,
                                 drop_off_type=drop_off_type,
                                 stop_headsign=stop_headsign)

        self.assertEqual(
            0,
            schedule.GetTrip("CITY1").GetStopTimes()[0].pickup_type)
        self.assertEqual(
            1,
            schedule.GetTrip("CITY1").GetStopTimes()[1].pickup_type)

        headway_data = [
            ("STBA", "6:00:00", "22:00:00", 1800),
            ("CITY1", "6:00:00", "7:59:59", 1800),
            ("CITY2", "6:00:00", "7:59:59", 1800),
            ("CITY1", "8:00:00", "9:59:59", 600),
            ("CITY2", "8:00:00", "9:59:59", 600),
            ("CITY1", "10:00:00", "15:59:59", 1800),
            ("CITY2", "10:00:00", "15:59:59", 1800),
            ("CITY1", "16:00:00", "18:59:59", 600),
            ("CITY2", "16:00:00", "18:59:59", 600),
            ("CITY1", "19:00:00", "22:00:00", 1800),
            ("CITY2", "19:00:00", "22:00:00", 1800),
        ]

        headway_trips = {}
        for headway_entry in headway_data:
            (trip_id, start_time, end_time, headway) = headway_entry
            headway_trips[trip_id] = []  # adding to set to check later
            trip = schedule.GetTrip(trip_id)
            trip.AddFrequency(start_time, end_time, headway, 0, problems)
        for trip_id in headway_trips:
            headway_trips[trip_id] = \
                schedule.GetTrip(trip_id).GetFrequencyTuples()

        fare_data = [
            ("p", 1.25, "USD", 0, 0),
            ("a", 5.25, "USD", 0, 0),
        ]

        fares = []
        for fare_entry in fare_data:
            fare = transitfeed.FareAttribute(fare_entry[0], fare_entry[1],
                                             fare_entry[2], fare_entry[3],
                                             fare_entry[4])
            fares.append(fare)
            schedule.AddFareAttributeObject(fare)

        fare_rule_data = [
            ("p", "AB", "zone-a", "zone-b", None),
            ("p", "STBA", "zone-a", None, "zone-c"),
            ("p", "BFC", None, "zone-b", "zone-a"),
            ("a", "AAMV", None, None, None),
        ]

        for fare_id, route_id, orig_id, dest_id, contains_id in fare_rule_data:
            rule = transitfeed.FareRule(fare_id=fare_id,
                                        route_id=route_id,
                                        origin_id=orig_id,
                                        destination_id=dest_id,
                                        contains_id=contains_id)
            schedule.AddFareRuleObject(rule, problems)

        schedule.Validate(problems)
        accumulator.AssertNoMoreExceptions()
        schedule.WriteGoogleTransitFeed(self.tempfilepath)

        read_schedule = \
            transitfeed.Loader(self.tempfilepath, problems=problems,
                               extra_validation=True).Load()
        e = accumulator.PopException("UnrecognizedColumn")
        self.assertEqual(e.file_name, "agency.txt")
        self.assertEqual(e.column_name, "agency_mission")
        e = accumulator.PopException("UnrecognizedColumn")
        self.assertEqual(e.file_name, "stops.txt")
        self.assertEqual(e.column_name, "stop_sound")
        accumulator.AssertNoMoreExceptions()

        self.assertEqual(1, len(read_schedule.GetAgencyList()))
        self.assertEqual(agency, read_schedule.GetAgency(agency.agency_id))

        self.assertEqual(len(routes), len(read_schedule.GetRouteList()))
        for route in routes:
            self.assertEqual(route, read_schedule.GetRoute(route.route_id))

        self.assertEqual(2, len(read_schedule.GetServicePeriodList()))
        self.assertEqual(
            week_period,
            read_schedule.GetServicePeriod(week_period.service_id))
        self.assertEqual(
            weekend_period,
            read_schedule.GetServicePeriod(weekend_period.service_id))

        self.assertEqual(len(stops), len(read_schedule.GetStopList()))
        for stop in stops:
            self.assertEqual(stop, read_schedule.GetStop(stop.stop_id))
        self.assertEqual("croak!",
                         read_schedule.GetStop("BULLFROG").stop_sound)

        self.assertEqual(len(trips), len(read_schedule.GetTripList()))
        for trip in trips:
            self.assertEqual(trip, read_schedule.GetTrip(trip.trip_id))

        for trip_id in headway_trips:
            self.assertEqual(
                headway_trips[trip_id],
                read_schedule.GetTrip(trip_id).GetFrequencyTuples())

        for trip_id, stop_time_list in stop_time_data.items():
            trip = read_schedule.GetTrip(trip_id)
            read_stoptimes = trip.GetStopTimes()
            self.assertEqual(len(read_stoptimes), len(stop_time_list))
            for stop_time_entry, read_stoptime in zip(stop_time_list,
                                                      read_stoptimes):
                (arrival_time, departure_time, stop_id, shape_dist_traveled,
                 pickup_type, drop_off_type, stop_headsign) = stop_time_entry
                self.assertEqual(stop_id, read_stoptime.stop_id)
                self.assertEqual(read_schedule.GetStop(stop_id),
                                 read_stoptime.stop)
                self.assertEqualTimeString(arrival_time,
                                           read_stoptime.arrival_time)
                self.assertEqualTimeString(departure_time,
                                           read_stoptime.departure_time)
                self.assertEqual(shape_dist_traveled,
                                 read_stoptime.shape_dist_traveled)
                self.assertEqualWithDefault(pickup_type,
                                            read_stoptime.pickup_type, 0)
                self.assertEqualWithDefault(drop_off_type,
                                            read_stoptime.drop_off_type, 0)
                self.assertEqualWithDefault(stop_headsign,
                                            read_stoptime.stop_headsign, '')

        self.assertEqual(len(fares), len(read_schedule.GetFareAttributeList()))
        for fare in fares:
            self.assertEqual(fare,
                             read_schedule.GetFareAttribute(fare.fare_id))

        read_fare_rules_data = []
        for fare in read_schedule.GetFareAttributeList():
            for rule in fare.GetFareRuleList():
                self.assertEqual(fare.fare_id, rule.fare_id)
                read_fare_rules_data.append(
                    (fare.fare_id, rule.route_id, rule.origin_id,
                     rule.destination_id, rule.contains_id))

        fare_rule_data.sort()
        read_fare_rules_data.sort()
        self.assertEqual(len(read_fare_rules_data), len(fare_rule_data))
        for rf, f in zip(read_fare_rules_data, fare_rule_data):
            self.assertEqual(rf, f)

        self.assertEqual(1, len(read_schedule.GetShapeList()))
        self.assertEqual(shape, read_schedule.GetShape(shape.shape_id))
Esempio n. 15
0
  def runTest(self):

    schedule = transitfeed.Schedule(self.problems)
    schedule._check_duplicate_trips = True;

    agency = transitfeed.Agency('Demo agency', 'http://google.com',
                                'America/Los_Angeles', 'agency1')
    schedule.AddAgencyObject(agency)

    service = schedule.GetDefaultServicePeriod()
    service.SetDateHasService('20070101')

    route1 = transitfeed.Route('Route1', 'route 1', 3, 'route_1', 'agency1')
    schedule.AddRouteObject(route1)
    route2 = transitfeed.Route('Route2', 'route 2', 3, 'route_2', 'agency1')
    schedule.AddRouteObject(route2)

    trip1 = transitfeed.Trip()
    trip1.route_id = 'route_1'
    trip1.trip_id = 't1'
    trip1.trip_headsign = 'via Polish Hill'
    trip1.direction_id = '0'
    trip1.service_id = service.service_id
    schedule.AddTripObject(trip1)

    trip2 = transitfeed.Trip()
    trip2.route_id = 'route_2'
    trip2.trip_id = 't2'
    trip2.trip_headsign = 'New'
    trip2.direction_id = '0'
    trip2.service_id = service.service_id
    schedule.AddTripObject(trip2)

    trip3 = transitfeed.Trip()
    trip3.route_id = 'route_1'
    trip3.trip_id = 't3'
    trip3.trip_headsign = 'New Demo'
    trip3.direction_id = '0'
    trip3.service_id = service.service_id
    schedule.AddTripObject(trip3)

    stop1 = transitfeed.Stop(36.425288, -117.139162, "Demo Stop 1", "STOP1")
    schedule.AddStopObject(stop1)
    trip1.AddStopTime(stop1, arrival_time="5:11:00", departure_time="5:12:00",
                     stop_sequence=0, shape_dist_traveled=0)
    trip2.AddStopTime(stop1, arrival_time="5:11:00", departure_time="5:12:00",
                     stop_sequence=0, shape_dist_traveled=0)
    trip3.AddStopTime(stop1, arrival_time="6:11:00", departure_time="6:12:00",
                     stop_sequence=0, shape_dist_traveled=0)

    stop2 = transitfeed.Stop(36.424288, -117.158142, "Demo Stop 2", "STOP2")
    schedule.AddStopObject(stop2)
    trip1.AddStopTime(stop2, arrival_time="5:15:00", departure_time="5:16:00",
                      stop_sequence=1, shape_dist_traveled=1)
    trip2.AddStopTime(stop2, arrival_time="5:25:00", departure_time="5:26:00",
                      stop_sequence=1, shape_dist_traveled=1)
    trip3.AddStopTime(stop2, arrival_time="6:15:00", departure_time="6:16:00",
                      stop_sequence=1, shape_dist_traveled=1)

    schedule.Validate(self.problems)
    e = self.accumulator.PopException('DuplicateTrip')
    self.assertTrue(e.FormatProblem().find('t1 of route') != -1)
    self.assertTrue(e.FormatProblem().find('t2 of route') != -1)
    self.accumulator.AssertNoMoreExceptions()
Esempio n. 16
0
    def runTest(self):

        schedule = transitfeed.Schedule(self.problems)
        schedule._check_duplicate_trips = True

        agency = transitfeed.Agency("Demo agency", "http://google.com",
                                    "America/Los_Angeles", "agency1")
        schedule.AddAgencyObject(agency)

        service = schedule.GetDefaultServicePeriod()
        service.SetDateHasService("20070101")

        route1 = transitfeed.Route("Route1", "route 1", 3, "route_1",
                                   "agency1")
        schedule.AddRouteObject(route1)
        route2 = transitfeed.Route("Route2", "route 2", 3, "route_2",
                                   "agency1")
        schedule.AddRouteObject(route2)

        trip1 = transitfeed.Trip()
        trip1.route_id = "route_1"
        trip1.trip_id = "t1"
        trip1.trip_headsign = "via Polish Hill"
        trip1.direction_id = "0"
        trip1.service_id = service.service_id
        schedule.AddTripObject(trip1)

        trip2 = transitfeed.Trip()
        trip2.route_id = "route_2"
        trip2.trip_id = "t2"
        trip2.trip_headsign = "New"
        trip2.direction_id = "0"
        trip2.service_id = service.service_id
        schedule.AddTripObject(trip2)

        trip3 = transitfeed.Trip()
        trip3.route_id = "route_1"
        trip3.trip_id = "t3"
        trip3.trip_headsign = "New Demo"
        trip3.direction_id = "0"
        trip3.service_id = service.service_id
        schedule.AddTripObject(trip3)

        stop1 = transitfeed.Stop(36.425288, -117.139162, "Demo Stop 1",
                                 "STOP1")
        schedule.AddStopObject(stop1)
        trip1.AddStopTime(
            stop1,
            arrival_time="5:11:00",
            departure_time="5:12:00",
            stop_sequence=0,
            shape_dist_traveled=0,
        )
        trip2.AddStopTime(
            stop1,
            arrival_time="5:11:00",
            departure_time="5:12:00",
            stop_sequence=0,
            shape_dist_traveled=0,
        )
        trip3.AddStopTime(
            stop1,
            arrival_time="6:11:00",
            departure_time="6:12:00",
            stop_sequence=0,
            shape_dist_traveled=0,
        )

        stop2 = transitfeed.Stop(36.424288, -117.158142, "Demo Stop 2",
                                 "STOP2")
        schedule.AddStopObject(stop2)
        trip1.AddStopTime(
            stop2,
            arrival_time="5:15:00",
            departure_time="5:16:00",
            stop_sequence=1,
            shape_dist_traveled=1,
        )
        trip2.AddStopTime(
            stop2,
            arrival_time="5:25:00",
            departure_time="5:26:00",
            stop_sequence=1,
            shape_dist_traveled=1,
        )
        trip3.AddStopTime(
            stop2,
            arrival_time="6:15:00",
            departure_time="6:16:00",
            stop_sequence=1,
            shape_dist_traveled=1,
        )

        schedule.Validate(self.problems)
        e = self.accumulator.PopException("DuplicateTrip")
        self.assertTrue(e.FormatProblem().find("t1 of route") != -1)
        self.assertTrue(e.FormatProblem().find("t2 of route") != -1)
        self.accumulator.AssertNoMoreExceptions()