Пример #1
0
 def test_gets_borders(self):
     par_cost_table = [[None, None], [None, None]]
     no_par_cost_table = [[None, None], [None, None]]
     list = [None] * 2
     expected = [0, 1]
     mock_individual_cost_computer = MutableNumber(0)
     actual = partition_trajectory(list, self.get_mock_cost_computer(par_cost_table), \
                                   self.get_mock_cost_computer(no_par_cost_table), \
                                   self.create_mock_model_cost_getter_func(mock_individual_cost_computer), \
                                   mock_individual_cost_computer)
     self.verify_iterable_works_more_than_once(expected, actual)
     self.assertEquals(mock_individual_cost_computer.get_val(), 0)
Пример #2
0
 def test_get_all_of_three_item_list(self):
     par_cost_table = [[None, None, 6], [None, None, None], [None, None, None]]
     no_par_cost_table = [[None, None, 5], [None, None, None], [None, None, None]]
     list = [None] * 3
     expected = [0, 1, 2]
     mock_individual_cost_computer = MutableNumber(0)
     actual = partition_trajectory(list, self.get_mock_cost_computer(par_cost_table), \
                                   self.get_mock_cost_computer(no_par_cost_table), \
                                   self.create_mock_model_cost_getter_func(mock_individual_cost_computer), \
                                   mock_individual_cost_computer)
     self.verify_iterable_works_more_than_once(expected, actual)
     self.assertEquals(mock_individual_cost_computer.get_val(), 1 * 2)
Пример #3
0
    def test_no_partition_cost_normal_case(self):
        segments = [1, 3, 5, 7, 9, -1, 2, 3]
        mock_line_seg_getter = MutableNumber(1)
        seg_iterable_getter = self.mock_line_segment_iterable_getter(
            segments, 0, 4)
        model_cost_computer = self.mock_adder_model_cost_computer(
            lambda num: num * 3)

        cost = no_partition_cost_computer(segments, 0, 4, seg_iterable_getter,
                                          model_cost_computer,
                                          mock_line_seg_getter)

        self.assertEquals(75, cost)
        self.assertEquals(mock_line_seg_getter.get_val(), 2)
Пример #4
0
    def test_no_line_segs_provided(self):
        segments = [1, 3, 5, 7, 9, -2, 3, 4]
        mock_line_seg_getter = MutableNumber(1)
        seg_iterable_getter = lambda l, low, high, func: []
        model_cost_computer = self.mock_adder_model_cost_computer(
            lambda num: num * 3)
        partition_line_getter = self.mock_partition_line_getter(4, 5, 3)
        distance_function = self.mock_global_dist_func(lambda x, y: None)

        self.assertRaises(Exception, no_partition_cost_computer, segments, 5, 3, \
                          seg_iterable_getter, model_cost_computer, mock_line_seg_getter)
        self.assertRaises(Exception, partition_cost_computer, segments, 5, 3, seg_iterable_getter, \
                                       partition_line_getter, model_cost_computer, distance_function, mock_line_seg_getter)
        self.assertEquals(mock_line_seg_getter.get_val(), 1)
Пример #5
0
    def test_partition_cost_abs_diff_distance_func(self):
        segments = [0, 9, 3, 1, 3, 5, 7, 9]
        mock_line_seg_getter = MutableNumber(1)
        seg_iterable_getter = self.mock_line_segment_iterable_getter(
            segments, 3, 8)
        partition_line_getter = self.mock_partition_line_getter(4, 3, 8)
        model_cost_computer = self.mock_adder_model_cost_computer(
            lambda num: num * 3)
        distance_function = self.mock_global_dist_func(lambda x, y: abs(x - y))

        cost = partition_cost_computer(segments, 3, 8, seg_iterable_getter, \
                                       partition_line_getter, model_cost_computer, distance_function, \
                                       mock_line_seg_getter)
        self.assertEquals(25, cost)
        self.assertEquals(mock_line_seg_getter.get_val(), 2)
    def mock_accumulator_func_getter(self, func):
        total = MutableNumber(0)

        def _func(num):
            total.increment(func(num))
            return total.get_val()

        return _func
Пример #7
0
        def mean_func():
            total = MutableFloat(0.0)
            count = MutableNumber(0)

            def func(num):
                total.increment(num)
                count.increment(1)
                return total.get_val() / count
