예제 #1
0
 def test_multiple_exclusions_integer_sequence2(self):
     """Tests the multiple exclusion syntax for integer notation"""
     sequence = IntegerSequence('P1 ! +P1/P2', 1, 10)
     output = []
     point = sequence.get_start_point()
     while point:
         output.append(point)
         point = sequence.get_next_point(point)
     self.assertEqual([int(out) for out in output], [1, 3, 5, 7, 9])
예제 #2
0
 def test_multiple_exclusions_integer_sequence_weird_valid_formatting(self):
     """Tests the multiple exclusion syntax for integer notation"""
     sequence = IntegerSequence('P1 !(P2,     6,8) ', 1, 10)
     output = []
     point = sequence.get_start_point()
     while point:
         output.append(point)
         point = sequence.get_next_point(point)
     self.assertEqual([int(out) for out in output], [2, 4, 10])
예제 #3
0
 def test_multiple_exclusions_integer_sequence_weird_valid_formatting(self):
     """Tests the multiple exclusion syntax for integer notation"""
     sequence = IntegerSequence('P1 !(P2,     6,8) ', 1, 10)
     output = []
     point = sequence.get_start_point()
     while point:
         output.append(point)
         point = sequence.get_next_point(point)
     self.assertEqual([int(out) for out in output], [2, 4, 10])
예제 #4
0
 def test_multiple_exclusions_simple(self):
     """Tests the multiple exclusion syntax for integer notation"""
     sequence = IntegerSequence('R/P1!(2,3,7)', 1, 10)
     output = []
     point = sequence.get_start_point()
     while point:
         output.append(point)
         point = sequence.get_next_point(point)
     self.assertEqual([int(out) for out in output], [1, 4, 5, 6, 8, 9, 10])
예제 #5
0
 def test_multiple_exclusions_integer_sequence2(self):
     """Tests the multiple exclusion syntax for integer notation"""
     sequence = IntegerSequence('P1 ! +P1/P2', 1, 10)
     output = []
     point = sequence.get_start_point()
     while point:
         output.append(point)
         point = sequence.get_next_point(point)
     self.assertEqual([int(out) for out in output], [1, 3, 5, 7, 9])
예제 #6
0
 def test_multiple_exclusions_simple(self):
     """Tests the multiple exclusion syntax for integer notation"""
     sequence = IntegerSequence('R/P1!(2,3,7)', 1, 10)
     output = []
     point = sequence.get_start_point()
     while point:
         output.append(point)
         point = sequence.get_next_point(point)
     self.assertEqual([int(out) for out in output], [1, 4, 5, 6, 8, 9, 10])
예제 #7
0
 def test_exclusions_simple(self):
     """Test the generation of points for integer sequences with exclusions.
     """
     sequence = IntegerSequence('R/P1!3', 1, 5)
     output = []
     point = sequence.get_start_point()
     while point:
         output.append(point)
         point = sequence.get_next_point(point)
     self.assertEqual([int(out) for out in output], [1, 2, 4, 5])
예제 #8
0
 def test_exclusions_simple(self):
     """Test the generation of points for integer sequences with exclusions.
     """
     sequence = IntegerSequence('R/P1!3', 1, 5)
     output = []
     point = sequence.get_start_point()
     while point:
         output.append(point)
         point = sequence.get_next_point(point)
     self.assertEqual([int(out) for out in output], [1, 2, 4, 5])
