Example #1
0
class TestDestination(unittest.TestCase):
   def setUp(self):
      self.home = Destination('120 Hays St, Woodland, CA 95695', 
            time_pref=None,
            delivery_time_avg=5,
            delivery_time_variance=2)
      self.davis = Destination('313 K. St, Davis, CA 95616',
            time_pref=None,
            delivery_time_avg=5,
            delivery_time_variance=3)

   def test_distance(self):
      dist = self.home.distance_to(self.davis)
      # 12 miles, about 19.3k meters
      self.assertTrue( 19000 < dist < 19500 )

   def test_time(self):
      time = self.home.time_to(self.davis)
      self.assertTrue( 18 < time < 22 )

   def test_throw(self):
      ''' Check average and variance calculated correctly '''
      n = 50000
      sum_n = sum(self.home.throw_delivery_time() for i in range(n))
      sum_squared_n = sum(x*x for x in (self.home.throw_delivery_time() for i in range(n)))

      average = float(sum_n)/n 

      variance = float(sum_squared_n)/n - average*average
      
      self.assertAlmostEquals(average, 5, 0)
      self.assertAlmostEquals(variance, 2, 0)
Example #2
0
 def setUp(self):
    self.home = Destination('120 Hays St, Woodland, CA 95695', 
          time_pref=None,
          delivery_time_avg=5,
          delivery_time_variance=2)
    self.davis = Destination('313 K. St, Davis, CA 95616',
          time_pref=None,
          delivery_time_avg=5,
          delivery_time_variance=3)
Example #3
0
 def setUp(self):
    # Approximate difference between two points is 20 mintues
    self.home = Destination('120 Hays St, Woodland, CA 95695', 
          time_pref=None,
          delivery_time_avg=5,
          delivery_time_variance=2)
    self.davis = Destination('313 K. St, Davis, CA 95616',
          time_pref=None,
          delivery_time_avg=5,
          delivery_time_variance=3)
Example #4
0
class TestDestination(unittest.TestCase):
   def setUp(self):
      # Approximate difference between two points is 20 mintues
      self.home = Destination('120 Hays St, Woodland, CA 95695', 
            time_pref=None,
            delivery_time_avg=5,
            delivery_time_variance=2)
      self.davis = Destination('313 K. St, Davis, CA 95616',
            time_pref=None,
            delivery_time_avg=5,
            delivery_time_variance=3)

   def test_always_compat(self):
       self.home.time_pref = timing.TimePreferences(
           [(1, today_at(8, 00), today_at(8, 01))]
       )
       self.davis.time_pref = timing.TimePreferences(
           [(1, today_at(8, 00), today_at(9,00))]
       )

       # Time from woodland and davis is 20 minutes, so this should always 
       # be satisfied
       compatability = self.home.compatability_to(self.davis)
       self.assertAlmostEquals(compatability, 1, 1)

   def test_never_compat(self):
       self.home.time_pref = timing.TimePreferences(
           [(1, today_at(8, 00), today_at(8, 01))]
       )
       self.davis.time_pref = timing.TimePreferences(
           [(1, today_at(10, 00), today_at(11,00))]
       )

       # Time from woodland and davis is 20 minutes, so this should never 
       # be satisfied
       compatability = self.home.compatability_to(self.davis)
       self.assertAlmostEquals(compatability, 0, 1)

   def test_sometimes_compat(self):
       self.home.time_pref = timing.TimePreferences(
           [(1, today_at(8, 00), today_at(8, 01))]
       )
       self.davis.time_pref = timing.TimePreferences(
           [(1, today_at(8, 25), today_at(8, 26))]
       )

       # Time from woodland and davis is 20 minutes, so this should sometimes 
       # be satisfied
       compatability = self.home.compatability_to(self.davis)
       self.assertTrue(0 < compatability < 1)
   
   def test_multi_window(self):
       self.home.time_pref = timing.TimePreferences(
           [(1, today_at(8, 00), today_at(8, 01))]
       )
       self.davis.time_pref = timing.TimePreferences(
           [(1, today_at(8, 00), today_at(9,00)),
            (1, today_at(12, 00), today_at(13,00))]
       )
       # The first time window should always be satisfied, so we expect
       # 50% satisfaction (as the first and second windows have equal weights
       compatability = self.home.compatability_to(self.davis)
       self.assertAlmostEquals(compatability, 0.5, 1)

   def test_multi_always(self):
       self.home.time_pref = timing.TimePreferences(
           [(1, today_at(8, 00), today_at(8, 01)),
            (1, today_at(12, 00), today_at(12, 01))]
       )
       self.davis.time_pref = timing.TimePreferences(
           [(1, today_at(8, 00), today_at(9,00)),
            (1, today_at(12, 00), today_at(13,00))]
       )
       compatability = self.home.compatability_to(self.davis)
       # Is this what we want??? Maybe this should be one....
       self.assertAlmostEquals(compatability, 0.5, 5)