Пример #8
0
    def create_mock_partitioning_func(self, keeper_func):
        index = MutableNumber(0)

        def _func(trajectory_point_list):
            for x in trajectory_point_list:
                if keeper_func(x):
                    yield index.get_val()
                index.increment(1)

        return _func
Пример #9
0
    def test_get_all_of_four_item_list(self):
        par_cost_table = \
        [[None, None, 3, 3], \
         [None, None, None, 4], \
         [None, None, None, None], \
         [None, None, None, None]]

        no_par_cost_table = \
        [[None, None, 2, 2], \
         [None, None, None, 3], \
         [None, None, None, None], \
         [None, None, None, None]]

        list = [None] * 4
        expected = [0, 1, 2, 3]
        mock_individual_cost_computer = MutableNumber(0)
        actual = partition_trajectory(list, self.get_mock_cost_computer(par_cost_table), \
                                      self.get_mock_cost_computer(no_par_cost_table), \
                                      self.create_mock_model_cost_getter_func(mock_individual_cost_computer), \
                                      mock_individual_cost_computer)
        self.verify_iterable_works_more_than_once(expected, actual)
        self.assertEquals(mock_individual_cost_computer.get_val(), 2 * 2)
Пример #10
0
    def test_bad_input_indices(self):
        segments = [1, 3, 5, 7, 9, -2, 3, 4]
        mock_line_seg_getter = MutableNumber(1)
        seg_iterable_getter = self.mock_line_segment_iterable_getter(
            segments, 0, 4)
        model_cost_computer = self.mock_adder_model_cost_computer(
            lambda num: num * 3)
        partition_line_getter = self.mock_partition_line_getter(4, 5, 3)
        distance_function = self.mock_global_dist_func(lambda x, y: None)

        self.assertRaises(IndexError, no_partition_cost_computer, segments, 5, 3, \
                          seg_iterable_getter, model_cost_computer, mock_line_seg_getter)
        self.assertRaises(IndexError, partition_cost_computer, segments, 5, 3, seg_iterable_getter, \
                                       partition_line_getter, model_cost_computer, distance_function, mock_line_seg_getter)

        partition_line_getter = self.mock_partition_line_getter(4, 2, 2)

        self.assertRaises(IndexError, no_partition_cost_computer, segments, 2, 2, \
                          seg_iterable_getter, model_cost_computer, mock_line_seg_getter)
        self.assertRaises(IndexError, partition_cost_computer, segments, 2, 2, seg_iterable_getter, \
                                       partition_line_getter, model_cost_computer, distance_function, mock_line_seg_getter)
        self.assertEquals(mock_line_seg_getter.get_val(), 1)
Пример #11
0
    def test_get_some_of_four_item_list(self):
        par_cost_table = \
        [[None, None, 2, 3], \
         [None, None, None, None], \
         [None, None, None, None], \
         [None, None, None, None]]

        no_par_cost_table = \
        [[None, None, 2, 2], \
         [None, None, None, None], \
         [None, None, None, None], \
         [None, None, None, None]]

        list = [None] * 4

        expected_partition = [0, 2, 3]
        mock_individual_cost_computer = MutableNumber(0)
        actual = partition_trajectory(list, self.get_mock_cost_computer(par_cost_table), \
                                      self.get_mock_cost_computer(no_par_cost_table), \
                                      self.create_mock_model_cost_getter_func(mock_individual_cost_computer), \
                                      mock_individual_cost_computer)
        self.verify_iterable_equals_list(actual, expected_partition)
        self.assertEquals(mock_individual_cost_computer.get_val(), 2 * 2)
Пример #12
0
 def test_get_some_of_four_item_list(self):
     par_cost_table = \
     [[None, None, 2, 3], \
      [None, None, None, None], \
      [None, None, None, None], \
      [None, None, None, None]]
     
     no_par_cost_table = \
     [[None, None, 2, 2], \
      [None, None, None, None], \
      [None, None, None, None], \
      [None, None, None, None]]
     
     list = [None] * 4
     
     expected_partition = [0, 2, 3]
     mock_individual_cost_computer = MutableNumber(0)
     actual = partition_trajectory(list, self.get_mock_cost_computer(par_cost_table), \
                                   self.get_mock_cost_computer(no_par_cost_table), \
                                   self.create_mock_model_cost_getter_func(mock_individual_cost_computer), \
                                   mock_individual_cost_computer)
     self.verify_iterable_equals_list(actual, expected_partition)
     self.assertEquals(mock_individual_cost_computer.get_val(), 2 * 2)