예제 #9
0
    def test_simple(self):
        """Run some simple tests for integer cycling."""
        sequence = IntegerSequence('R/1/P3', 1, 10)
        start = sequence.p_start
        stop = sequence.p_stop

        # Test point generation forwards.
        point = start
        output = []
        while point and stop and point <= stop:
            output.append(point)
            point = sequence.get_next_point(point)
        self.assertEqual([int(out) for out in output], [1, 4, 7, 10])

        # Test point generation backwards.
        point = stop
        output = []
        while point and start and point >= start:
            output.append(point)
            point = sequence.get_prev_point(point)
        self.assertEqual([int(out) for out in output], [10, 7, 4, 1])

        # Test sequence comparison
        sequence1 = IntegerSequence('R/1/P2', 1, 10)
        sequence2 = IntegerSequence('R/1/P2', 1, 10)
        self.assertEqual(sequence1, sequence2)
        sequence2.set_offset(IntegerInterval('-P2'))
        self.assertEqual(sequence1, sequence2)
        sequence2.set_offset(IntegerInterval('-P1'))
        self.assertNotEqual(sequence1, sequence2)
예제 #10
0
    def test_multiple_exclusions_extensive(self):
        """Tests IntegerSequence methods for sequences with multi-exclusions"""
        points = [IntegerPoint(i) for i in range(10)]
        sequence = IntegerSequence('R/P1!(2,3,7)', 1, 10)
        self.assertFalse(sequence.is_on_sequence(points[3]))
        self.assertFalse(sequence.is_valid(points[3]))
        self.assertEqual(sequence.get_prev_point(points[3]), points[1])
        self.assertEqual(sequence.get_prev_point(points[4]), points[1])
        self.assertEqual(sequence.get_nearest_prev_point(points[3]), points[1])
        self.assertEqual(sequence.get_nearest_prev_point(points[4]), points[1])
        self.assertEqual(sequence.get_next_point(points[3]), points[4])
        self.assertEqual(sequence.get_next_point(points[2]), points[4])
        self.assertEqual(sequence.get_next_point_on_sequence(points[3]),
                         points[4])
        self.assertEqual(sequence.get_next_point_on_sequence(points[6]),
                         points[8])

        sequence = IntegerSequence('R/P1!(1,3,4)', 1, 10)
        self.assertEqual(sequence.get_first_point(points[1]), points[2])
        self.assertEqual(sequence.get_first_point(points[0]), points[2])
        self.assertEqual(sequence.get_start_point(), points[2])

        sequence = IntegerSequence('R/P1!(8,9,10)', 1, 10)
        self.assertEqual(sequence.get_stop_point(), points[7])
예제 #11
0
    def test_simple(self):
        """Run some simple tests for integer cycling."""
        sequence = IntegerSequence('R/1/P3', 1, 10)
        start = sequence.p_start
        stop = sequence.p_stop

        # Test point generation forwards.
        point = start
        output = []
        while point and stop and point <= stop:
            output.append(point)
            point = sequence.get_next_point(point)
        self.assertEqual([int(out) for out in output], [1, 4, 7, 10])

        # Test point generation backwards.
        point = stop
        output = []
        while point and start and point >= start:
            output.append(point)
            point = sequence.get_prev_point(point)
        self.assertEqual([int(out) for out in output], [10, 7, 4, 1])

        # Test sequence comparison
        sequence1 = IntegerSequence('R/1/P2', 1, 10)
        sequence2 = IntegerSequence('R/1/P2', 1, 10)
        self.assertEqual(sequence1, sequence2)
        sequence2.set_offset(IntegerInterval('-P2'))
        self.assertEqual(sequence1, sequence2)
        sequence2.set_offset(IntegerInterval('-P1'))
        self.assertNotEqual(sequence1, sequence2)
