def make_vector(arguments): check_argument_number('make-vector', arguments, 1, 2) # todo: type check this is an integer vector_length = arguments[0].value vector = Vector(vector_length) # If we're given an initialisation value, use it. if len(arguments) == 2: init_value = arguments[1] for i in range(vector_length): vector[i] = init_value return vector
def test_vector_fill(self): program = "(let ((v (make-vector 1))) (vector-fill! v 5) v)" self.assertEvaluatesAs( program, Vector.from_list([Integer(5)]))
def test_list_to_vector(self): program = "(list->vector (list 1 2))" self.assertEvaluatesAs( program, Vector.from_list([Integer(1), Integer(2)]))
def test_vector(self): program = "(vector 1 2)" self.assertEvaluatesAs( program, Vector.from_list([Integer(1), Integer(2)]))
def test_make_vector_with_init(self): program = '(make-vector 1 3)' self.assertEvaluatesAs(program, Vector.from_list([Integer(3)]))
def test_vector_fill(self): program = "(let ((v (make-vector 1))) (vector-fill! v 5) v)" self.assertEvaluatesAs(program, Vector.from_list([Integer(5)]))
def test_list_to_vector(self): program = "(list->vector (list 1 2))" self.assertEvaluatesAs(program, Vector.from_list([Integer(1), Integer(2)]))
def test_vector(self): program = "(vector 1 2)" self.assertEvaluatesAs(program, Vector.from_list([Integer(1), Integer(2)]))
def test_make_vector(self): program = '(make-vector 0)' self.assertEvaluatesAs(program, Vector(0)) program = '(make-vector 2)' self.assertEvaluatesAs(program, Vector(2))