예제 #12
0
    def test_exclusions_extensive(self):
        """Test IntegerSequence methods for sequences with exclusions."""
        point_0 = IntegerPoint(0)
        point_1 = IntegerPoint(1)
        point_2 = IntegerPoint(2)
        point_3 = IntegerPoint(3)
        point_4 = IntegerPoint(4)

        sequence = IntegerSequence('R/P1!3', 1, 5)
        self.assertFalse(sequence.is_on_sequence(point_3))
        self.assertFalse(sequence.is_valid(point_3))
        self.assertEqual(sequence.get_prev_point(point_3), point_2)
        self.assertEqual(sequence.get_prev_point(point_4), point_2)
        self.assertEqual(sequence.get_nearest_prev_point(point_3), point_2)
        self.assertEqual(sequence.get_nearest_prev_point(point_3), point_2)
        self.assertEqual(sequence.get_next_point(point_3), point_4)
        self.assertEqual(sequence.get_next_point(point_2), point_4)
        self.assertEqual(sequence.get_next_point_on_sequence(point_3), point_4)
        self.assertEqual(sequence.get_next_point_on_sequence(point_2), point_4)

        sequence = IntegerSequence('R/P1!1', 1, 5)
        self.assertEqual(sequence.get_first_point(point_1), point_2)
        self.assertEqual(sequence.get_first_point(point_0), point_2)
        self.assertEqual(sequence.get_start_point(), point_2)

        sequence = IntegerSequence('R/P1!5', 1, 5)
        self.assertEqual(sequence.get_stop_point(), point_4)
예제 #13
0
    def test_multiple_exclusions_extensive(self):
        """Tests IntegerSequence methods for sequences with multi-exclusions"""
        points = [IntegerPoint(i) for i in range(10)]
        sequence = IntegerSequence('R/P1!(2,3,7)', 1, 10)
        self.assertFalse(sequence.is_on_sequence(points[3]))
        self.assertFalse(sequence.is_valid(points[3]))
        self.assertEqual(sequence.get_prev_point(points[3]), points[1])
        self.assertEqual(sequence.get_prev_point(points[4]), points[1])
        self.assertEqual(sequence.get_nearest_prev_point(points[3]), points[1])
        self.assertEqual(sequence.get_nearest_prev_point(points[4]), points[1])
        self.assertEqual(sequence.get_next_point(points[3]), points[4])
        self.assertEqual(sequence.get_next_point(points[2]), points[4])
        self.assertEqual(sequence.get_next_point_on_sequence(
            points[3]),
            points[4])
        self.assertEqual(sequence.get_next_point_on_sequence(
            points[6]),
            points[8])

        sequence = IntegerSequence('R/P1!(1,3,4)', 1, 10)
        self.assertEqual(sequence.get_first_point(points[1]), points[2])
        self.assertEqual(sequence.get_first_point(points[0]), points[2])
        self.assertEqual(sequence.get_start_point(), points[2])

        sequence = IntegerSequence('R/P1!(8,9,10)', 1, 10)
        self.assertEqual(sequence.get_stop_point(), points[7])
예제 #14
0
    def test_exclusions_extensive(self):
        """Test IntegerSequence methods for sequences with exclusions."""
        point_0 = IntegerPoint(0)
        point_1 = IntegerPoint(1)
        point_2 = IntegerPoint(2)
        point_3 = IntegerPoint(3)
        point_4 = IntegerPoint(4)

        sequence = IntegerSequence('R/P1!3', 1, 5)
        self.assertFalse(sequence.is_on_sequence(point_3))
        self.assertFalse(sequence.is_valid(point_3))
        self.assertEqual(sequence.get_prev_point(point_3), point_2)
        self.assertEqual(sequence.get_prev_point(point_4), point_2)
        self.assertEqual(sequence.get_nearest_prev_point(point_3), point_2)
        self.assertEqual(sequence.get_nearest_prev_point(point_3), point_2)
        self.assertEqual(sequence.get_next_point(point_3), point_4)
        self.assertEqual(sequence.get_next_point(point_2), point_4)
        self.assertEqual(sequence.get_next_point_on_sequence(point_3), point_4)
        self.assertEqual(sequence.get_next_point_on_sequence(point_2), point_4)

        sequence = IntegerSequence('R/P1!1', 1, 5)
        self.assertEqual(sequence.get_first_point(point_1), point_2)
        self.assertEqual(sequence.get_first_point(point_0), point_2)
        self.assertEqual(sequence.get_start_point(), point_2)

        sequence = IntegerSequence('R/P1!5', 1, 5)
        self.assertEqual(sequence.get_stop_point(), point_4)