From 64eccdd9be9a5d3aec05e0a5a7a03a0a0b23e65e Mon Sep 17 00:00:00 2001 From: Bob Nystrom Date: Sat, 14 Mar 2015 12:45:56 -0700 Subject: [PATCH] Reorganize tests and benchmark scripts. Mainly to get rid of one top level directory. But this will also be useful when there are tests of the embedding API. --- .gitignore | 2 +- doc/site/performance.markdown | 2 +- script/benchmark.py | 2 +- script/test.py | 5 +++-- test/README.md | 21 +++++++++++++++++++ {benchmark => test/benchmark}/README.md | 0 .../benchmark}/binary_trees.lua | 0 {benchmark => test/benchmark}/binary_trees.py | 0 {benchmark => test/benchmark}/binary_trees.rb | 0 .../benchmark}/binary_trees.wren | 0 .../benchmark}/delta_blue.lua.inprogress | 0 {benchmark => test/benchmark}/delta_blue.py | 0 {benchmark => test/benchmark}/delta_blue.wren | 0 {benchmark => test/benchmark}/fannkuch.lua | 0 {benchmark => test/benchmark}/fannkuch.py | 0 {benchmark => test/benchmark}/fannkuch.rb | 0 {benchmark => test/benchmark}/fib.lua | 0 {benchmark => test/benchmark}/fib.py | 0 {benchmark => test/benchmark}/fib.rb | 0 {benchmark => test/benchmark}/fib.wren | 0 {benchmark => test/benchmark}/for.lua | 0 {benchmark => test/benchmark}/for.py | 0 {benchmark => test/benchmark}/for.rb | 0 {benchmark => test/benchmark}/for.wren | 0 {benchmark => test/benchmark}/map_numeric.lua | 0 {benchmark => test/benchmark}/map_numeric.py | 0 {benchmark => test/benchmark}/map_numeric.rb | 0 .../benchmark}/map_numeric.wren | 0 {benchmark => test/benchmark}/map_string.lua | 0 {benchmark => test/benchmark}/map_string.py | 0 {benchmark => test/benchmark}/map_string.rb | 0 {benchmark => test/benchmark}/map_string.wren | 0 {benchmark => test/benchmark}/method_call.lua | 0 {benchmark => test/benchmark}/method_call.py | 0 {benchmark => test/benchmark}/method_call.rb | 0 .../benchmark}/method_call.wren | 0 test/{ => core}/bool/equality.wren | 0 test/{ => core}/bool/not.wren | 0 test/{ => core}/bool/to_string.wren | 0 test/{ => core}/bool/type.wren | 0 test/{ => core}/class/equality.wren | 0 test/{ => core}/class/name.wren | 0 test/{ => core}/class/supertype.wren | 0 test/{ => core}/class/type.wren | 0 test/{ => core}/fiber/abort.wren | 0 test/{ => core}/fiber/abort_main_fiber.wren | 0 .../fiber/abort_wrong_arg_type.wren | 0 test/{ => core}/fiber/call.wren | 0 .../{ => core}/fiber/call_direct_reenter.wren | 0 .../fiber/call_indirect_reenter.wren | 0 .../fiber/call_return_implicit_null.wren | 0 test/{ => core}/fiber/call_return_value.wren | 0 test/{ => core}/fiber/call_when_done.wren | 0 test/{ => core}/fiber/call_with_value.wren | 0 .../fiber/call_with_value_direct_reenter.wren | 0 .../call_with_value_indirect_reenter.wren | 0 .../fiber/call_with_value_when_done.wren | 0 test/{ => core}/fiber/error.wren | 0 test/{ => core}/fiber/is_done.wren | 0 .../{ => core}/fiber/is_done_after_error.wren | 0 test/{ => core}/fiber/new_wrong_arg_type.wren | 0 test/{ => core}/fiber/resume_caller.wren | 0 test/{ => core}/fiber/run.wren | 0 test/{ => core}/fiber/run_direct_reenter.wren | 0 .../fiber/run_indirect_reenter.wren | 0 test/{ => core}/fiber/run_when_done.wren | 0 test/{ => core}/fiber/run_with_value.wren | 0 .../fiber/run_with_value_direct_reenter.wren | 0 .../run_with_value_indirect_reenter.wren | 0 test/{ => core}/fiber/try.wren | 0 test/{ => core}/fiber/try_direct_reenter.wren | 0 .../fiber/try_indirect_reenter.wren | 0 test/{ => core}/fiber/try_when_done.wren | 0 test/{ => core}/fiber/try_without_error.wren | 0 test/{ => core}/fiber/type.wren | 0 test/{ => core}/fiber/yield.wren | 0 test/{ => core}/fiber/yield_from_main.wren | 0 .../fiber/yield_return_call_value.wren | 0 .../fiber/yield_return_run_value.wren | 0 .../fiber/yield_with_no_caller.wren | 0 test/{ => core}/fiber/yield_with_value.wren | 0 .../fiber/yield_with_value_from_main.wren | 0 .../yield_with_value_with_no_caller.wren | 0 test/{ => core}/function/arity.wren | 0 .../function/call_extra_arguments.wren | 0 .../function/call_missing_arguments.wren | 0 test/{ => core}/function/equality.wren | 0 .../function/new_wrong_arg_type.wren | 0 test/{ => core}/function/to_string.wren | 0 test/{ => core}/function/type.wren | 0 test/{ => core}/list/add.wren | 0 test/{ => core}/list/add_all.wren | 0 test/{ => core}/list/all.wren | 0 .../list/all_non_bool_returning_fn.wren | 0 .../{ => core}/list/all_non_function_arg.wren | 0 test/{ => core}/list/any.wren | 0 .../list/any_non_bool_returning_fn.wren | 0 .../{ => core}/list/any_non_function_arg.wren | 0 test/{ => core}/list/clear.wren | 0 test/{ => core}/list/count.wren | 0 test/{ => core}/list/insert.wren | 0 .../{ => core}/list/insert_index_not_int.wren | 0 .../{ => core}/list/insert_index_not_num.wren | 0 .../list/insert_index_too_large.wren | 0 .../list/insert_index_too_small.wren | 0 test/{ => core}/list/iterate.wren | 0 .../list/iterate_iterator_not_int.wren | 0 .../list/iterate_iterator_not_num.wren | 0 test/{ => core}/list/iterator_value.wren | 0 .../list/iterator_value_iterator_not_int.wren | 0 .../list/iterator_value_iterator_not_num.wren | 0 .../iterator_value_iterator_too_large.wren | 0 .../iterator_value_iterator_too_small.wren | 0 test/{ => core}/list/join.wren | 0 .../list/join_separator_not_string.wren | 0 test/{ => core}/list/map.wren | 0 test/{ => core}/list/new.wren | 0 test/{ => core}/list/not.wren | 0 test/{ => core}/list/plus.wren | 0 test/{ => core}/list/reduce.wren | 0 test/{ => core}/list/reduce_no_items.wren | 0 test/{ => core}/list/reduce_single_item.wren | 0 test/{ => core}/list/reduce_wrong_arity.wren | 0 test/{ => core}/list/remove_at.wren | 0 .../list/remove_at_index_not_int.wren | 0 .../list/remove_at_index_not_num.wren | 0 .../list/remove_at_index_too_large.wren | 0 .../list/remove_at_index_too_small.wren | 0 test/{ => core}/list/subscript.wren | 0 test/{ => core}/list/subscript_not_int.wren | 0 test/{ => core}/list/subscript_range.wren | 0 .../list/subscript_range_from_not_int.wren | 0 .../list/subscript_range_from_too_large.wren | 0 .../list/subscript_range_from_too_small.wren | 0 ...ubscript_range_to_exclusive_too_large.wren | 0 ...ubscript_range_to_exclusive_too_small.wren | 0 .../list/subscript_range_to_not_int.wren | 0 .../list/subscript_range_to_too_large.wren | 0 .../list/subscript_range_to_too_small.wren | 0 test/{ => core}/list/subscript_setter.wren | 0 .../list/subscript_setter_not_int.wren | 0 .../list/subscript_setter_not_num.wren | 0 .../list/subscript_setter_too_large.wren | 0 .../list/subscript_setter_too_small.wren | 0 test/{ => core}/list/subscript_too_large.wren | 0 test/{ => core}/list/subscript_too_small.wren | 0 .../{ => core}/list/subscript_wrong_type.wren | 0 test/{ => core}/list/to_string.wren | 0 test/{ => core}/list/type.wren | 0 test/{ => core}/list/where.wren | 0 test/{ => core}/map/clear.wren | 0 test/{ => core}/map/contains_key.wren | 0 .../map/contains_key_not_value.wren | 0 test/{ => core}/map/count.wren | 0 test/{ => core}/map/key_iterate.wren | 0 .../map/key_iterate_iterator_not_int.wren | 0 .../map/key_iterate_iterator_not_num.wren | 0 test/{ => core}/map/key_types.wren | 0 test/{ => core}/map/new.wren | 0 test/{ => core}/map/remove.wren | 0 test/{ => core}/map/remove_key_not_value.wren | 0 test/{ => core}/map/subscript_empty_map.wren | 0 .../map/subscript_key_not_value.wren | 0 .../map/subscript_setter_key_not_value.wren | 0 test/{ => core}/map/to_string.wren | 0 test/{ => core}/map/type.wren | 0 test/{ => core}/map/value_iterate.wren | 0 .../map/value_iterate_iterator_not_int.wren | 0 .../map/value_iterate_iterator_not_num.wren | 0 test/{ => core}/null/not.wren | 0 test/{ => core}/null/type.wren | 0 test/{ => core}/number/abs.wren | 0 test/{ => core}/number/bitwise_and.wren | 0 .../number/bitwise_and_operand_not_num.wren | 0 test/{ => core}/number/bitwise_lsh.wren | 0 .../number/bitwise_lsh_operand_not_num.wren | 0 test/{ => core}/number/bitwise_not.wren | 0 test/{ => core}/number/bitwise_or.wren | 0 .../number/bitwise_or_operand_not_num.wren | 0 test/{ => core}/number/bitwise_rsh.wren | 0 .../number/bitwise_rsh_operand_not_num.wren | 0 test/{ => core}/number/bitwise_xor.wren | 0 .../number/bitwise_xor_operand_not_num.wren | 0 test/{ => core}/number/ceil.wren | 0 test/{ => core}/number/comparison.wren | 0 .../number/decimal_point_at_eof.wren | 0 test/{ => core}/number/divide.wren | 0 .../number/divide_operand_not_num.wren | 0 test/{ => core}/number/equality.wren | 0 test/{ => core}/number/floor.wren | 0 test/{ => core}/number/fraction.wren | 0 test/{ => core}/number/from_string.wren | 0 .../number/from_string_not_string.wren | 0 .../number/from_string_too_large.wren | 0 .../greater_than_equal_operand_not_num.wren | 0 .../number/greater_than_operand_not_num.wren | 0 .../number/invalid_hex_literal.wren | 0 test/{ => core}/number/is_nan.wren | 0 .../less_than_equal_operand_not_num.wren | 0 .../number/less_than_operand_not_num.wren | 0 test/{ => core}/number/minus.wren | 0 .../number/minus_operand_not_num.wren | 0 test/{ => core}/number/mod.wren | 0 .../number/mod_operand_not_num.wren | 0 test/{ => core}/number/multiply.wren | 0 .../number/multiply_operand_not_num.wren | 0 test/{ => core}/number/not.wren | 0 test/{ => core}/number/plus.wren | 0 .../number/plus_operand_not_num.wren | 0 test/{ => core}/number/sign.wren | 0 test/{ => core}/number/sqrt.wren | 0 test/{ => core}/number/to_string.wren | 0 test/{ => core}/number/truncate.wren | 0 test/{ => core}/number/type.wren | 0 test/{ => core}/object/not.wren | 0 test/{ => core}/object/to_string.wren | 0 test/{ => core}/range/equality.wren | 0 .../range/exclusive_range_wrong_rhs_type.wren | 0 test/{ => core}/range/floating_point.wren | 0 test/{ => core}/range/from.wren | 0 .../range/inclusive_range_wrong_rhs_type.wren | 0 test/{ => core}/range/is_inclusive.wren | 0 test/{ => core}/range/iterate.wren | 0 test/{ => core}/range/iterate_from_float.wren | 0 test/{ => core}/range/iterate_wrong_type.wren | 0 test/{ => core}/range/iterator_value.wren | 0 test/{ => core}/range/join.wren | 0 .../range/join_separator_not_string.wren | 0 test/{ => core}/range/map.wren | 0 test/{ => core}/range/max.wren | 0 test/{ => core}/range/min.wren | 0 test/{ => core}/range/reduce.wren | 0 test/{ => core}/range/to.wren | 0 test/{ => core}/range/to_string.wren | 0 test/{ => core}/range/type.wren | 0 test/{ => core}/range/where.wren | 0 test/{ => core}/sequence/count.wren | 0 test/{ => core}/string/concatenation.wren | 0 .../string/concatenation_wrong_arg_type.wren | 0 test/{ => core}/string/contains.wren | 0 .../string/contains_argument_not_string.wren | 0 test/{ => core}/string/count.wren | 0 test/{ => core}/string/ends_with.wren | 0 .../string/ends_with_invalid_arg.wren | 0 test/{ => core}/string/equality.wren | 0 test/{ => core}/string/index_of.wren | 0 .../string/index_of_invalid_arg.wren | 0 test/{ => core}/string/iterate.wren | 0 .../string/iterate_iterator_not_int.wren | 0 .../string/iterate_iterator_not_num.wren | 0 test/{ => core}/string/iterator_value.wren | 0 .../iterator_value_iterator_not_int.wren | 0 .../iterator_value_iterator_not_num.wren | 0 .../iterator_value_iterator_too_large.wren | 0 .../iterator_value_iterator_too_small.wren | 0 test/{ => core}/string/join.wren | 0 .../string/join_separator_not_string.wren | 0 test/{ => core}/string/not.wren | 0 test/{ => core}/string/starts_with.wren | 0 .../string/starts_with_invalid_arg.wren | 0 test/{ => core}/string/subscript.wren | 0 test/{ => core}/string/subscript_not_int.wren | 0 test/{ => core}/string/subscript_not_num.wren | 0 test/{ => core}/string/subscript_range.wren | 0 .../string/subscript_range_from_not_int.wren | 0 .../subscript_range_from_too_large.wren | 0 .../subscript_range_from_too_small.wren | 0 ...ubscript_range_to_exclusive_too_large.wren | 0 ...ubscript_range_to_exclusive_too_small.wren | 0 .../string/subscript_range_to_not_int.wren | 0 .../string/subscript_range_to_too_large.wren | 0 .../string/subscript_range_to_too_small.wren | 0 .../string/subscript_too_large.wren | 0 .../string/subscript_too_small.wren | 0 test/{ => core}/string/to_string.wren | 0 test/{ => core}/string/type.wren | 0 .../assignment/associativity.wren | 0 test/{ => language}/assignment/global.wren | 0 test/{ => language}/assignment/grouping.wren | 0 .../assignment/infix_operator.wren | 0 test/{ => language}/assignment/is.wren | 0 test/{ => language}/assignment/local.wren | 0 .../assignment/prefix_operator.wren | 0 test/{ => language}/assignment/syntax.wren | 0 test/{ => language}/assignment/undefined.wren | 0 test/{ => language}/bitwise_precedence.wren | 0 test/{ => language}/break/closure_in_for.wren | 0 .../break/closure_in_while.wren | 0 .../break/exit_local_scopes.wren | 0 test/{ => language}/break/in_for_loop.wren | 0 .../break/in_function_in_loop.wren | 0 .../break/in_method_in_loop.wren | 0 test/{ => language}/break/in_while_loop.wren | 0 .../{ => language}/break/nested_for_loop.wren | 0 .../break/nested_while_loop.wren | 0 test/{ => language}/break/outside_loop.wren | 0 .../class/name_inside_body.wren | 0 test/{ => language}/class/new.wren | 0 .../class/newline_after_class.wren | 0 .../class/newline_after_static.wren | 0 test/{ => language}/class/syntax.wren | 0 .../closure/assign_to_closure.wren | 0 .../close_over_function_parameter.wren | 0 .../closure/close_over_later_variable.wren | 0 .../closure/close_over_method_parameter.wren | 0 .../closure/closed_closure_in_function.wren | 0 .../closure/closed_closure_in_method.wren | 0 .../closure/nested_closure.wren | 0 .../closure/open_closure_in_function.wren | 0 .../closure/open_closure_in_method.wren | 0 .../reference_closure_multiple_times.wren | 0 .../closure/reuse_closure_slot.wren | 0 .../closure/shadow_closure_with_local.wren | 0 test/{ => language}/comments/block.wren | 0 .../{ => language}/comments/block_at_eof.wren | 0 test/{ => language}/comments/line_at_eof.wren | 0 .../comments/only_line_comment.wren | 0 .../comments/only_line_comment_and_line.wren | 0 test/{ => language}/comments/unicode.wren | 0 .../comments/unterminated_block.wren | 0 .../comments/unterminated_nested_block.wren | 0 .../conditional/conditional_in_then.wren | 0 .../conditional/missing_colon.wren | 0 .../conditional/missing_condition.wren | 0 .../conditional/missing_else.wren | 0 .../conditional/missing_question.wren | 0 .../conditional/missing_then.wren | 0 test/{ => language}/conditional/newlines.wren | 0 .../conditional/precedence.wren | 0 .../conditional/short_circuit.wren | 0 test/{ => language}/constructor/default.wren | 0 .../constructor/infix_class_expression.wren | 0 test/{ => language}/constructor/new.wren | 8 ++++--- .../constructor/superclass.wren | 0 test/{ => language}/empty_block.wren | 0 test/{ => language}/empty_file.wren | 0 test/{ => language}/fiber/closure.wren | 0 test/{ => language}/field/closure.wren | 0 .../{ => language}/field/default_to_null.wren | 0 .../field/in_fn_in_static_method.wren | 0 .../field/in_static_method.wren | 0 .../in_static_method_in_nested_class.wren | 0 test/{ => language}/field/multiple.wren | 0 test/{ => language}/field/nested_class.wren | 0 .../field/object_reference.wren | 0 test/{ => language}/field/outside_class.wren | 0 test/{ => language}/field/use_before_set.wren | 0 .../for/close_over_loop_variable.wren | 0 test/{ => language}/for/closure_in_body.wren | 0 .../{ => language}/for/newline_after_for.wren | 0 .../{ => language}/for/newline_before_in.wren | 0 .../for/only_evaluate_sequence_once.wren | 0 test/{ => language}/for/return_closure.wren | 0 test/{ => language}/for/return_inside.wren | 0 test/{ => language}/for/syntax.wren | 0 test/{ => language}/for/truth.wren | 0 test/{ => language}/function/empty_body.wren | 0 .../{ => language}/function/newline_body.wren | 0 .../function/newline_in_expression_block.wren | 0 .../function/no_newline_before_close.wren | 0 .../function/no_parameters.wren | 0 test/{ => language}/function/parameters.wren | 0 test/{ => language}/function/syntax.wren | 0 test/{ => language}/if/dangling_else.wren | 0 test/{ => language}/if/else.wren | 0 test/{ => language}/if/if.wren | 0 .../{ => language}/if/newline_after_else.wren | 0 test/{ => language}/if/newline_after_if.wren | 0 test/{ => language}/if/truth.wren | 0 .../ignore_carriage_returns.wren | 0 .../implicit_receiver/inherited_methods.wren | 0 .../implicit_receiver/instance_methods.wren | 0 .../locals_shadow_getter.wren | 0 .../locals_shadow_setter.wren | 0 .../implicit_receiver/nested_class.wren | 0 .../implicit_receiver/static_methods.wren | 0 .../do_not_inherit_static_methods.wren | 0 .../inheritance/inherit_fields.wren | 0 .../inheritance/inherit_from_class.wren | 0 .../inheritance/inherit_from_closure.wren | 0 .../inheritance/inherit_from_fiber.wren | 0 .../inheritance/inherit_from_fn.wren | 0 .../inheritance/inherit_from_list.wren | 0 .../inheritance/inherit_from_map.wren | 0 .../inheritance/inherit_from_nonclass.wren | 0 .../inheritance/inherit_from_range.wren | 0 .../inheritance/inherit_from_string.wren | 0 .../inheritance/inherit_methods.wren | 0 .../inherited_fields_in_closure.wren | 0 test/{ => language}/inheritance/is.wren | 0 test/{ => language}/is/is.wren | 0 test/{ => language}/is/nonclass_on_right.wren | 0 test/{ => language}/list/eof_after_comma.wren | 0 .../list/eof_after_element.wren | 0 test/{ => language}/list/grow_shrink.wren | 0 .../list/newline_before_comma.wren | 0 test/{ => language}/list/newlines.wren | 0 test/{ => language}/logical_operator/and.wren | 0 .../logical_operator/and_truth.wren | 0 test/{ => language}/logical_operator/or.wren | 0 .../logical_operator/or_truth.wren | 0 test/{ => language}/map/eof_after_colon.wren | 0 test/{ => language}/map/eof_after_comma.wren | 0 test/{ => language}/map/eof_after_key.wren | 0 test/{ => language}/map/eof_after_value.wren | 0 test/{ => language}/map/grow_and_shrink.wren | 0 test/{ => language}/method/arity.wren | 0 .../method/call_name_too_long.wren | 0 test/{ => language}/method/empty_block.wren | 0 .../method/empty_subscript_call.wren | 0 .../method/empty_subscript_definition.wren | 0 test/{ => language}/method/long_name.wren | 0 test/{ => language}/method/many_methods.wren | 0 test/{ => language}/method/name_too_long.wren | 0 test/{ => language}/method/newlines.wren | 0 test/{ => language}/method/not_found.wren | 0 .../method/not_found_eleven_arguments.wren | 0 .../method/not_found_multiple_arguments.wren | 0 .../method/not_found_one_argument.wren | 0 test/{ => language}/method/operators.wren | 0 test/{ => language}/method/static.wren | 0 .../method/static_method_not_found.wren | 0 .../method/subscript_operators.wren | 0 .../subscript_setter_too_many_arguments.wren | 0 .../method/subscript_too_many_arguments.wren | 0 .../method/too_many_arguments.wren | 0 .../method/too_many_parameters.wren | 0 .../change_imported_value.wren | 0 .../module/change_imported_value/module.wren | 0 .../module/cyclic_import/a.wren | 0 .../module/cyclic_import/b.wren | 0 .../module/cyclic_import/cyclic_import.wren | 0 .../implicitly_imports_core.wren | 0 .../implicitly_imports_core/module.wren | 0 .../module/inside_block/inside_block.wren | 0 .../module/inside_block/module.wren | 0 test/{ => language}/module/missing_for.wren | 0 .../module/missing_string_after_import.wren | 0 .../module/multiple_variables/module.wren | 0 .../multiple_variables.wren | 0 .../{ => language}/module/name_collision.wren | 0 .../module/no_variable/module.wren | 0 .../module/no_variable/no_variable.wren | 0 .../module/shared_import/a.wren | 0 .../module/shared_import/b.wren | 0 .../module/shared_import/shared.wren | 0 .../module/shared_import/shared_import.wren | 0 .../module/simple_import/module.wren | 0 .../module/simple_import/simple_import.wren | 0 .../{ => language}/module/unknown_module.wren | 0 .../module/unknown_variable/module.wren | 0 .../unknown_variable/unknown_variable.wren | 0 test/{ => language}/new/new_on_nonclass.wren | 0 .../{ => language}/new/newline_after_new.wren | 0 test/{ => language}/no_trailing_newline.wren | 0 test/{ => language}/nonlocal/assignment.wren | 0 .../nonlocal/duplicate_nonlocal.wren | 0 .../nonlocal/in_block_scope.wren | 0 .../nonlocal/mutual_recursion.wren | 0 .../nonlocal/null_before_defined.wren | 0 test/{ => language}/nonlocal/undefined.wren | 0 .../nonlocal/use_in_function.wren | 0 .../use_in_function_before_definition.wren | 0 .../nonlocal/use_in_method.wren | 0 .../use_in_method_before_definition.wren | 0 test/{ => language}/null/literal.wren | 0 test/{ => language}/number/hex_literals.wren | 0 test/{ => language}/number/hex_too_large.wren | 0 .../number/literal_too_large.wren | 0 test/{ => language}/number/literals.wren | 0 test/{ => language}/precedence.wren | 0 test/{ => language}/return/after_else.wren | 0 test/{ => language}/return/after_if.wren | 0 test/{ => language}/return/after_while.wren | 0 test/{ => language}/return/in_function.wren | 0 test/{ => language}/return/in_method.wren | 0 .../return/return_null_if_newline.wren | 0 test/{ => language}/semicolon.wren | 0 test/{ => language}/setter/associativity.wren | 0 test/{ => language}/setter/grouping.wren | 0 .../{ => language}/setter/infix_operator.wren | 0 test/{ => language}/setter/instance.wren | 0 test/{ => language}/setter/is.wren | 0 .../setter/prefix_operator.wren | 0 test/{ => language}/setter/result.wren | 0 .../setter/same_name_as_method.wren | 0 test/{ => language}/setter/static.wren | 0 test/{ => language}/shebang/shebang.wren | 0 .../shebang/shebang_at_eof.wren | 0 .../shebang/shebang_at_other_line.wren | 0 .../shebang/shebang_invalid.wren | 0 test/{ => language}/static_field/closure.wren | 0 .../static_field/default_to_null.wren | 0 .../static_field/in_instance_method.wren | 0 .../{ => language}/static_field/multiple.wren | 0 .../static_field/nested_class.wren | 0 .../static_field/outside_class.wren | 0 .../static_field/use_before_set.wren | 0 test/{ => language}/string/escapes.wren | 0 .../string/incomplete_unicode_escape.wren | 0 .../incomplete_unicode_escape_at_eof.wren | 0 .../{ => language}/string/invalid_escape.wren | 0 .../string/invalid_unicode_escape.wren | 0 test/{ => language}/string/literals.wren | 0 .../string/unicode_escapes.wren | 0 test/{ => language}/string/unterminated.wren | 0 .../super/call_different_arity.wren | 0 .../super/call_other_method.wren | 0 .../super/call_same_method.wren | 0 test/{ => language}/super/closure.wren | 0 test/{ => language}/super/implicit_name.wren | 0 .../super/indirectly_inherited.wren | 0 .../super/no_superclass_method.wren | 0 .../super/super_at_top_level.wren | 0 .../super/super_in_static_method.wren | 0 .../super/super_in_top_level_function.wren | 0 test/{ => language}/this/closure.wren | 0 test/{ => language}/this/nested_class.wren | 0 test/{ => language}/this/nested_closure.wren | 0 .../this/this_at_top_level.wren | 0 test/{ => language}/this/this_in_method.wren | 0 .../this/this_in_static_method.wren | 0 .../this/this_in_top_level_function.wren | 0 test/{ => language}/unexpected_character.wren | 0 .../variable/duplicate_local.wren | 0 .../variable/duplicate_parameter.wren | 0 .../variable/global_in_initializer.wren | 0 .../variable/global_without_initializer.wren | 0 ...local_collide_with_function_parameter.wren | 0 .../local_collide_with_method_parameter.wren | 0 .../variable/local_in_initializer.wren | 0 .../variable/local_in_middle_of_block.wren | 0 .../variable/local_in_nested_block.wren | 0 .../variable/local_without_initializer.wren | 0 test/{ => language}/variable/many_locals.wren | 0 .../variable/many_nonsimultaneous_locals.wren | 0 .../variable/newline_after_var.wren | 0 .../variable/outside_method.wren | 0 test/{ => language}/variable/scope_if.wren | 0 .../scope_reuse_in_different_blocks.wren | 0 test/{ => language}/variable/scope_while.wren | 0 .../variable/shadow_and_local.wren | 0 .../variable/shadow_global.wren | 0 .../variable/shadow_in_initializer.wren | 0 .../{ => language}/variable/shadow_local.wren | 0 .../variable/too_many_locals.wren | 0 .../variable/too_many_locals_nested.wren | 0 .../variable/undefined_global.wren | 0 .../variable/undefined_local.wren | 0 .../variable/use_false_as_var.wren | 0 .../variable/use_field_as_var.wren | 0 .../variable/use_null_as_var.wren | 0 .../variable/use_this_as_var.wren | 0 .../variable/use_true_as_var.wren | 0 .../{ => language}/while/closure_in_body.wren | 0 .../while/newline_after_while.wren | 0 test/{ => language}/while/return_closure.wren | 0 test/{ => language}/while/return_inside.wren | 0 test/{ => language}/while/syntax.wren | 0 test/{ => language}/while/truth.wren | 0 test/{ => language}/whitespace.wren | 0 .../too_many_function_parameters.wren} | 0 562 files changed, 32 insertions(+), 8 deletions(-) create mode 100644 test/README.md rename {benchmark => test/benchmark}/README.md (100%) rename {benchmark => test/benchmark}/binary_trees.lua (100%) rename {benchmark => test/benchmark}/binary_trees.py (100%) rename {benchmark => test/benchmark}/binary_trees.rb (100%) rename {benchmark => test/benchmark}/binary_trees.wren (100%) rename {benchmark => test/benchmark}/delta_blue.lua.inprogress (100%) rename {benchmark => test/benchmark}/delta_blue.py (100%) rename {benchmark => test/benchmark}/delta_blue.wren (100%) rename {benchmark => test/benchmark}/fannkuch.lua (100%) rename {benchmark => test/benchmark}/fannkuch.py (100%) rename {benchmark => test/benchmark}/fannkuch.rb (100%) rename {benchmark => test/benchmark}/fib.lua (100%) rename {benchmark => test/benchmark}/fib.py (100%) rename {benchmark => test/benchmark}/fib.rb (100%) rename {benchmark => test/benchmark}/fib.wren (100%) rename {benchmark => test/benchmark}/for.lua (100%) rename {benchmark => test/benchmark}/for.py (100%) rename {benchmark => test/benchmark}/for.rb (100%) rename {benchmark => test/benchmark}/for.wren (100%) rename {benchmark => test/benchmark}/map_numeric.lua (100%) rename {benchmark => test/benchmark}/map_numeric.py (100%) rename {benchmark => test/benchmark}/map_numeric.rb (100%) rename {benchmark => test/benchmark}/map_numeric.wren (100%) rename {benchmark => test/benchmark}/map_string.lua (100%) rename {benchmark => test/benchmark}/map_string.py (100%) rename {benchmark => test/benchmark}/map_string.rb (100%) rename {benchmark => test/benchmark}/map_string.wren (100%) rename {benchmark => test/benchmark}/method_call.lua (100%) rename {benchmark => test/benchmark}/method_call.py (100%) rename {benchmark => test/benchmark}/method_call.rb (100%) rename {benchmark => test/benchmark}/method_call.wren (100%) rename test/{ => core}/bool/equality.wren (100%) rename test/{ => core}/bool/not.wren (100%) rename test/{ => core}/bool/to_string.wren (100%) rename test/{ => core}/bool/type.wren (100%) rename test/{ => core}/class/equality.wren (100%) rename test/{ => core}/class/name.wren (100%) rename test/{ => core}/class/supertype.wren (100%) rename test/{ => core}/class/type.wren (100%) rename test/{ => core}/fiber/abort.wren (100%) rename test/{ => core}/fiber/abort_main_fiber.wren (100%) rename test/{ => core}/fiber/abort_wrong_arg_type.wren (100%) rename test/{ => core}/fiber/call.wren (100%) rename test/{ => core}/fiber/call_direct_reenter.wren (100%) rename test/{ => core}/fiber/call_indirect_reenter.wren (100%) rename test/{ => core}/fiber/call_return_implicit_null.wren (100%) rename test/{ => core}/fiber/call_return_value.wren (100%) rename test/{ => core}/fiber/call_when_done.wren (100%) rename test/{ => core}/fiber/call_with_value.wren (100%) rename test/{ => core}/fiber/call_with_value_direct_reenter.wren (100%) rename test/{ => core}/fiber/call_with_value_indirect_reenter.wren (100%) rename test/{ => core}/fiber/call_with_value_when_done.wren (100%) rename test/{ => core}/fiber/error.wren (100%) rename test/{ => core}/fiber/is_done.wren (100%) rename test/{ => core}/fiber/is_done_after_error.wren (100%) rename test/{ => core}/fiber/new_wrong_arg_type.wren (100%) rename test/{ => core}/fiber/resume_caller.wren (100%) rename test/{ => core}/fiber/run.wren (100%) rename test/{ => core}/fiber/run_direct_reenter.wren (100%) rename test/{ => core}/fiber/run_indirect_reenter.wren (100%) rename test/{ => core}/fiber/run_when_done.wren (100%) rename test/{ => core}/fiber/run_with_value.wren (100%) rename test/{ => core}/fiber/run_with_value_direct_reenter.wren (100%) rename test/{ => core}/fiber/run_with_value_indirect_reenter.wren (100%) rename test/{ => core}/fiber/try.wren (100%) rename test/{ => core}/fiber/try_direct_reenter.wren (100%) rename test/{ => core}/fiber/try_indirect_reenter.wren (100%) rename test/{ => core}/fiber/try_when_done.wren (100%) rename test/{ => core}/fiber/try_without_error.wren (100%) rename test/{ => core}/fiber/type.wren (100%) rename test/{ => core}/fiber/yield.wren (100%) rename test/{ => core}/fiber/yield_from_main.wren (100%) rename test/{ => core}/fiber/yield_return_call_value.wren (100%) rename test/{ => core}/fiber/yield_return_run_value.wren (100%) rename test/{ => core}/fiber/yield_with_no_caller.wren (100%) rename test/{ => core}/fiber/yield_with_value.wren (100%) rename test/{ => core}/fiber/yield_with_value_from_main.wren (100%) rename test/{ => core}/fiber/yield_with_value_with_no_caller.wren (100%) rename test/{ => core}/function/arity.wren (100%) rename test/{ => core}/function/call_extra_arguments.wren (100%) rename test/{ => core}/function/call_missing_arguments.wren (100%) rename test/{ => core}/function/equality.wren (100%) rename test/{ => core}/function/new_wrong_arg_type.wren (100%) rename test/{ => core}/function/to_string.wren (100%) rename test/{ => core}/function/type.wren (100%) rename test/{ => core}/list/add.wren (100%) rename test/{ => core}/list/add_all.wren (100%) rename test/{ => core}/list/all.wren (100%) rename test/{ => core}/list/all_non_bool_returning_fn.wren (100%) rename test/{ => core}/list/all_non_function_arg.wren (100%) rename test/{ => core}/list/any.wren (100%) rename test/{ => core}/list/any_non_bool_returning_fn.wren (100%) rename test/{ => core}/list/any_non_function_arg.wren (100%) rename test/{ => core}/list/clear.wren (100%) rename test/{ => core}/list/count.wren (100%) rename test/{ => core}/list/insert.wren (100%) rename test/{ => core}/list/insert_index_not_int.wren (100%) rename test/{ => core}/list/insert_index_not_num.wren (100%) rename test/{ => core}/list/insert_index_too_large.wren (100%) rename test/{ => core}/list/insert_index_too_small.wren (100%) rename test/{ => core}/list/iterate.wren (100%) rename test/{ => core}/list/iterate_iterator_not_int.wren (100%) rename test/{ => core}/list/iterate_iterator_not_num.wren (100%) rename test/{ => core}/list/iterator_value.wren (100%) rename test/{ => core}/list/iterator_value_iterator_not_int.wren (100%) rename test/{ => core}/list/iterator_value_iterator_not_num.wren (100%) rename test/{ => core}/list/iterator_value_iterator_too_large.wren (100%) rename test/{ => core}/list/iterator_value_iterator_too_small.wren (100%) rename test/{ => core}/list/join.wren (100%) rename test/{ => core}/list/join_separator_not_string.wren (100%) rename test/{ => core}/list/map.wren (100%) rename test/{ => core}/list/new.wren (100%) rename test/{ => core}/list/not.wren (100%) rename test/{ => core}/list/plus.wren (100%) rename test/{ => core}/list/reduce.wren (100%) rename test/{ => core}/list/reduce_no_items.wren (100%) rename test/{ => core}/list/reduce_single_item.wren (100%) rename test/{ => core}/list/reduce_wrong_arity.wren (100%) rename test/{ => core}/list/remove_at.wren (100%) rename test/{ => core}/list/remove_at_index_not_int.wren (100%) rename test/{ => core}/list/remove_at_index_not_num.wren (100%) rename test/{ => core}/list/remove_at_index_too_large.wren (100%) rename test/{ => core}/list/remove_at_index_too_small.wren (100%) rename test/{ => core}/list/subscript.wren (100%) rename test/{ => core}/list/subscript_not_int.wren (100%) rename test/{ => core}/list/subscript_range.wren (100%) rename test/{ => core}/list/subscript_range_from_not_int.wren (100%) rename test/{ => core}/list/subscript_range_from_too_large.wren (100%) rename test/{ => core}/list/subscript_range_from_too_small.wren (100%) rename test/{ => core}/list/subscript_range_to_exclusive_too_large.wren (100%) rename test/{ => core}/list/subscript_range_to_exclusive_too_small.wren (100%) rename test/{ => core}/list/subscript_range_to_not_int.wren (100%) rename test/{ => core}/list/subscript_range_to_too_large.wren (100%) rename test/{ => core}/list/subscript_range_to_too_small.wren (100%) rename test/{ => core}/list/subscript_setter.wren (100%) rename test/{ => core}/list/subscript_setter_not_int.wren (100%) rename test/{ => core}/list/subscript_setter_not_num.wren (100%) rename test/{ => core}/list/subscript_setter_too_large.wren (100%) rename test/{ => core}/list/subscript_setter_too_small.wren (100%) rename test/{ => core}/list/subscript_too_large.wren (100%) rename test/{ => core}/list/subscript_too_small.wren (100%) rename test/{ => core}/list/subscript_wrong_type.wren (100%) rename test/{ => core}/list/to_string.wren (100%) rename test/{ => core}/list/type.wren (100%) rename test/{ => core}/list/where.wren (100%) rename test/{ => core}/map/clear.wren (100%) rename test/{ => core}/map/contains_key.wren (100%) rename test/{ => core}/map/contains_key_not_value.wren (100%) rename test/{ => core}/map/count.wren (100%) rename test/{ => core}/map/key_iterate.wren (100%) rename test/{ => core}/map/key_iterate_iterator_not_int.wren (100%) rename test/{ => core}/map/key_iterate_iterator_not_num.wren (100%) rename test/{ => core}/map/key_types.wren (100%) rename test/{ => core}/map/new.wren (100%) rename test/{ => core}/map/remove.wren (100%) rename test/{ => core}/map/remove_key_not_value.wren (100%) rename test/{ => core}/map/subscript_empty_map.wren (100%) rename test/{ => core}/map/subscript_key_not_value.wren (100%) rename test/{ => core}/map/subscript_setter_key_not_value.wren (100%) rename test/{ => core}/map/to_string.wren (100%) rename test/{ => core}/map/type.wren (100%) rename test/{ => core}/map/value_iterate.wren (100%) rename test/{ => core}/map/value_iterate_iterator_not_int.wren (100%) rename test/{ => core}/map/value_iterate_iterator_not_num.wren (100%) rename test/{ => core}/null/not.wren (100%) rename test/{ => core}/null/type.wren (100%) rename test/{ => core}/number/abs.wren (100%) rename test/{ => core}/number/bitwise_and.wren (100%) rename test/{ => core}/number/bitwise_and_operand_not_num.wren (100%) rename test/{ => core}/number/bitwise_lsh.wren (100%) rename test/{ => core}/number/bitwise_lsh_operand_not_num.wren (100%) rename test/{ => core}/number/bitwise_not.wren (100%) rename test/{ => core}/number/bitwise_or.wren (100%) rename test/{ => core}/number/bitwise_or_operand_not_num.wren (100%) rename test/{ => core}/number/bitwise_rsh.wren (100%) rename test/{ => core}/number/bitwise_rsh_operand_not_num.wren (100%) rename test/{ => core}/number/bitwise_xor.wren (100%) rename test/{ => core}/number/bitwise_xor_operand_not_num.wren (100%) rename test/{ => core}/number/ceil.wren (100%) rename test/{ => core}/number/comparison.wren (100%) rename test/{ => core}/number/decimal_point_at_eof.wren (100%) rename test/{ => core}/number/divide.wren (100%) rename test/{ => core}/number/divide_operand_not_num.wren (100%) rename test/{ => core}/number/equality.wren (100%) rename test/{ => core}/number/floor.wren (100%) rename test/{ => core}/number/fraction.wren (100%) rename test/{ => core}/number/from_string.wren (100%) rename test/{ => core}/number/from_string_not_string.wren (100%) rename test/{ => core}/number/from_string_too_large.wren (100%) rename test/{ => core}/number/greater_than_equal_operand_not_num.wren (100%) rename test/{ => core}/number/greater_than_operand_not_num.wren (100%) rename test/{ => core}/number/invalid_hex_literal.wren (100%) rename test/{ => core}/number/is_nan.wren (100%) rename test/{ => core}/number/less_than_equal_operand_not_num.wren (100%) rename test/{ => core}/number/less_than_operand_not_num.wren (100%) rename test/{ => core}/number/minus.wren (100%) rename test/{ => core}/number/minus_operand_not_num.wren (100%) rename test/{ => core}/number/mod.wren (100%) rename test/{ => core}/number/mod_operand_not_num.wren (100%) rename test/{ => core}/number/multiply.wren (100%) rename test/{ => core}/number/multiply_operand_not_num.wren (100%) rename test/{ => core}/number/not.wren (100%) rename test/{ => core}/number/plus.wren (100%) rename test/{ => core}/number/plus_operand_not_num.wren (100%) rename test/{ => core}/number/sign.wren (100%) rename test/{ => core}/number/sqrt.wren (100%) rename test/{ => core}/number/to_string.wren (100%) rename test/{ => core}/number/truncate.wren (100%) rename test/{ => core}/number/type.wren (100%) rename test/{ => core}/object/not.wren (100%) rename test/{ => core}/object/to_string.wren (100%) rename test/{ => core}/range/equality.wren (100%) rename test/{ => core}/range/exclusive_range_wrong_rhs_type.wren (100%) rename test/{ => core}/range/floating_point.wren (100%) rename test/{ => core}/range/from.wren (100%) rename test/{ => core}/range/inclusive_range_wrong_rhs_type.wren (100%) rename test/{ => core}/range/is_inclusive.wren (100%) rename test/{ => core}/range/iterate.wren (100%) rename test/{ => core}/range/iterate_from_float.wren (100%) rename test/{ => core}/range/iterate_wrong_type.wren (100%) rename test/{ => core}/range/iterator_value.wren (100%) rename test/{ => core}/range/join.wren (100%) rename test/{ => core}/range/join_separator_not_string.wren (100%) rename test/{ => core}/range/map.wren (100%) rename test/{ => core}/range/max.wren (100%) rename test/{ => core}/range/min.wren (100%) rename test/{ => core}/range/reduce.wren (100%) rename test/{ => core}/range/to.wren (100%) rename test/{ => core}/range/to_string.wren (100%) rename test/{ => core}/range/type.wren (100%) rename test/{ => core}/range/where.wren (100%) rename test/{ => core}/sequence/count.wren (100%) rename test/{ => core}/string/concatenation.wren (100%) rename test/{ => core}/string/concatenation_wrong_arg_type.wren (100%) rename test/{ => core}/string/contains.wren (100%) rename test/{ => core}/string/contains_argument_not_string.wren (100%) rename test/{ => core}/string/count.wren (100%) rename test/{ => core}/string/ends_with.wren (100%) rename test/{ => core}/string/ends_with_invalid_arg.wren (100%) rename test/{ => core}/string/equality.wren (100%) rename test/{ => core}/string/index_of.wren (100%) rename test/{ => core}/string/index_of_invalid_arg.wren (100%) rename test/{ => core}/string/iterate.wren (100%) rename test/{ => core}/string/iterate_iterator_not_int.wren (100%) rename test/{ => core}/string/iterate_iterator_not_num.wren (100%) rename test/{ => core}/string/iterator_value.wren (100%) rename test/{ => core}/string/iterator_value_iterator_not_int.wren (100%) rename test/{ => core}/string/iterator_value_iterator_not_num.wren (100%) rename test/{ => core}/string/iterator_value_iterator_too_large.wren (100%) rename test/{ => core}/string/iterator_value_iterator_too_small.wren (100%) rename test/{ => core}/string/join.wren (100%) rename test/{ => core}/string/join_separator_not_string.wren (100%) rename test/{ => core}/string/not.wren (100%) rename test/{ => core}/string/starts_with.wren (100%) rename test/{ => core}/string/starts_with_invalid_arg.wren (100%) rename test/{ => core}/string/subscript.wren (100%) rename test/{ => core}/string/subscript_not_int.wren (100%) rename test/{ => core}/string/subscript_not_num.wren (100%) rename test/{ => core}/string/subscript_range.wren (100%) rename test/{ => core}/string/subscript_range_from_not_int.wren (100%) rename test/{ => core}/string/subscript_range_from_too_large.wren (100%) rename test/{ => core}/string/subscript_range_from_too_small.wren (100%) rename test/{ => core}/string/subscript_range_to_exclusive_too_large.wren (100%) rename test/{ => core}/string/subscript_range_to_exclusive_too_small.wren (100%) rename test/{ => core}/string/subscript_range_to_not_int.wren (100%) rename test/{ => core}/string/subscript_range_to_too_large.wren (100%) rename test/{ => core}/string/subscript_range_to_too_small.wren (100%) rename test/{ => core}/string/subscript_too_large.wren (100%) rename test/{ => core}/string/subscript_too_small.wren (100%) rename test/{ => core}/string/to_string.wren (100%) rename test/{ => core}/string/type.wren (100%) rename test/{ => language}/assignment/associativity.wren (100%) rename test/{ => language}/assignment/global.wren (100%) rename test/{ => language}/assignment/grouping.wren (100%) rename test/{ => language}/assignment/infix_operator.wren (100%) rename test/{ => language}/assignment/is.wren (100%) rename test/{ => language}/assignment/local.wren (100%) rename test/{ => language}/assignment/prefix_operator.wren (100%) rename test/{ => language}/assignment/syntax.wren (100%) rename test/{ => language}/assignment/undefined.wren (100%) rename test/{ => language}/bitwise_precedence.wren (100%) rename test/{ => language}/break/closure_in_for.wren (100%) rename test/{ => language}/break/closure_in_while.wren (100%) rename test/{ => language}/break/exit_local_scopes.wren (100%) rename test/{ => language}/break/in_for_loop.wren (100%) rename test/{ => language}/break/in_function_in_loop.wren (100%) rename test/{ => language}/break/in_method_in_loop.wren (100%) rename test/{ => language}/break/in_while_loop.wren (100%) rename test/{ => language}/break/nested_for_loop.wren (100%) rename test/{ => language}/break/nested_while_loop.wren (100%) rename test/{ => language}/break/outside_loop.wren (100%) rename test/{ => language}/class/name_inside_body.wren (100%) rename test/{ => language}/class/new.wren (100%) rename test/{ => language}/class/newline_after_class.wren (100%) rename test/{ => language}/class/newline_after_static.wren (100%) rename test/{ => language}/class/syntax.wren (100%) rename test/{ => language}/closure/assign_to_closure.wren (100%) rename test/{ => language}/closure/close_over_function_parameter.wren (100%) rename test/{ => language}/closure/close_over_later_variable.wren (100%) rename test/{ => language}/closure/close_over_method_parameter.wren (100%) rename test/{ => language}/closure/closed_closure_in_function.wren (100%) rename test/{ => language}/closure/closed_closure_in_method.wren (100%) rename test/{ => language}/closure/nested_closure.wren (100%) rename test/{ => language}/closure/open_closure_in_function.wren (100%) rename test/{ => language}/closure/open_closure_in_method.wren (100%) rename test/{ => language}/closure/reference_closure_multiple_times.wren (100%) rename test/{ => language}/closure/reuse_closure_slot.wren (100%) rename test/{ => language}/closure/shadow_closure_with_local.wren (100%) rename test/{ => language}/comments/block.wren (100%) rename test/{ => language}/comments/block_at_eof.wren (100%) rename test/{ => language}/comments/line_at_eof.wren (100%) rename test/{ => language}/comments/only_line_comment.wren (100%) rename test/{ => language}/comments/only_line_comment_and_line.wren (100%) rename test/{ => language}/comments/unicode.wren (100%) rename test/{ => language}/comments/unterminated_block.wren (100%) rename test/{ => language}/comments/unterminated_nested_block.wren (100%) rename test/{ => language}/conditional/conditional_in_then.wren (100%) rename test/{ => language}/conditional/missing_colon.wren (100%) rename test/{ => language}/conditional/missing_condition.wren (100%) rename test/{ => language}/conditional/missing_else.wren (100%) rename test/{ => language}/conditional/missing_question.wren (100%) rename test/{ => language}/conditional/missing_then.wren (100%) rename test/{ => language}/conditional/newlines.wren (100%) rename test/{ => language}/conditional/precedence.wren (100%) rename test/{ => language}/conditional/short_circuit.wren (100%) rename test/{ => language}/constructor/default.wren (100%) rename test/{ => language}/constructor/infix_class_expression.wren (100%) rename test/{ => language}/constructor/new.wren (67%) rename test/{ => language}/constructor/superclass.wren (100%) rename test/{ => language}/empty_block.wren (100%) rename test/{ => language}/empty_file.wren (100%) rename test/{ => language}/fiber/closure.wren (100%) rename test/{ => language}/field/closure.wren (100%) rename test/{ => language}/field/default_to_null.wren (100%) rename test/{ => language}/field/in_fn_in_static_method.wren (100%) rename test/{ => language}/field/in_static_method.wren (100%) rename test/{ => language}/field/in_static_method_in_nested_class.wren (100%) rename test/{ => language}/field/multiple.wren (100%) rename test/{ => language}/field/nested_class.wren (100%) rename test/{ => language}/field/object_reference.wren (100%) rename test/{ => language}/field/outside_class.wren (100%) rename test/{ => language}/field/use_before_set.wren (100%) rename test/{ => language}/for/close_over_loop_variable.wren (100%) rename test/{ => language}/for/closure_in_body.wren (100%) rename test/{ => language}/for/newline_after_for.wren (100%) rename test/{ => language}/for/newline_before_in.wren (100%) rename test/{ => language}/for/only_evaluate_sequence_once.wren (100%) rename test/{ => language}/for/return_closure.wren (100%) rename test/{ => language}/for/return_inside.wren (100%) rename test/{ => language}/for/syntax.wren (100%) rename test/{ => language}/for/truth.wren (100%) rename test/{ => language}/function/empty_body.wren (100%) rename test/{ => language}/function/newline_body.wren (100%) rename test/{ => language}/function/newline_in_expression_block.wren (100%) rename test/{ => language}/function/no_newline_before_close.wren (100%) rename test/{ => language}/function/no_parameters.wren (100%) rename test/{ => language}/function/parameters.wren (100%) rename test/{ => language}/function/syntax.wren (100%) rename test/{ => language}/if/dangling_else.wren (100%) rename test/{ => language}/if/else.wren (100%) rename test/{ => language}/if/if.wren (100%) rename test/{ => language}/if/newline_after_else.wren (100%) rename test/{ => language}/if/newline_after_if.wren (100%) rename test/{ => language}/if/truth.wren (100%) rename test/{ => language}/ignore_carriage_returns.wren (100%) rename test/{ => language}/implicit_receiver/inherited_methods.wren (100%) rename test/{ => language}/implicit_receiver/instance_methods.wren (100%) rename test/{ => language}/implicit_receiver/locals_shadow_getter.wren (100%) rename test/{ => language}/implicit_receiver/locals_shadow_setter.wren (100%) rename test/{ => language}/implicit_receiver/nested_class.wren (100%) rename test/{ => language}/implicit_receiver/static_methods.wren (100%) rename test/{ => language}/inheritance/do_not_inherit_static_methods.wren (100%) rename test/{ => language}/inheritance/inherit_fields.wren (100%) rename test/{ => language}/inheritance/inherit_from_class.wren (100%) rename test/{ => language}/inheritance/inherit_from_closure.wren (100%) rename test/{ => language}/inheritance/inherit_from_fiber.wren (100%) rename test/{ => language}/inheritance/inherit_from_fn.wren (100%) rename test/{ => language}/inheritance/inherit_from_list.wren (100%) rename test/{ => language}/inheritance/inherit_from_map.wren (100%) rename test/{ => language}/inheritance/inherit_from_nonclass.wren (100%) rename test/{ => language}/inheritance/inherit_from_range.wren (100%) rename test/{ => language}/inheritance/inherit_from_string.wren (100%) rename test/{ => language}/inheritance/inherit_methods.wren (100%) rename test/{ => language}/inheritance/inherited_fields_in_closure.wren (100%) rename test/{ => language}/inheritance/is.wren (100%) rename test/{ => language}/is/is.wren (100%) rename test/{ => language}/is/nonclass_on_right.wren (100%) rename test/{ => language}/list/eof_after_comma.wren (100%) rename test/{ => language}/list/eof_after_element.wren (100%) rename test/{ => language}/list/grow_shrink.wren (100%) rename test/{ => language}/list/newline_before_comma.wren (100%) rename test/{ => language}/list/newlines.wren (100%) rename test/{ => language}/logical_operator/and.wren (100%) rename test/{ => language}/logical_operator/and_truth.wren (100%) rename test/{ => language}/logical_operator/or.wren (100%) rename test/{ => language}/logical_operator/or_truth.wren (100%) rename test/{ => language}/map/eof_after_colon.wren (100%) rename test/{ => language}/map/eof_after_comma.wren (100%) rename test/{ => language}/map/eof_after_key.wren (100%) rename test/{ => language}/map/eof_after_value.wren (100%) rename test/{ => language}/map/grow_and_shrink.wren (100%) rename test/{ => language}/method/arity.wren (100%) rename test/{ => language}/method/call_name_too_long.wren (100%) rename test/{ => language}/method/empty_block.wren (100%) rename test/{ => language}/method/empty_subscript_call.wren (100%) rename test/{ => language}/method/empty_subscript_definition.wren (100%) rename test/{ => language}/method/long_name.wren (100%) rename test/{ => language}/method/many_methods.wren (100%) rename test/{ => language}/method/name_too_long.wren (100%) rename test/{ => language}/method/newlines.wren (100%) rename test/{ => language}/method/not_found.wren (100%) rename test/{ => language}/method/not_found_eleven_arguments.wren (100%) rename test/{ => language}/method/not_found_multiple_arguments.wren (100%) rename test/{ => language}/method/not_found_one_argument.wren (100%) rename test/{ => language}/method/operators.wren (100%) rename test/{ => language}/method/static.wren (100%) rename test/{ => language}/method/static_method_not_found.wren (100%) rename test/{ => language}/method/subscript_operators.wren (100%) rename test/{ => language}/method/subscript_setter_too_many_arguments.wren (100%) rename test/{ => language}/method/subscript_too_many_arguments.wren (100%) rename test/{ => language}/method/too_many_arguments.wren (100%) rename test/{ => language}/method/too_many_parameters.wren (100%) rename test/{ => language}/module/change_imported_value/change_imported_value.wren (100%) rename test/{ => language}/module/change_imported_value/module.wren (100%) rename test/{ => language}/module/cyclic_import/a.wren (100%) rename test/{ => language}/module/cyclic_import/b.wren (100%) rename test/{ => language}/module/cyclic_import/cyclic_import.wren (100%) rename test/{ => language}/module/implicitly_imports_core/implicitly_imports_core.wren (100%) rename test/{ => language}/module/implicitly_imports_core/module.wren (100%) rename test/{ => language}/module/inside_block/inside_block.wren (100%) rename test/{ => language}/module/inside_block/module.wren (100%) rename test/{ => language}/module/missing_for.wren (100%) rename test/{ => language}/module/missing_string_after_import.wren (100%) rename test/{ => language}/module/multiple_variables/module.wren (100%) rename test/{ => language}/module/multiple_variables/multiple_variables.wren (100%) rename test/{ => language}/module/name_collision.wren (100%) rename test/{ => language}/module/no_variable/module.wren (100%) rename test/{ => language}/module/no_variable/no_variable.wren (100%) rename test/{ => language}/module/shared_import/a.wren (100%) rename test/{ => language}/module/shared_import/b.wren (100%) rename test/{ => language}/module/shared_import/shared.wren (100%) rename test/{ => language}/module/shared_import/shared_import.wren (100%) rename test/{ => language}/module/simple_import/module.wren (100%) rename test/{ => language}/module/simple_import/simple_import.wren (100%) rename test/{ => language}/module/unknown_module.wren (100%) rename test/{ => language}/module/unknown_variable/module.wren (100%) rename test/{ => language}/module/unknown_variable/unknown_variable.wren (100%) rename test/{ => language}/new/new_on_nonclass.wren (100%) rename test/{ => language}/new/newline_after_new.wren (100%) rename test/{ => language}/no_trailing_newline.wren (100%) rename test/{ => language}/nonlocal/assignment.wren (100%) rename test/{ => language}/nonlocal/duplicate_nonlocal.wren (100%) rename test/{ => language}/nonlocal/in_block_scope.wren (100%) rename test/{ => language}/nonlocal/mutual_recursion.wren (100%) rename test/{ => language}/nonlocal/null_before_defined.wren (100%) rename test/{ => language}/nonlocal/undefined.wren (100%) rename test/{ => language}/nonlocal/use_in_function.wren (100%) rename test/{ => language}/nonlocal/use_in_function_before_definition.wren (100%) rename test/{ => language}/nonlocal/use_in_method.wren (100%) rename test/{ => language}/nonlocal/use_in_method_before_definition.wren (100%) rename test/{ => language}/null/literal.wren (100%) rename test/{ => language}/number/hex_literals.wren (100%) rename test/{ => language}/number/hex_too_large.wren (100%) rename test/{ => language}/number/literal_too_large.wren (100%) rename test/{ => language}/number/literals.wren (100%) rename test/{ => language}/precedence.wren (100%) rename test/{ => language}/return/after_else.wren (100%) rename test/{ => language}/return/after_if.wren (100%) rename test/{ => language}/return/after_while.wren (100%) rename test/{ => language}/return/in_function.wren (100%) rename test/{ => language}/return/in_method.wren (100%) rename test/{ => language}/return/return_null_if_newline.wren (100%) rename test/{ => language}/semicolon.wren (100%) rename test/{ => language}/setter/associativity.wren (100%) rename test/{ => language}/setter/grouping.wren (100%) rename test/{ => language}/setter/infix_operator.wren (100%) rename test/{ => language}/setter/instance.wren (100%) rename test/{ => language}/setter/is.wren (100%) rename test/{ => language}/setter/prefix_operator.wren (100%) rename test/{ => language}/setter/result.wren (100%) rename test/{ => language}/setter/same_name_as_method.wren (100%) rename test/{ => language}/setter/static.wren (100%) rename test/{ => language}/shebang/shebang.wren (100%) rename test/{ => language}/shebang/shebang_at_eof.wren (100%) rename test/{ => language}/shebang/shebang_at_other_line.wren (100%) rename test/{ => language}/shebang/shebang_invalid.wren (100%) rename test/{ => language}/static_field/closure.wren (100%) rename test/{ => language}/static_field/default_to_null.wren (100%) rename test/{ => language}/static_field/in_instance_method.wren (100%) rename test/{ => language}/static_field/multiple.wren (100%) rename test/{ => language}/static_field/nested_class.wren (100%) rename test/{ => language}/static_field/outside_class.wren (100%) rename test/{ => language}/static_field/use_before_set.wren (100%) rename test/{ => language}/string/escapes.wren (100%) rename test/{ => language}/string/incomplete_unicode_escape.wren (100%) rename test/{ => language}/string/incomplete_unicode_escape_at_eof.wren (100%) rename test/{ => language}/string/invalid_escape.wren (100%) rename test/{ => language}/string/invalid_unicode_escape.wren (100%) rename test/{ => language}/string/literals.wren (100%) rename test/{ => language}/string/unicode_escapes.wren (100%) rename test/{ => language}/string/unterminated.wren (100%) rename test/{ => language}/super/call_different_arity.wren (100%) rename test/{ => language}/super/call_other_method.wren (100%) rename test/{ => language}/super/call_same_method.wren (100%) rename test/{ => language}/super/closure.wren (100%) rename test/{ => language}/super/implicit_name.wren (100%) rename test/{ => language}/super/indirectly_inherited.wren (100%) rename test/{ => language}/super/no_superclass_method.wren (100%) rename test/{ => language}/super/super_at_top_level.wren (100%) rename test/{ => language}/super/super_in_static_method.wren (100%) rename test/{ => language}/super/super_in_top_level_function.wren (100%) rename test/{ => language}/this/closure.wren (100%) rename test/{ => language}/this/nested_class.wren (100%) rename test/{ => language}/this/nested_closure.wren (100%) rename test/{ => language}/this/this_at_top_level.wren (100%) rename test/{ => language}/this/this_in_method.wren (100%) rename test/{ => language}/this/this_in_static_method.wren (100%) rename test/{ => language}/this/this_in_top_level_function.wren (100%) rename test/{ => language}/unexpected_character.wren (100%) rename test/{ => language}/variable/duplicate_local.wren (100%) rename test/{ => language}/variable/duplicate_parameter.wren (100%) rename test/{ => language}/variable/global_in_initializer.wren (100%) rename test/{ => language}/variable/global_without_initializer.wren (100%) rename test/{ => language}/variable/local_collide_with_function_parameter.wren (100%) rename test/{ => language}/variable/local_collide_with_method_parameter.wren (100%) rename test/{ => language}/variable/local_in_initializer.wren (100%) rename test/{ => language}/variable/local_in_middle_of_block.wren (100%) rename test/{ => language}/variable/local_in_nested_block.wren (100%) rename test/{ => language}/variable/local_without_initializer.wren (100%) rename test/{ => language}/variable/many_locals.wren (100%) rename test/{ => language}/variable/many_nonsimultaneous_locals.wren (100%) rename test/{ => language}/variable/newline_after_var.wren (100%) rename test/{ => language}/variable/outside_method.wren (100%) rename test/{ => language}/variable/scope_if.wren (100%) rename test/{ => language}/variable/scope_reuse_in_different_blocks.wren (100%) rename test/{ => language}/variable/scope_while.wren (100%) rename test/{ => language}/variable/shadow_and_local.wren (100%) rename test/{ => language}/variable/shadow_global.wren (100%) rename test/{ => language}/variable/shadow_in_initializer.wren (100%) rename test/{ => language}/variable/shadow_local.wren (100%) rename test/{ => language}/variable/too_many_locals.wren (100%) rename test/{ => language}/variable/too_many_locals_nested.wren (100%) rename test/{ => language}/variable/undefined_global.wren (100%) rename test/{ => language}/variable/undefined_local.wren (100%) rename test/{ => language}/variable/use_false_as_var.wren (100%) rename test/{ => language}/variable/use_field_as_var.wren (100%) rename test/{ => language}/variable/use_null_as_var.wren (100%) rename test/{ => language}/variable/use_this_as_var.wren (100%) rename test/{ => language}/variable/use_true_as_var.wren (100%) rename test/{ => language}/while/closure_in_body.wren (100%) rename test/{ => language}/while/newline_after_while.wren (100%) rename test/{ => language}/while/return_closure.wren (100%) rename test/{ => language}/while/return_inside.wren (100%) rename test/{ => language}/while/syntax.wren (100%) rename test/{ => language}/while/truth.wren (100%) rename test/{ => language}/whitespace.wren (100%) rename test/{function/too_many_parameters.wren => limit/too_many_function_parameters.wren} (100%) diff --git a/.gitignore b/.gitignore index 2e3fcf88..ae7c5b28 100644 --- a/.gitignore +++ b/.gitignore @@ -16,4 +16,4 @@ xcuserdata/ scratch.wren # The baseline file is machine-specific, so doesn't get checked in. -benchmark/baseline.txt +test/benchmark/baseline.txt diff --git a/doc/site/performance.markdown b/doc/site/performance.markdown index 3f855043..81527120 100644 --- a/doc/site/performance.markdown +++ b/doc/site/performance.markdown @@ -93,7 +93,7 @@ languages benchmarked, including Wren, because Mike Pall is a robot from the future. The benchmark harness and programs are -[here](https://github.com/munificent/wren/tree/master/benchmark). +[here](https://github.com/munificent/wren/tree/master/test/benchmark). ## Why is Wren fast? diff --git a/script/benchmark.py b/script/benchmark.py index 9b8ec7ab..255a4705 100755 --- a/script/benchmark.py +++ b/script/benchmark.py @@ -39,7 +39,7 @@ import sys # To generate a baseline file, run this script with "--generate-baseline". WREN_DIR = os.path.dirname(os.path.dirname(os.path.realpath(__file__))) -BENCHMARK_DIR = os.path.join(WREN_DIR, 'benchmark') +BENCHMARK_DIR = os.path.join(WREN_DIR, 'test', 'benchmark') # How many times to run a given benchmark. NUM_TRIALS = 10 diff --git a/script/test.py b/script/test.py index 1ec58294..33b63888 100755 --- a/script/test.py +++ b/script/test.py @@ -11,7 +11,6 @@ import sys # Runs the tests. WREN_DIR = dirname(dirname(realpath(__file__))) -TEST_DIR = join(WREN_DIR, 'test') WREN_APP = join(WREN_DIR, 'bin', 'wrend') EXPECT_PATTERN = re.compile(r'// expect: (.*)') @@ -243,7 +242,9 @@ def run_test(path): print(' ' + color.PINK + fail + color.DEFAULT) print('') -walk(TEST_DIR, run_test) + +for dir in ['core', 'io', 'language', 'limit']: + walk(join(WREN_DIR, 'test', dir), run_test) print_line() if failed == 0: diff --git a/test/README.md b/test/README.md new file mode 100644 index 00000000..9652fa8e --- /dev/null +++ b/test/README.md @@ -0,0 +1,21 @@ +This contains the automated validation suite for the VM and built-in libraries. + +* `benchmark/` - Performance tests. These aren't strictly pass/fail, but let us + compare performance both against other languages and against previous builds + of Wren itself. + +* `core/` - Tests for the built in core library, mainly methods on the core + classes. If a bug is in `wren_core.c` or `wren_value.c`, it will most likely + break one of these tests. + +* `io/` - Tests for the built in IO library. In other words, methods on the + `IO` class. If a bug is in `wren_io.c`, it should break one of these tests. + +* `language/` - Tests of the language itself, its grammar and runtime + semantics. If a bug is in `wren_compiler.c` or `wren_vm.c`, it will most + likely break one of these tests. This includes tests for the syntax for the + literal forms of the core classes. + +* `limit/` - Tests for various hardcoded limits. The language doesn't + officially *specify* these limits, but the Wren implementation has them. + These tests ensure that limit behavior is well-defined and tested. \ No newline at end of file diff --git a/benchmark/README.md b/test/benchmark/README.md similarity index 100% rename from benchmark/README.md rename to test/benchmark/README.md diff --git a/benchmark/binary_trees.lua b/test/benchmark/binary_trees.lua similarity index 100% rename from benchmark/binary_trees.lua rename to test/benchmark/binary_trees.lua diff --git a/benchmark/binary_trees.py b/test/benchmark/binary_trees.py similarity index 100% rename from benchmark/binary_trees.py rename to test/benchmark/binary_trees.py diff --git a/benchmark/binary_trees.rb b/test/benchmark/binary_trees.rb similarity index 100% rename from benchmark/binary_trees.rb rename to test/benchmark/binary_trees.rb diff --git a/benchmark/binary_trees.wren b/test/benchmark/binary_trees.wren similarity index 100% rename from benchmark/binary_trees.wren rename to test/benchmark/binary_trees.wren diff --git a/benchmark/delta_blue.lua.inprogress b/test/benchmark/delta_blue.lua.inprogress similarity index 100% rename from benchmark/delta_blue.lua.inprogress rename to test/benchmark/delta_blue.lua.inprogress diff --git a/benchmark/delta_blue.py b/test/benchmark/delta_blue.py similarity index 100% rename from benchmark/delta_blue.py rename to test/benchmark/delta_blue.py diff --git a/benchmark/delta_blue.wren b/test/benchmark/delta_blue.wren similarity index 100% rename from benchmark/delta_blue.wren rename to test/benchmark/delta_blue.wren diff --git a/benchmark/fannkuch.lua b/test/benchmark/fannkuch.lua similarity index 100% rename from benchmark/fannkuch.lua rename to test/benchmark/fannkuch.lua diff --git a/benchmark/fannkuch.py b/test/benchmark/fannkuch.py similarity index 100% rename from benchmark/fannkuch.py rename to test/benchmark/fannkuch.py diff --git a/benchmark/fannkuch.rb b/test/benchmark/fannkuch.rb similarity index 100% rename from benchmark/fannkuch.rb rename to test/benchmark/fannkuch.rb diff --git a/benchmark/fib.lua b/test/benchmark/fib.lua similarity index 100% rename from benchmark/fib.lua rename to test/benchmark/fib.lua diff --git a/benchmark/fib.py b/test/benchmark/fib.py similarity index 100% rename from benchmark/fib.py rename to test/benchmark/fib.py diff --git a/benchmark/fib.rb b/test/benchmark/fib.rb similarity index 100% rename from benchmark/fib.rb rename to test/benchmark/fib.rb diff --git a/benchmark/fib.wren b/test/benchmark/fib.wren similarity index 100% rename from benchmark/fib.wren rename to test/benchmark/fib.wren diff --git a/benchmark/for.lua b/test/benchmark/for.lua similarity index 100% rename from benchmark/for.lua rename to test/benchmark/for.lua diff --git a/benchmark/for.py b/test/benchmark/for.py similarity index 100% rename from benchmark/for.py rename to test/benchmark/for.py diff --git a/benchmark/for.rb b/test/benchmark/for.rb similarity index 100% rename from benchmark/for.rb rename to test/benchmark/for.rb diff --git a/benchmark/for.wren b/test/benchmark/for.wren similarity index 100% rename from benchmark/for.wren rename to test/benchmark/for.wren diff --git a/benchmark/map_numeric.lua b/test/benchmark/map_numeric.lua similarity index 100% rename from benchmark/map_numeric.lua rename to test/benchmark/map_numeric.lua diff --git a/benchmark/map_numeric.py b/test/benchmark/map_numeric.py similarity index 100% rename from benchmark/map_numeric.py rename to test/benchmark/map_numeric.py diff --git a/benchmark/map_numeric.rb b/test/benchmark/map_numeric.rb similarity index 100% rename from benchmark/map_numeric.rb rename to test/benchmark/map_numeric.rb diff --git a/benchmark/map_numeric.wren b/test/benchmark/map_numeric.wren similarity index 100% rename from benchmark/map_numeric.wren rename to test/benchmark/map_numeric.wren diff --git a/benchmark/map_string.lua b/test/benchmark/map_string.lua similarity index 100% rename from benchmark/map_string.lua rename to test/benchmark/map_string.lua diff --git a/benchmark/map_string.py b/test/benchmark/map_string.py similarity index 100% rename from benchmark/map_string.py rename to test/benchmark/map_string.py diff --git a/benchmark/map_string.rb b/test/benchmark/map_string.rb similarity index 100% rename from benchmark/map_string.rb rename to test/benchmark/map_string.rb diff --git a/benchmark/map_string.wren b/test/benchmark/map_string.wren similarity index 100% rename from benchmark/map_string.wren rename to test/benchmark/map_string.wren diff --git a/benchmark/method_call.lua b/test/benchmark/method_call.lua similarity index 100% rename from benchmark/method_call.lua rename to test/benchmark/method_call.lua diff --git a/benchmark/method_call.py b/test/benchmark/method_call.py similarity index 100% rename from benchmark/method_call.py rename to test/benchmark/method_call.py diff --git a/benchmark/method_call.rb b/test/benchmark/method_call.rb similarity index 100% rename from benchmark/method_call.rb rename to test/benchmark/method_call.rb diff --git a/benchmark/method_call.wren b/test/benchmark/method_call.wren similarity index 100% rename from benchmark/method_call.wren rename to test/benchmark/method_call.wren diff --git a/test/bool/equality.wren b/test/core/bool/equality.wren similarity index 100% rename from test/bool/equality.wren rename to test/core/bool/equality.wren diff --git a/test/bool/not.wren b/test/core/bool/not.wren similarity index 100% rename from test/bool/not.wren rename to test/core/bool/not.wren diff --git a/test/bool/to_string.wren b/test/core/bool/to_string.wren similarity index 100% rename from test/bool/to_string.wren rename to test/core/bool/to_string.wren diff --git a/test/bool/type.wren b/test/core/bool/type.wren similarity index 100% rename from test/bool/type.wren rename to test/core/bool/type.wren diff --git a/test/class/equality.wren b/test/core/class/equality.wren similarity index 100% rename from test/class/equality.wren rename to test/core/class/equality.wren diff --git a/test/class/name.wren b/test/core/class/name.wren similarity index 100% rename from test/class/name.wren rename to test/core/class/name.wren diff --git a/test/class/supertype.wren b/test/core/class/supertype.wren similarity index 100% rename from test/class/supertype.wren rename to test/core/class/supertype.wren diff --git a/test/class/type.wren b/test/core/class/type.wren similarity index 100% rename from test/class/type.wren rename to test/core/class/type.wren diff --git a/test/fiber/abort.wren b/test/core/fiber/abort.wren similarity index 100% rename from test/fiber/abort.wren rename to test/core/fiber/abort.wren diff --git a/test/fiber/abort_main_fiber.wren b/test/core/fiber/abort_main_fiber.wren similarity index 100% rename from test/fiber/abort_main_fiber.wren rename to test/core/fiber/abort_main_fiber.wren diff --git a/test/fiber/abort_wrong_arg_type.wren b/test/core/fiber/abort_wrong_arg_type.wren similarity index 100% rename from test/fiber/abort_wrong_arg_type.wren rename to test/core/fiber/abort_wrong_arg_type.wren diff --git a/test/fiber/call.wren b/test/core/fiber/call.wren similarity index 100% rename from test/fiber/call.wren rename to test/core/fiber/call.wren diff --git a/test/fiber/call_direct_reenter.wren b/test/core/fiber/call_direct_reenter.wren similarity index 100% rename from test/fiber/call_direct_reenter.wren rename to test/core/fiber/call_direct_reenter.wren diff --git a/test/fiber/call_indirect_reenter.wren b/test/core/fiber/call_indirect_reenter.wren similarity index 100% rename from test/fiber/call_indirect_reenter.wren rename to test/core/fiber/call_indirect_reenter.wren diff --git a/test/fiber/call_return_implicit_null.wren b/test/core/fiber/call_return_implicit_null.wren similarity index 100% rename from test/fiber/call_return_implicit_null.wren rename to test/core/fiber/call_return_implicit_null.wren diff --git a/test/fiber/call_return_value.wren b/test/core/fiber/call_return_value.wren similarity index 100% rename from test/fiber/call_return_value.wren rename to test/core/fiber/call_return_value.wren diff --git a/test/fiber/call_when_done.wren b/test/core/fiber/call_when_done.wren similarity index 100% rename from test/fiber/call_when_done.wren rename to test/core/fiber/call_when_done.wren diff --git a/test/fiber/call_with_value.wren b/test/core/fiber/call_with_value.wren similarity index 100% rename from test/fiber/call_with_value.wren rename to test/core/fiber/call_with_value.wren diff --git a/test/fiber/call_with_value_direct_reenter.wren b/test/core/fiber/call_with_value_direct_reenter.wren similarity index 100% rename from test/fiber/call_with_value_direct_reenter.wren rename to test/core/fiber/call_with_value_direct_reenter.wren diff --git a/test/fiber/call_with_value_indirect_reenter.wren b/test/core/fiber/call_with_value_indirect_reenter.wren similarity index 100% rename from test/fiber/call_with_value_indirect_reenter.wren rename to test/core/fiber/call_with_value_indirect_reenter.wren diff --git a/test/fiber/call_with_value_when_done.wren b/test/core/fiber/call_with_value_when_done.wren similarity index 100% rename from test/fiber/call_with_value_when_done.wren rename to test/core/fiber/call_with_value_when_done.wren diff --git a/test/fiber/error.wren b/test/core/fiber/error.wren similarity index 100% rename from test/fiber/error.wren rename to test/core/fiber/error.wren diff --git a/test/fiber/is_done.wren b/test/core/fiber/is_done.wren similarity index 100% rename from test/fiber/is_done.wren rename to test/core/fiber/is_done.wren diff --git a/test/fiber/is_done_after_error.wren b/test/core/fiber/is_done_after_error.wren similarity index 100% rename from test/fiber/is_done_after_error.wren rename to test/core/fiber/is_done_after_error.wren diff --git a/test/fiber/new_wrong_arg_type.wren b/test/core/fiber/new_wrong_arg_type.wren similarity index 100% rename from test/fiber/new_wrong_arg_type.wren rename to test/core/fiber/new_wrong_arg_type.wren diff --git a/test/fiber/resume_caller.wren b/test/core/fiber/resume_caller.wren similarity index 100% rename from test/fiber/resume_caller.wren rename to test/core/fiber/resume_caller.wren diff --git a/test/fiber/run.wren b/test/core/fiber/run.wren similarity index 100% rename from test/fiber/run.wren rename to test/core/fiber/run.wren diff --git a/test/fiber/run_direct_reenter.wren b/test/core/fiber/run_direct_reenter.wren similarity index 100% rename from test/fiber/run_direct_reenter.wren rename to test/core/fiber/run_direct_reenter.wren diff --git a/test/fiber/run_indirect_reenter.wren b/test/core/fiber/run_indirect_reenter.wren similarity index 100% rename from test/fiber/run_indirect_reenter.wren rename to test/core/fiber/run_indirect_reenter.wren diff --git a/test/fiber/run_when_done.wren b/test/core/fiber/run_when_done.wren similarity index 100% rename from test/fiber/run_when_done.wren rename to test/core/fiber/run_when_done.wren diff --git a/test/fiber/run_with_value.wren b/test/core/fiber/run_with_value.wren similarity index 100% rename from test/fiber/run_with_value.wren rename to test/core/fiber/run_with_value.wren diff --git a/test/fiber/run_with_value_direct_reenter.wren b/test/core/fiber/run_with_value_direct_reenter.wren similarity index 100% rename from test/fiber/run_with_value_direct_reenter.wren rename to test/core/fiber/run_with_value_direct_reenter.wren diff --git a/test/fiber/run_with_value_indirect_reenter.wren b/test/core/fiber/run_with_value_indirect_reenter.wren similarity index 100% rename from test/fiber/run_with_value_indirect_reenter.wren rename to test/core/fiber/run_with_value_indirect_reenter.wren diff --git a/test/fiber/try.wren b/test/core/fiber/try.wren similarity index 100% rename from test/fiber/try.wren rename to test/core/fiber/try.wren diff --git a/test/fiber/try_direct_reenter.wren b/test/core/fiber/try_direct_reenter.wren similarity index 100% rename from test/fiber/try_direct_reenter.wren rename to test/core/fiber/try_direct_reenter.wren diff --git a/test/fiber/try_indirect_reenter.wren b/test/core/fiber/try_indirect_reenter.wren similarity index 100% rename from test/fiber/try_indirect_reenter.wren rename to test/core/fiber/try_indirect_reenter.wren diff --git a/test/fiber/try_when_done.wren b/test/core/fiber/try_when_done.wren similarity index 100% rename from test/fiber/try_when_done.wren rename to test/core/fiber/try_when_done.wren diff --git a/test/fiber/try_without_error.wren b/test/core/fiber/try_without_error.wren similarity index 100% rename from test/fiber/try_without_error.wren rename to test/core/fiber/try_without_error.wren diff --git a/test/fiber/type.wren b/test/core/fiber/type.wren similarity index 100% rename from test/fiber/type.wren rename to test/core/fiber/type.wren diff --git a/test/fiber/yield.wren b/test/core/fiber/yield.wren similarity index 100% rename from test/fiber/yield.wren rename to test/core/fiber/yield.wren diff --git a/test/fiber/yield_from_main.wren b/test/core/fiber/yield_from_main.wren similarity index 100% rename from test/fiber/yield_from_main.wren rename to test/core/fiber/yield_from_main.wren diff --git a/test/fiber/yield_return_call_value.wren b/test/core/fiber/yield_return_call_value.wren similarity index 100% rename from test/fiber/yield_return_call_value.wren rename to test/core/fiber/yield_return_call_value.wren diff --git a/test/fiber/yield_return_run_value.wren b/test/core/fiber/yield_return_run_value.wren similarity index 100% rename from test/fiber/yield_return_run_value.wren rename to test/core/fiber/yield_return_run_value.wren diff --git a/test/fiber/yield_with_no_caller.wren b/test/core/fiber/yield_with_no_caller.wren similarity index 100% rename from test/fiber/yield_with_no_caller.wren rename to test/core/fiber/yield_with_no_caller.wren diff --git a/test/fiber/yield_with_value.wren b/test/core/fiber/yield_with_value.wren similarity index 100% rename from test/fiber/yield_with_value.wren rename to test/core/fiber/yield_with_value.wren diff --git a/test/fiber/yield_with_value_from_main.wren b/test/core/fiber/yield_with_value_from_main.wren similarity index 100% rename from test/fiber/yield_with_value_from_main.wren rename to test/core/fiber/yield_with_value_from_main.wren diff --git a/test/fiber/yield_with_value_with_no_caller.wren b/test/core/fiber/yield_with_value_with_no_caller.wren similarity index 100% rename from test/fiber/yield_with_value_with_no_caller.wren rename to test/core/fiber/yield_with_value_with_no_caller.wren diff --git a/test/function/arity.wren b/test/core/function/arity.wren similarity index 100% rename from test/function/arity.wren rename to test/core/function/arity.wren diff --git a/test/function/call_extra_arguments.wren b/test/core/function/call_extra_arguments.wren similarity index 100% rename from test/function/call_extra_arguments.wren rename to test/core/function/call_extra_arguments.wren diff --git a/test/function/call_missing_arguments.wren b/test/core/function/call_missing_arguments.wren similarity index 100% rename from test/function/call_missing_arguments.wren rename to test/core/function/call_missing_arguments.wren diff --git a/test/function/equality.wren b/test/core/function/equality.wren similarity index 100% rename from test/function/equality.wren rename to test/core/function/equality.wren diff --git a/test/function/new_wrong_arg_type.wren b/test/core/function/new_wrong_arg_type.wren similarity index 100% rename from test/function/new_wrong_arg_type.wren rename to test/core/function/new_wrong_arg_type.wren diff --git a/test/function/to_string.wren b/test/core/function/to_string.wren similarity index 100% rename from test/function/to_string.wren rename to test/core/function/to_string.wren diff --git a/test/function/type.wren b/test/core/function/type.wren similarity index 100% rename from test/function/type.wren rename to test/core/function/type.wren diff --git a/test/list/add.wren b/test/core/list/add.wren similarity index 100% rename from test/list/add.wren rename to test/core/list/add.wren diff --git a/test/list/add_all.wren b/test/core/list/add_all.wren similarity index 100% rename from test/list/add_all.wren rename to test/core/list/add_all.wren diff --git a/test/list/all.wren b/test/core/list/all.wren similarity index 100% rename from test/list/all.wren rename to test/core/list/all.wren diff --git a/test/list/all_non_bool_returning_fn.wren b/test/core/list/all_non_bool_returning_fn.wren similarity index 100% rename from test/list/all_non_bool_returning_fn.wren rename to test/core/list/all_non_bool_returning_fn.wren diff --git a/test/list/all_non_function_arg.wren b/test/core/list/all_non_function_arg.wren similarity index 100% rename from test/list/all_non_function_arg.wren rename to test/core/list/all_non_function_arg.wren diff --git a/test/list/any.wren b/test/core/list/any.wren similarity index 100% rename from test/list/any.wren rename to test/core/list/any.wren diff --git a/test/list/any_non_bool_returning_fn.wren b/test/core/list/any_non_bool_returning_fn.wren similarity index 100% rename from test/list/any_non_bool_returning_fn.wren rename to test/core/list/any_non_bool_returning_fn.wren diff --git a/test/list/any_non_function_arg.wren b/test/core/list/any_non_function_arg.wren similarity index 100% rename from test/list/any_non_function_arg.wren rename to test/core/list/any_non_function_arg.wren diff --git a/test/list/clear.wren b/test/core/list/clear.wren similarity index 100% rename from test/list/clear.wren rename to test/core/list/clear.wren diff --git a/test/list/count.wren b/test/core/list/count.wren similarity index 100% rename from test/list/count.wren rename to test/core/list/count.wren diff --git a/test/list/insert.wren b/test/core/list/insert.wren similarity index 100% rename from test/list/insert.wren rename to test/core/list/insert.wren diff --git a/test/list/insert_index_not_int.wren b/test/core/list/insert_index_not_int.wren similarity index 100% rename from test/list/insert_index_not_int.wren rename to test/core/list/insert_index_not_int.wren diff --git a/test/list/insert_index_not_num.wren b/test/core/list/insert_index_not_num.wren similarity index 100% rename from test/list/insert_index_not_num.wren rename to test/core/list/insert_index_not_num.wren diff --git a/test/list/insert_index_too_large.wren b/test/core/list/insert_index_too_large.wren similarity index 100% rename from test/list/insert_index_too_large.wren rename to test/core/list/insert_index_too_large.wren diff --git a/test/list/insert_index_too_small.wren b/test/core/list/insert_index_too_small.wren similarity index 100% rename from test/list/insert_index_too_small.wren rename to test/core/list/insert_index_too_small.wren diff --git a/test/list/iterate.wren b/test/core/list/iterate.wren similarity index 100% rename from test/list/iterate.wren rename to test/core/list/iterate.wren diff --git a/test/list/iterate_iterator_not_int.wren b/test/core/list/iterate_iterator_not_int.wren similarity index 100% rename from test/list/iterate_iterator_not_int.wren rename to test/core/list/iterate_iterator_not_int.wren diff --git a/test/list/iterate_iterator_not_num.wren b/test/core/list/iterate_iterator_not_num.wren similarity index 100% rename from test/list/iterate_iterator_not_num.wren rename to test/core/list/iterate_iterator_not_num.wren diff --git a/test/list/iterator_value.wren b/test/core/list/iterator_value.wren similarity index 100% rename from test/list/iterator_value.wren rename to test/core/list/iterator_value.wren diff --git a/test/list/iterator_value_iterator_not_int.wren b/test/core/list/iterator_value_iterator_not_int.wren similarity index 100% rename from test/list/iterator_value_iterator_not_int.wren rename to test/core/list/iterator_value_iterator_not_int.wren diff --git a/test/list/iterator_value_iterator_not_num.wren b/test/core/list/iterator_value_iterator_not_num.wren similarity index 100% rename from test/list/iterator_value_iterator_not_num.wren rename to test/core/list/iterator_value_iterator_not_num.wren diff --git a/test/list/iterator_value_iterator_too_large.wren b/test/core/list/iterator_value_iterator_too_large.wren similarity index 100% rename from test/list/iterator_value_iterator_too_large.wren rename to test/core/list/iterator_value_iterator_too_large.wren diff --git a/test/list/iterator_value_iterator_too_small.wren b/test/core/list/iterator_value_iterator_too_small.wren similarity index 100% rename from test/list/iterator_value_iterator_too_small.wren rename to test/core/list/iterator_value_iterator_too_small.wren diff --git a/test/list/join.wren b/test/core/list/join.wren similarity index 100% rename from test/list/join.wren rename to test/core/list/join.wren diff --git a/test/list/join_separator_not_string.wren b/test/core/list/join_separator_not_string.wren similarity index 100% rename from test/list/join_separator_not_string.wren rename to test/core/list/join_separator_not_string.wren diff --git a/test/list/map.wren b/test/core/list/map.wren similarity index 100% rename from test/list/map.wren rename to test/core/list/map.wren diff --git a/test/list/new.wren b/test/core/list/new.wren similarity index 100% rename from test/list/new.wren rename to test/core/list/new.wren diff --git a/test/list/not.wren b/test/core/list/not.wren similarity index 100% rename from test/list/not.wren rename to test/core/list/not.wren diff --git a/test/list/plus.wren b/test/core/list/plus.wren similarity index 100% rename from test/list/plus.wren rename to test/core/list/plus.wren diff --git a/test/list/reduce.wren b/test/core/list/reduce.wren similarity index 100% rename from test/list/reduce.wren rename to test/core/list/reduce.wren diff --git a/test/list/reduce_no_items.wren b/test/core/list/reduce_no_items.wren similarity index 100% rename from test/list/reduce_no_items.wren rename to test/core/list/reduce_no_items.wren diff --git a/test/list/reduce_single_item.wren b/test/core/list/reduce_single_item.wren similarity index 100% rename from test/list/reduce_single_item.wren rename to test/core/list/reduce_single_item.wren diff --git a/test/list/reduce_wrong_arity.wren b/test/core/list/reduce_wrong_arity.wren similarity index 100% rename from test/list/reduce_wrong_arity.wren rename to test/core/list/reduce_wrong_arity.wren diff --git a/test/list/remove_at.wren b/test/core/list/remove_at.wren similarity index 100% rename from test/list/remove_at.wren rename to test/core/list/remove_at.wren diff --git a/test/list/remove_at_index_not_int.wren b/test/core/list/remove_at_index_not_int.wren similarity index 100% rename from test/list/remove_at_index_not_int.wren rename to test/core/list/remove_at_index_not_int.wren diff --git a/test/list/remove_at_index_not_num.wren b/test/core/list/remove_at_index_not_num.wren similarity index 100% rename from test/list/remove_at_index_not_num.wren rename to test/core/list/remove_at_index_not_num.wren diff --git a/test/list/remove_at_index_too_large.wren b/test/core/list/remove_at_index_too_large.wren similarity index 100% rename from test/list/remove_at_index_too_large.wren rename to test/core/list/remove_at_index_too_large.wren diff --git a/test/list/remove_at_index_too_small.wren b/test/core/list/remove_at_index_too_small.wren similarity index 100% rename from test/list/remove_at_index_too_small.wren rename to test/core/list/remove_at_index_too_small.wren diff --git a/test/list/subscript.wren b/test/core/list/subscript.wren similarity index 100% rename from test/list/subscript.wren rename to test/core/list/subscript.wren diff --git a/test/list/subscript_not_int.wren b/test/core/list/subscript_not_int.wren similarity index 100% rename from test/list/subscript_not_int.wren rename to test/core/list/subscript_not_int.wren diff --git a/test/list/subscript_range.wren b/test/core/list/subscript_range.wren similarity index 100% rename from test/list/subscript_range.wren rename to test/core/list/subscript_range.wren diff --git a/test/list/subscript_range_from_not_int.wren b/test/core/list/subscript_range_from_not_int.wren similarity index 100% rename from test/list/subscript_range_from_not_int.wren rename to test/core/list/subscript_range_from_not_int.wren diff --git a/test/list/subscript_range_from_too_large.wren b/test/core/list/subscript_range_from_too_large.wren similarity index 100% rename from test/list/subscript_range_from_too_large.wren rename to test/core/list/subscript_range_from_too_large.wren diff --git a/test/list/subscript_range_from_too_small.wren b/test/core/list/subscript_range_from_too_small.wren similarity index 100% rename from test/list/subscript_range_from_too_small.wren rename to test/core/list/subscript_range_from_too_small.wren diff --git a/test/list/subscript_range_to_exclusive_too_large.wren b/test/core/list/subscript_range_to_exclusive_too_large.wren similarity index 100% rename from test/list/subscript_range_to_exclusive_too_large.wren rename to test/core/list/subscript_range_to_exclusive_too_large.wren diff --git a/test/list/subscript_range_to_exclusive_too_small.wren b/test/core/list/subscript_range_to_exclusive_too_small.wren similarity index 100% rename from test/list/subscript_range_to_exclusive_too_small.wren rename to test/core/list/subscript_range_to_exclusive_too_small.wren diff --git a/test/list/subscript_range_to_not_int.wren b/test/core/list/subscript_range_to_not_int.wren similarity index 100% rename from test/list/subscript_range_to_not_int.wren rename to test/core/list/subscript_range_to_not_int.wren diff --git a/test/list/subscript_range_to_too_large.wren b/test/core/list/subscript_range_to_too_large.wren similarity index 100% rename from test/list/subscript_range_to_too_large.wren rename to test/core/list/subscript_range_to_too_large.wren diff --git a/test/list/subscript_range_to_too_small.wren b/test/core/list/subscript_range_to_too_small.wren similarity index 100% rename from test/list/subscript_range_to_too_small.wren rename to test/core/list/subscript_range_to_too_small.wren diff --git a/test/list/subscript_setter.wren b/test/core/list/subscript_setter.wren similarity index 100% rename from test/list/subscript_setter.wren rename to test/core/list/subscript_setter.wren diff --git a/test/list/subscript_setter_not_int.wren b/test/core/list/subscript_setter_not_int.wren similarity index 100% rename from test/list/subscript_setter_not_int.wren rename to test/core/list/subscript_setter_not_int.wren diff --git a/test/list/subscript_setter_not_num.wren b/test/core/list/subscript_setter_not_num.wren similarity index 100% rename from test/list/subscript_setter_not_num.wren rename to test/core/list/subscript_setter_not_num.wren diff --git a/test/list/subscript_setter_too_large.wren b/test/core/list/subscript_setter_too_large.wren similarity index 100% rename from test/list/subscript_setter_too_large.wren rename to test/core/list/subscript_setter_too_large.wren diff --git a/test/list/subscript_setter_too_small.wren b/test/core/list/subscript_setter_too_small.wren similarity index 100% rename from test/list/subscript_setter_too_small.wren rename to test/core/list/subscript_setter_too_small.wren diff --git a/test/list/subscript_too_large.wren b/test/core/list/subscript_too_large.wren similarity index 100% rename from test/list/subscript_too_large.wren rename to test/core/list/subscript_too_large.wren diff --git a/test/list/subscript_too_small.wren b/test/core/list/subscript_too_small.wren similarity index 100% rename from test/list/subscript_too_small.wren rename to test/core/list/subscript_too_small.wren diff --git a/test/list/subscript_wrong_type.wren b/test/core/list/subscript_wrong_type.wren similarity index 100% rename from test/list/subscript_wrong_type.wren rename to test/core/list/subscript_wrong_type.wren diff --git a/test/list/to_string.wren b/test/core/list/to_string.wren similarity index 100% rename from test/list/to_string.wren rename to test/core/list/to_string.wren diff --git a/test/list/type.wren b/test/core/list/type.wren similarity index 100% rename from test/list/type.wren rename to test/core/list/type.wren diff --git a/test/list/where.wren b/test/core/list/where.wren similarity index 100% rename from test/list/where.wren rename to test/core/list/where.wren diff --git a/test/map/clear.wren b/test/core/map/clear.wren similarity index 100% rename from test/map/clear.wren rename to test/core/map/clear.wren diff --git a/test/map/contains_key.wren b/test/core/map/contains_key.wren similarity index 100% rename from test/map/contains_key.wren rename to test/core/map/contains_key.wren diff --git a/test/map/contains_key_not_value.wren b/test/core/map/contains_key_not_value.wren similarity index 100% rename from test/map/contains_key_not_value.wren rename to test/core/map/contains_key_not_value.wren diff --git a/test/map/count.wren b/test/core/map/count.wren similarity index 100% rename from test/map/count.wren rename to test/core/map/count.wren diff --git a/test/map/key_iterate.wren b/test/core/map/key_iterate.wren similarity index 100% rename from test/map/key_iterate.wren rename to test/core/map/key_iterate.wren diff --git a/test/map/key_iterate_iterator_not_int.wren b/test/core/map/key_iterate_iterator_not_int.wren similarity index 100% rename from test/map/key_iterate_iterator_not_int.wren rename to test/core/map/key_iterate_iterator_not_int.wren diff --git a/test/map/key_iterate_iterator_not_num.wren b/test/core/map/key_iterate_iterator_not_num.wren similarity index 100% rename from test/map/key_iterate_iterator_not_num.wren rename to test/core/map/key_iterate_iterator_not_num.wren diff --git a/test/map/key_types.wren b/test/core/map/key_types.wren similarity index 100% rename from test/map/key_types.wren rename to test/core/map/key_types.wren diff --git a/test/map/new.wren b/test/core/map/new.wren similarity index 100% rename from test/map/new.wren rename to test/core/map/new.wren diff --git a/test/map/remove.wren b/test/core/map/remove.wren similarity index 100% rename from test/map/remove.wren rename to test/core/map/remove.wren diff --git a/test/map/remove_key_not_value.wren b/test/core/map/remove_key_not_value.wren similarity index 100% rename from test/map/remove_key_not_value.wren rename to test/core/map/remove_key_not_value.wren diff --git a/test/map/subscript_empty_map.wren b/test/core/map/subscript_empty_map.wren similarity index 100% rename from test/map/subscript_empty_map.wren rename to test/core/map/subscript_empty_map.wren diff --git a/test/map/subscript_key_not_value.wren b/test/core/map/subscript_key_not_value.wren similarity index 100% rename from test/map/subscript_key_not_value.wren rename to test/core/map/subscript_key_not_value.wren diff --git a/test/map/subscript_setter_key_not_value.wren b/test/core/map/subscript_setter_key_not_value.wren similarity index 100% rename from test/map/subscript_setter_key_not_value.wren rename to test/core/map/subscript_setter_key_not_value.wren diff --git a/test/map/to_string.wren b/test/core/map/to_string.wren similarity index 100% rename from test/map/to_string.wren rename to test/core/map/to_string.wren diff --git a/test/map/type.wren b/test/core/map/type.wren similarity index 100% rename from test/map/type.wren rename to test/core/map/type.wren diff --git a/test/map/value_iterate.wren b/test/core/map/value_iterate.wren similarity index 100% rename from test/map/value_iterate.wren rename to test/core/map/value_iterate.wren diff --git a/test/map/value_iterate_iterator_not_int.wren b/test/core/map/value_iterate_iterator_not_int.wren similarity index 100% rename from test/map/value_iterate_iterator_not_int.wren rename to test/core/map/value_iterate_iterator_not_int.wren diff --git a/test/map/value_iterate_iterator_not_num.wren b/test/core/map/value_iterate_iterator_not_num.wren similarity index 100% rename from test/map/value_iterate_iterator_not_num.wren rename to test/core/map/value_iterate_iterator_not_num.wren diff --git a/test/null/not.wren b/test/core/null/not.wren similarity index 100% rename from test/null/not.wren rename to test/core/null/not.wren diff --git a/test/null/type.wren b/test/core/null/type.wren similarity index 100% rename from test/null/type.wren rename to test/core/null/type.wren diff --git a/test/number/abs.wren b/test/core/number/abs.wren similarity index 100% rename from test/number/abs.wren rename to test/core/number/abs.wren diff --git a/test/number/bitwise_and.wren b/test/core/number/bitwise_and.wren similarity index 100% rename from test/number/bitwise_and.wren rename to test/core/number/bitwise_and.wren diff --git a/test/number/bitwise_and_operand_not_num.wren b/test/core/number/bitwise_and_operand_not_num.wren similarity index 100% rename from test/number/bitwise_and_operand_not_num.wren rename to test/core/number/bitwise_and_operand_not_num.wren diff --git a/test/number/bitwise_lsh.wren b/test/core/number/bitwise_lsh.wren similarity index 100% rename from test/number/bitwise_lsh.wren rename to test/core/number/bitwise_lsh.wren diff --git a/test/number/bitwise_lsh_operand_not_num.wren b/test/core/number/bitwise_lsh_operand_not_num.wren similarity index 100% rename from test/number/bitwise_lsh_operand_not_num.wren rename to test/core/number/bitwise_lsh_operand_not_num.wren diff --git a/test/number/bitwise_not.wren b/test/core/number/bitwise_not.wren similarity index 100% rename from test/number/bitwise_not.wren rename to test/core/number/bitwise_not.wren diff --git a/test/number/bitwise_or.wren b/test/core/number/bitwise_or.wren similarity index 100% rename from test/number/bitwise_or.wren rename to test/core/number/bitwise_or.wren diff --git a/test/number/bitwise_or_operand_not_num.wren b/test/core/number/bitwise_or_operand_not_num.wren similarity index 100% rename from test/number/bitwise_or_operand_not_num.wren rename to test/core/number/bitwise_or_operand_not_num.wren diff --git a/test/number/bitwise_rsh.wren b/test/core/number/bitwise_rsh.wren similarity index 100% rename from test/number/bitwise_rsh.wren rename to test/core/number/bitwise_rsh.wren diff --git a/test/number/bitwise_rsh_operand_not_num.wren b/test/core/number/bitwise_rsh_operand_not_num.wren similarity index 100% rename from test/number/bitwise_rsh_operand_not_num.wren rename to test/core/number/bitwise_rsh_operand_not_num.wren diff --git a/test/number/bitwise_xor.wren b/test/core/number/bitwise_xor.wren similarity index 100% rename from test/number/bitwise_xor.wren rename to test/core/number/bitwise_xor.wren diff --git a/test/number/bitwise_xor_operand_not_num.wren b/test/core/number/bitwise_xor_operand_not_num.wren similarity index 100% rename from test/number/bitwise_xor_operand_not_num.wren rename to test/core/number/bitwise_xor_operand_not_num.wren diff --git a/test/number/ceil.wren b/test/core/number/ceil.wren similarity index 100% rename from test/number/ceil.wren rename to test/core/number/ceil.wren diff --git a/test/number/comparison.wren b/test/core/number/comparison.wren similarity index 100% rename from test/number/comparison.wren rename to test/core/number/comparison.wren diff --git a/test/number/decimal_point_at_eof.wren b/test/core/number/decimal_point_at_eof.wren similarity index 100% rename from test/number/decimal_point_at_eof.wren rename to test/core/number/decimal_point_at_eof.wren diff --git a/test/number/divide.wren b/test/core/number/divide.wren similarity index 100% rename from test/number/divide.wren rename to test/core/number/divide.wren diff --git a/test/number/divide_operand_not_num.wren b/test/core/number/divide_operand_not_num.wren similarity index 100% rename from test/number/divide_operand_not_num.wren rename to test/core/number/divide_operand_not_num.wren diff --git a/test/number/equality.wren b/test/core/number/equality.wren similarity index 100% rename from test/number/equality.wren rename to test/core/number/equality.wren diff --git a/test/number/floor.wren b/test/core/number/floor.wren similarity index 100% rename from test/number/floor.wren rename to test/core/number/floor.wren diff --git a/test/number/fraction.wren b/test/core/number/fraction.wren similarity index 100% rename from test/number/fraction.wren rename to test/core/number/fraction.wren diff --git a/test/number/from_string.wren b/test/core/number/from_string.wren similarity index 100% rename from test/number/from_string.wren rename to test/core/number/from_string.wren diff --git a/test/number/from_string_not_string.wren b/test/core/number/from_string_not_string.wren similarity index 100% rename from test/number/from_string_not_string.wren rename to test/core/number/from_string_not_string.wren diff --git a/test/number/from_string_too_large.wren b/test/core/number/from_string_too_large.wren similarity index 100% rename from test/number/from_string_too_large.wren rename to test/core/number/from_string_too_large.wren diff --git a/test/number/greater_than_equal_operand_not_num.wren b/test/core/number/greater_than_equal_operand_not_num.wren similarity index 100% rename from test/number/greater_than_equal_operand_not_num.wren rename to test/core/number/greater_than_equal_operand_not_num.wren diff --git a/test/number/greater_than_operand_not_num.wren b/test/core/number/greater_than_operand_not_num.wren similarity index 100% rename from test/number/greater_than_operand_not_num.wren rename to test/core/number/greater_than_operand_not_num.wren diff --git a/test/number/invalid_hex_literal.wren b/test/core/number/invalid_hex_literal.wren similarity index 100% rename from test/number/invalid_hex_literal.wren rename to test/core/number/invalid_hex_literal.wren diff --git a/test/number/is_nan.wren b/test/core/number/is_nan.wren similarity index 100% rename from test/number/is_nan.wren rename to test/core/number/is_nan.wren diff --git a/test/number/less_than_equal_operand_not_num.wren b/test/core/number/less_than_equal_operand_not_num.wren similarity index 100% rename from test/number/less_than_equal_operand_not_num.wren rename to test/core/number/less_than_equal_operand_not_num.wren diff --git a/test/number/less_than_operand_not_num.wren b/test/core/number/less_than_operand_not_num.wren similarity index 100% rename from test/number/less_than_operand_not_num.wren rename to test/core/number/less_than_operand_not_num.wren diff --git a/test/number/minus.wren b/test/core/number/minus.wren similarity index 100% rename from test/number/minus.wren rename to test/core/number/minus.wren diff --git a/test/number/minus_operand_not_num.wren b/test/core/number/minus_operand_not_num.wren similarity index 100% rename from test/number/minus_operand_not_num.wren rename to test/core/number/minus_operand_not_num.wren diff --git a/test/number/mod.wren b/test/core/number/mod.wren similarity index 100% rename from test/number/mod.wren rename to test/core/number/mod.wren diff --git a/test/number/mod_operand_not_num.wren b/test/core/number/mod_operand_not_num.wren similarity index 100% rename from test/number/mod_operand_not_num.wren rename to test/core/number/mod_operand_not_num.wren diff --git a/test/number/multiply.wren b/test/core/number/multiply.wren similarity index 100% rename from test/number/multiply.wren rename to test/core/number/multiply.wren diff --git a/test/number/multiply_operand_not_num.wren b/test/core/number/multiply_operand_not_num.wren similarity index 100% rename from test/number/multiply_operand_not_num.wren rename to test/core/number/multiply_operand_not_num.wren diff --git a/test/number/not.wren b/test/core/number/not.wren similarity index 100% rename from test/number/not.wren rename to test/core/number/not.wren diff --git a/test/number/plus.wren b/test/core/number/plus.wren similarity index 100% rename from test/number/plus.wren rename to test/core/number/plus.wren diff --git a/test/number/plus_operand_not_num.wren b/test/core/number/plus_operand_not_num.wren similarity index 100% rename from test/number/plus_operand_not_num.wren rename to test/core/number/plus_operand_not_num.wren diff --git a/test/number/sign.wren b/test/core/number/sign.wren similarity index 100% rename from test/number/sign.wren rename to test/core/number/sign.wren diff --git a/test/number/sqrt.wren b/test/core/number/sqrt.wren similarity index 100% rename from test/number/sqrt.wren rename to test/core/number/sqrt.wren diff --git a/test/number/to_string.wren b/test/core/number/to_string.wren similarity index 100% rename from test/number/to_string.wren rename to test/core/number/to_string.wren diff --git a/test/number/truncate.wren b/test/core/number/truncate.wren similarity index 100% rename from test/number/truncate.wren rename to test/core/number/truncate.wren diff --git a/test/number/type.wren b/test/core/number/type.wren similarity index 100% rename from test/number/type.wren rename to test/core/number/type.wren diff --git a/test/object/not.wren b/test/core/object/not.wren similarity index 100% rename from test/object/not.wren rename to test/core/object/not.wren diff --git a/test/object/to_string.wren b/test/core/object/to_string.wren similarity index 100% rename from test/object/to_string.wren rename to test/core/object/to_string.wren diff --git a/test/range/equality.wren b/test/core/range/equality.wren similarity index 100% rename from test/range/equality.wren rename to test/core/range/equality.wren diff --git a/test/range/exclusive_range_wrong_rhs_type.wren b/test/core/range/exclusive_range_wrong_rhs_type.wren similarity index 100% rename from test/range/exclusive_range_wrong_rhs_type.wren rename to test/core/range/exclusive_range_wrong_rhs_type.wren diff --git a/test/range/floating_point.wren b/test/core/range/floating_point.wren similarity index 100% rename from test/range/floating_point.wren rename to test/core/range/floating_point.wren diff --git a/test/range/from.wren b/test/core/range/from.wren similarity index 100% rename from test/range/from.wren rename to test/core/range/from.wren diff --git a/test/range/inclusive_range_wrong_rhs_type.wren b/test/core/range/inclusive_range_wrong_rhs_type.wren similarity index 100% rename from test/range/inclusive_range_wrong_rhs_type.wren rename to test/core/range/inclusive_range_wrong_rhs_type.wren diff --git a/test/range/is_inclusive.wren b/test/core/range/is_inclusive.wren similarity index 100% rename from test/range/is_inclusive.wren rename to test/core/range/is_inclusive.wren diff --git a/test/range/iterate.wren b/test/core/range/iterate.wren similarity index 100% rename from test/range/iterate.wren rename to test/core/range/iterate.wren diff --git a/test/range/iterate_from_float.wren b/test/core/range/iterate_from_float.wren similarity index 100% rename from test/range/iterate_from_float.wren rename to test/core/range/iterate_from_float.wren diff --git a/test/range/iterate_wrong_type.wren b/test/core/range/iterate_wrong_type.wren similarity index 100% rename from test/range/iterate_wrong_type.wren rename to test/core/range/iterate_wrong_type.wren diff --git a/test/range/iterator_value.wren b/test/core/range/iterator_value.wren similarity index 100% rename from test/range/iterator_value.wren rename to test/core/range/iterator_value.wren diff --git a/test/range/join.wren b/test/core/range/join.wren similarity index 100% rename from test/range/join.wren rename to test/core/range/join.wren diff --git a/test/range/join_separator_not_string.wren b/test/core/range/join_separator_not_string.wren similarity index 100% rename from test/range/join_separator_not_string.wren rename to test/core/range/join_separator_not_string.wren diff --git a/test/range/map.wren b/test/core/range/map.wren similarity index 100% rename from test/range/map.wren rename to test/core/range/map.wren diff --git a/test/range/max.wren b/test/core/range/max.wren similarity index 100% rename from test/range/max.wren rename to test/core/range/max.wren diff --git a/test/range/min.wren b/test/core/range/min.wren similarity index 100% rename from test/range/min.wren rename to test/core/range/min.wren diff --git a/test/range/reduce.wren b/test/core/range/reduce.wren similarity index 100% rename from test/range/reduce.wren rename to test/core/range/reduce.wren diff --git a/test/range/to.wren b/test/core/range/to.wren similarity index 100% rename from test/range/to.wren rename to test/core/range/to.wren diff --git a/test/range/to_string.wren b/test/core/range/to_string.wren similarity index 100% rename from test/range/to_string.wren rename to test/core/range/to_string.wren diff --git a/test/range/type.wren b/test/core/range/type.wren similarity index 100% rename from test/range/type.wren rename to test/core/range/type.wren diff --git a/test/range/where.wren b/test/core/range/where.wren similarity index 100% rename from test/range/where.wren rename to test/core/range/where.wren diff --git a/test/sequence/count.wren b/test/core/sequence/count.wren similarity index 100% rename from test/sequence/count.wren rename to test/core/sequence/count.wren diff --git a/test/string/concatenation.wren b/test/core/string/concatenation.wren similarity index 100% rename from test/string/concatenation.wren rename to test/core/string/concatenation.wren diff --git a/test/string/concatenation_wrong_arg_type.wren b/test/core/string/concatenation_wrong_arg_type.wren similarity index 100% rename from test/string/concatenation_wrong_arg_type.wren rename to test/core/string/concatenation_wrong_arg_type.wren diff --git a/test/string/contains.wren b/test/core/string/contains.wren similarity index 100% rename from test/string/contains.wren rename to test/core/string/contains.wren diff --git a/test/string/contains_argument_not_string.wren b/test/core/string/contains_argument_not_string.wren similarity index 100% rename from test/string/contains_argument_not_string.wren rename to test/core/string/contains_argument_not_string.wren diff --git a/test/string/count.wren b/test/core/string/count.wren similarity index 100% rename from test/string/count.wren rename to test/core/string/count.wren diff --git a/test/string/ends_with.wren b/test/core/string/ends_with.wren similarity index 100% rename from test/string/ends_with.wren rename to test/core/string/ends_with.wren diff --git a/test/string/ends_with_invalid_arg.wren b/test/core/string/ends_with_invalid_arg.wren similarity index 100% rename from test/string/ends_with_invalid_arg.wren rename to test/core/string/ends_with_invalid_arg.wren diff --git a/test/string/equality.wren b/test/core/string/equality.wren similarity index 100% rename from test/string/equality.wren rename to test/core/string/equality.wren diff --git a/test/string/index_of.wren b/test/core/string/index_of.wren similarity index 100% rename from test/string/index_of.wren rename to test/core/string/index_of.wren diff --git a/test/string/index_of_invalid_arg.wren b/test/core/string/index_of_invalid_arg.wren similarity index 100% rename from test/string/index_of_invalid_arg.wren rename to test/core/string/index_of_invalid_arg.wren diff --git a/test/string/iterate.wren b/test/core/string/iterate.wren similarity index 100% rename from test/string/iterate.wren rename to test/core/string/iterate.wren diff --git a/test/string/iterate_iterator_not_int.wren b/test/core/string/iterate_iterator_not_int.wren similarity index 100% rename from test/string/iterate_iterator_not_int.wren rename to test/core/string/iterate_iterator_not_int.wren diff --git a/test/string/iterate_iterator_not_num.wren b/test/core/string/iterate_iterator_not_num.wren similarity index 100% rename from test/string/iterate_iterator_not_num.wren rename to test/core/string/iterate_iterator_not_num.wren diff --git a/test/string/iterator_value.wren b/test/core/string/iterator_value.wren similarity index 100% rename from test/string/iterator_value.wren rename to test/core/string/iterator_value.wren diff --git a/test/string/iterator_value_iterator_not_int.wren b/test/core/string/iterator_value_iterator_not_int.wren similarity index 100% rename from test/string/iterator_value_iterator_not_int.wren rename to test/core/string/iterator_value_iterator_not_int.wren diff --git a/test/string/iterator_value_iterator_not_num.wren b/test/core/string/iterator_value_iterator_not_num.wren similarity index 100% rename from test/string/iterator_value_iterator_not_num.wren rename to test/core/string/iterator_value_iterator_not_num.wren diff --git a/test/string/iterator_value_iterator_too_large.wren b/test/core/string/iterator_value_iterator_too_large.wren similarity index 100% rename from test/string/iterator_value_iterator_too_large.wren rename to test/core/string/iterator_value_iterator_too_large.wren diff --git a/test/string/iterator_value_iterator_too_small.wren b/test/core/string/iterator_value_iterator_too_small.wren similarity index 100% rename from test/string/iterator_value_iterator_too_small.wren rename to test/core/string/iterator_value_iterator_too_small.wren diff --git a/test/string/join.wren b/test/core/string/join.wren similarity index 100% rename from test/string/join.wren rename to test/core/string/join.wren diff --git a/test/string/join_separator_not_string.wren b/test/core/string/join_separator_not_string.wren similarity index 100% rename from test/string/join_separator_not_string.wren rename to test/core/string/join_separator_not_string.wren diff --git a/test/string/not.wren b/test/core/string/not.wren similarity index 100% rename from test/string/not.wren rename to test/core/string/not.wren diff --git a/test/string/starts_with.wren b/test/core/string/starts_with.wren similarity index 100% rename from test/string/starts_with.wren rename to test/core/string/starts_with.wren diff --git a/test/string/starts_with_invalid_arg.wren b/test/core/string/starts_with_invalid_arg.wren similarity index 100% rename from test/string/starts_with_invalid_arg.wren rename to test/core/string/starts_with_invalid_arg.wren diff --git a/test/string/subscript.wren b/test/core/string/subscript.wren similarity index 100% rename from test/string/subscript.wren rename to test/core/string/subscript.wren diff --git a/test/string/subscript_not_int.wren b/test/core/string/subscript_not_int.wren similarity index 100% rename from test/string/subscript_not_int.wren rename to test/core/string/subscript_not_int.wren diff --git a/test/string/subscript_not_num.wren b/test/core/string/subscript_not_num.wren similarity index 100% rename from test/string/subscript_not_num.wren rename to test/core/string/subscript_not_num.wren diff --git a/test/string/subscript_range.wren b/test/core/string/subscript_range.wren similarity index 100% rename from test/string/subscript_range.wren rename to test/core/string/subscript_range.wren diff --git a/test/string/subscript_range_from_not_int.wren b/test/core/string/subscript_range_from_not_int.wren similarity index 100% rename from test/string/subscript_range_from_not_int.wren rename to test/core/string/subscript_range_from_not_int.wren diff --git a/test/string/subscript_range_from_too_large.wren b/test/core/string/subscript_range_from_too_large.wren similarity index 100% rename from test/string/subscript_range_from_too_large.wren rename to test/core/string/subscript_range_from_too_large.wren diff --git a/test/string/subscript_range_from_too_small.wren b/test/core/string/subscript_range_from_too_small.wren similarity index 100% rename from test/string/subscript_range_from_too_small.wren rename to test/core/string/subscript_range_from_too_small.wren diff --git a/test/string/subscript_range_to_exclusive_too_large.wren b/test/core/string/subscript_range_to_exclusive_too_large.wren similarity index 100% rename from test/string/subscript_range_to_exclusive_too_large.wren rename to test/core/string/subscript_range_to_exclusive_too_large.wren diff --git a/test/string/subscript_range_to_exclusive_too_small.wren b/test/core/string/subscript_range_to_exclusive_too_small.wren similarity index 100% rename from test/string/subscript_range_to_exclusive_too_small.wren rename to test/core/string/subscript_range_to_exclusive_too_small.wren diff --git a/test/string/subscript_range_to_not_int.wren b/test/core/string/subscript_range_to_not_int.wren similarity index 100% rename from test/string/subscript_range_to_not_int.wren rename to test/core/string/subscript_range_to_not_int.wren diff --git a/test/string/subscript_range_to_too_large.wren b/test/core/string/subscript_range_to_too_large.wren similarity index 100% rename from test/string/subscript_range_to_too_large.wren rename to test/core/string/subscript_range_to_too_large.wren diff --git a/test/string/subscript_range_to_too_small.wren b/test/core/string/subscript_range_to_too_small.wren similarity index 100% rename from test/string/subscript_range_to_too_small.wren rename to test/core/string/subscript_range_to_too_small.wren diff --git a/test/string/subscript_too_large.wren b/test/core/string/subscript_too_large.wren similarity index 100% rename from test/string/subscript_too_large.wren rename to test/core/string/subscript_too_large.wren diff --git a/test/string/subscript_too_small.wren b/test/core/string/subscript_too_small.wren similarity index 100% rename from test/string/subscript_too_small.wren rename to test/core/string/subscript_too_small.wren diff --git a/test/string/to_string.wren b/test/core/string/to_string.wren similarity index 100% rename from test/string/to_string.wren rename to test/core/string/to_string.wren diff --git a/test/string/type.wren b/test/core/string/type.wren similarity index 100% rename from test/string/type.wren rename to test/core/string/type.wren diff --git a/test/assignment/associativity.wren b/test/language/assignment/associativity.wren similarity index 100% rename from test/assignment/associativity.wren rename to test/language/assignment/associativity.wren diff --git a/test/assignment/global.wren b/test/language/assignment/global.wren similarity index 100% rename from test/assignment/global.wren rename to test/language/assignment/global.wren diff --git a/test/assignment/grouping.wren b/test/language/assignment/grouping.wren similarity index 100% rename from test/assignment/grouping.wren rename to test/language/assignment/grouping.wren diff --git a/test/assignment/infix_operator.wren b/test/language/assignment/infix_operator.wren similarity index 100% rename from test/assignment/infix_operator.wren rename to test/language/assignment/infix_operator.wren diff --git a/test/assignment/is.wren b/test/language/assignment/is.wren similarity index 100% rename from test/assignment/is.wren rename to test/language/assignment/is.wren diff --git a/test/assignment/local.wren b/test/language/assignment/local.wren similarity index 100% rename from test/assignment/local.wren rename to test/language/assignment/local.wren diff --git a/test/assignment/prefix_operator.wren b/test/language/assignment/prefix_operator.wren similarity index 100% rename from test/assignment/prefix_operator.wren rename to test/language/assignment/prefix_operator.wren diff --git a/test/assignment/syntax.wren b/test/language/assignment/syntax.wren similarity index 100% rename from test/assignment/syntax.wren rename to test/language/assignment/syntax.wren diff --git a/test/assignment/undefined.wren b/test/language/assignment/undefined.wren similarity index 100% rename from test/assignment/undefined.wren rename to test/language/assignment/undefined.wren diff --git a/test/bitwise_precedence.wren b/test/language/bitwise_precedence.wren similarity index 100% rename from test/bitwise_precedence.wren rename to test/language/bitwise_precedence.wren diff --git a/test/break/closure_in_for.wren b/test/language/break/closure_in_for.wren similarity index 100% rename from test/break/closure_in_for.wren rename to test/language/break/closure_in_for.wren diff --git a/test/break/closure_in_while.wren b/test/language/break/closure_in_while.wren similarity index 100% rename from test/break/closure_in_while.wren rename to test/language/break/closure_in_while.wren diff --git a/test/break/exit_local_scopes.wren b/test/language/break/exit_local_scopes.wren similarity index 100% rename from test/break/exit_local_scopes.wren rename to test/language/break/exit_local_scopes.wren diff --git a/test/break/in_for_loop.wren b/test/language/break/in_for_loop.wren similarity index 100% rename from test/break/in_for_loop.wren rename to test/language/break/in_for_loop.wren diff --git a/test/break/in_function_in_loop.wren b/test/language/break/in_function_in_loop.wren similarity index 100% rename from test/break/in_function_in_loop.wren rename to test/language/break/in_function_in_loop.wren diff --git a/test/break/in_method_in_loop.wren b/test/language/break/in_method_in_loop.wren similarity index 100% rename from test/break/in_method_in_loop.wren rename to test/language/break/in_method_in_loop.wren diff --git a/test/break/in_while_loop.wren b/test/language/break/in_while_loop.wren similarity index 100% rename from test/break/in_while_loop.wren rename to test/language/break/in_while_loop.wren diff --git a/test/break/nested_for_loop.wren b/test/language/break/nested_for_loop.wren similarity index 100% rename from test/break/nested_for_loop.wren rename to test/language/break/nested_for_loop.wren diff --git a/test/break/nested_while_loop.wren b/test/language/break/nested_while_loop.wren similarity index 100% rename from test/break/nested_while_loop.wren rename to test/language/break/nested_while_loop.wren diff --git a/test/break/outside_loop.wren b/test/language/break/outside_loop.wren similarity index 100% rename from test/break/outside_loop.wren rename to test/language/break/outside_loop.wren diff --git a/test/class/name_inside_body.wren b/test/language/class/name_inside_body.wren similarity index 100% rename from test/class/name_inside_body.wren rename to test/language/class/name_inside_body.wren diff --git a/test/class/new.wren b/test/language/class/new.wren similarity index 100% rename from test/class/new.wren rename to test/language/class/new.wren diff --git a/test/class/newline_after_class.wren b/test/language/class/newline_after_class.wren similarity index 100% rename from test/class/newline_after_class.wren rename to test/language/class/newline_after_class.wren diff --git a/test/class/newline_after_static.wren b/test/language/class/newline_after_static.wren similarity index 100% rename from test/class/newline_after_static.wren rename to test/language/class/newline_after_static.wren diff --git a/test/class/syntax.wren b/test/language/class/syntax.wren similarity index 100% rename from test/class/syntax.wren rename to test/language/class/syntax.wren diff --git a/test/closure/assign_to_closure.wren b/test/language/closure/assign_to_closure.wren similarity index 100% rename from test/closure/assign_to_closure.wren rename to test/language/closure/assign_to_closure.wren diff --git a/test/closure/close_over_function_parameter.wren b/test/language/closure/close_over_function_parameter.wren similarity index 100% rename from test/closure/close_over_function_parameter.wren rename to test/language/closure/close_over_function_parameter.wren diff --git a/test/closure/close_over_later_variable.wren b/test/language/closure/close_over_later_variable.wren similarity index 100% rename from test/closure/close_over_later_variable.wren rename to test/language/closure/close_over_later_variable.wren diff --git a/test/closure/close_over_method_parameter.wren b/test/language/closure/close_over_method_parameter.wren similarity index 100% rename from test/closure/close_over_method_parameter.wren rename to test/language/closure/close_over_method_parameter.wren diff --git a/test/closure/closed_closure_in_function.wren b/test/language/closure/closed_closure_in_function.wren similarity index 100% rename from test/closure/closed_closure_in_function.wren rename to test/language/closure/closed_closure_in_function.wren diff --git a/test/closure/closed_closure_in_method.wren b/test/language/closure/closed_closure_in_method.wren similarity index 100% rename from test/closure/closed_closure_in_method.wren rename to test/language/closure/closed_closure_in_method.wren diff --git a/test/closure/nested_closure.wren b/test/language/closure/nested_closure.wren similarity index 100% rename from test/closure/nested_closure.wren rename to test/language/closure/nested_closure.wren diff --git a/test/closure/open_closure_in_function.wren b/test/language/closure/open_closure_in_function.wren similarity index 100% rename from test/closure/open_closure_in_function.wren rename to test/language/closure/open_closure_in_function.wren diff --git a/test/closure/open_closure_in_method.wren b/test/language/closure/open_closure_in_method.wren similarity index 100% rename from test/closure/open_closure_in_method.wren rename to test/language/closure/open_closure_in_method.wren diff --git a/test/closure/reference_closure_multiple_times.wren b/test/language/closure/reference_closure_multiple_times.wren similarity index 100% rename from test/closure/reference_closure_multiple_times.wren rename to test/language/closure/reference_closure_multiple_times.wren diff --git a/test/closure/reuse_closure_slot.wren b/test/language/closure/reuse_closure_slot.wren similarity index 100% rename from test/closure/reuse_closure_slot.wren rename to test/language/closure/reuse_closure_slot.wren diff --git a/test/closure/shadow_closure_with_local.wren b/test/language/closure/shadow_closure_with_local.wren similarity index 100% rename from test/closure/shadow_closure_with_local.wren rename to test/language/closure/shadow_closure_with_local.wren diff --git a/test/comments/block.wren b/test/language/comments/block.wren similarity index 100% rename from test/comments/block.wren rename to test/language/comments/block.wren diff --git a/test/comments/block_at_eof.wren b/test/language/comments/block_at_eof.wren similarity index 100% rename from test/comments/block_at_eof.wren rename to test/language/comments/block_at_eof.wren diff --git a/test/comments/line_at_eof.wren b/test/language/comments/line_at_eof.wren similarity index 100% rename from test/comments/line_at_eof.wren rename to test/language/comments/line_at_eof.wren diff --git a/test/comments/only_line_comment.wren b/test/language/comments/only_line_comment.wren similarity index 100% rename from test/comments/only_line_comment.wren rename to test/language/comments/only_line_comment.wren diff --git a/test/comments/only_line_comment_and_line.wren b/test/language/comments/only_line_comment_and_line.wren similarity index 100% rename from test/comments/only_line_comment_and_line.wren rename to test/language/comments/only_line_comment_and_line.wren diff --git a/test/comments/unicode.wren b/test/language/comments/unicode.wren similarity index 100% rename from test/comments/unicode.wren rename to test/language/comments/unicode.wren diff --git a/test/comments/unterminated_block.wren b/test/language/comments/unterminated_block.wren similarity index 100% rename from test/comments/unterminated_block.wren rename to test/language/comments/unterminated_block.wren diff --git a/test/comments/unterminated_nested_block.wren b/test/language/comments/unterminated_nested_block.wren similarity index 100% rename from test/comments/unterminated_nested_block.wren rename to test/language/comments/unterminated_nested_block.wren diff --git a/test/conditional/conditional_in_then.wren b/test/language/conditional/conditional_in_then.wren similarity index 100% rename from test/conditional/conditional_in_then.wren rename to test/language/conditional/conditional_in_then.wren diff --git a/test/conditional/missing_colon.wren b/test/language/conditional/missing_colon.wren similarity index 100% rename from test/conditional/missing_colon.wren rename to test/language/conditional/missing_colon.wren diff --git a/test/conditional/missing_condition.wren b/test/language/conditional/missing_condition.wren similarity index 100% rename from test/conditional/missing_condition.wren rename to test/language/conditional/missing_condition.wren diff --git a/test/conditional/missing_else.wren b/test/language/conditional/missing_else.wren similarity index 100% rename from test/conditional/missing_else.wren rename to test/language/conditional/missing_else.wren diff --git a/test/conditional/missing_question.wren b/test/language/conditional/missing_question.wren similarity index 100% rename from test/conditional/missing_question.wren rename to test/language/conditional/missing_question.wren diff --git a/test/conditional/missing_then.wren b/test/language/conditional/missing_then.wren similarity index 100% rename from test/conditional/missing_then.wren rename to test/language/conditional/missing_then.wren diff --git a/test/conditional/newlines.wren b/test/language/conditional/newlines.wren similarity index 100% rename from test/conditional/newlines.wren rename to test/language/conditional/newlines.wren diff --git a/test/conditional/precedence.wren b/test/language/conditional/precedence.wren similarity index 100% rename from test/conditional/precedence.wren rename to test/language/conditional/precedence.wren diff --git a/test/conditional/short_circuit.wren b/test/language/conditional/short_circuit.wren similarity index 100% rename from test/conditional/short_circuit.wren rename to test/language/conditional/short_circuit.wren diff --git a/test/constructor/default.wren b/test/language/constructor/default.wren similarity index 100% rename from test/constructor/default.wren rename to test/language/constructor/default.wren diff --git a/test/constructor/infix_class_expression.wren b/test/language/constructor/infix_class_expression.wren similarity index 100% rename from test/constructor/infix_class_expression.wren rename to test/language/constructor/infix_class_expression.wren diff --git a/test/constructor/new.wren b/test/language/constructor/new.wren similarity index 67% rename from test/constructor/new.wren rename to test/language/constructor/new.wren index 2264c3be..f58f490b 100644 --- a/test/constructor/new.wren +++ b/test/language/constructor/new.wren @@ -1,5 +1,6 @@ class Foo { - new { IO.print("zero") } + new { IO.print("none") } + new() { IO.print("zero") } new(a) { IO.print(a) } new(a, b) { IO.print(a + b) } @@ -7,11 +8,12 @@ class Foo { } // Can overload by arity. -new Foo // expect: zero +new Foo // expect: none +new Foo() // expect: zero new Foo("one") // expect: one new Foo("one", "two") // expect: onetwo // Returns the new instance. -var foo = new Foo // expect: zero +var foo = new Foo // expect: none IO.print(foo is Foo) // expect: true IO.print(foo.toString) // expect: Foo diff --git a/test/constructor/superclass.wren b/test/language/constructor/superclass.wren similarity index 100% rename from test/constructor/superclass.wren rename to test/language/constructor/superclass.wren diff --git a/test/empty_block.wren b/test/language/empty_block.wren similarity index 100% rename from test/empty_block.wren rename to test/language/empty_block.wren diff --git a/test/empty_file.wren b/test/language/empty_file.wren similarity index 100% rename from test/empty_file.wren rename to test/language/empty_file.wren diff --git a/test/fiber/closure.wren b/test/language/fiber/closure.wren similarity index 100% rename from test/fiber/closure.wren rename to test/language/fiber/closure.wren diff --git a/test/field/closure.wren b/test/language/field/closure.wren similarity index 100% rename from test/field/closure.wren rename to test/language/field/closure.wren diff --git a/test/field/default_to_null.wren b/test/language/field/default_to_null.wren similarity index 100% rename from test/field/default_to_null.wren rename to test/language/field/default_to_null.wren diff --git a/test/field/in_fn_in_static_method.wren b/test/language/field/in_fn_in_static_method.wren similarity index 100% rename from test/field/in_fn_in_static_method.wren rename to test/language/field/in_fn_in_static_method.wren diff --git a/test/field/in_static_method.wren b/test/language/field/in_static_method.wren similarity index 100% rename from test/field/in_static_method.wren rename to test/language/field/in_static_method.wren diff --git a/test/field/in_static_method_in_nested_class.wren b/test/language/field/in_static_method_in_nested_class.wren similarity index 100% rename from test/field/in_static_method_in_nested_class.wren rename to test/language/field/in_static_method_in_nested_class.wren diff --git a/test/field/multiple.wren b/test/language/field/multiple.wren similarity index 100% rename from test/field/multiple.wren rename to test/language/field/multiple.wren diff --git a/test/field/nested_class.wren b/test/language/field/nested_class.wren similarity index 100% rename from test/field/nested_class.wren rename to test/language/field/nested_class.wren diff --git a/test/field/object_reference.wren b/test/language/field/object_reference.wren similarity index 100% rename from test/field/object_reference.wren rename to test/language/field/object_reference.wren diff --git a/test/field/outside_class.wren b/test/language/field/outside_class.wren similarity index 100% rename from test/field/outside_class.wren rename to test/language/field/outside_class.wren diff --git a/test/field/use_before_set.wren b/test/language/field/use_before_set.wren similarity index 100% rename from test/field/use_before_set.wren rename to test/language/field/use_before_set.wren diff --git a/test/for/close_over_loop_variable.wren b/test/language/for/close_over_loop_variable.wren similarity index 100% rename from test/for/close_over_loop_variable.wren rename to test/language/for/close_over_loop_variable.wren diff --git a/test/for/closure_in_body.wren b/test/language/for/closure_in_body.wren similarity index 100% rename from test/for/closure_in_body.wren rename to test/language/for/closure_in_body.wren diff --git a/test/for/newline_after_for.wren b/test/language/for/newline_after_for.wren similarity index 100% rename from test/for/newline_after_for.wren rename to test/language/for/newline_after_for.wren diff --git a/test/for/newline_before_in.wren b/test/language/for/newline_before_in.wren similarity index 100% rename from test/for/newline_before_in.wren rename to test/language/for/newline_before_in.wren diff --git a/test/for/only_evaluate_sequence_once.wren b/test/language/for/only_evaluate_sequence_once.wren similarity index 100% rename from test/for/only_evaluate_sequence_once.wren rename to test/language/for/only_evaluate_sequence_once.wren diff --git a/test/for/return_closure.wren b/test/language/for/return_closure.wren similarity index 100% rename from test/for/return_closure.wren rename to test/language/for/return_closure.wren diff --git a/test/for/return_inside.wren b/test/language/for/return_inside.wren similarity index 100% rename from test/for/return_inside.wren rename to test/language/for/return_inside.wren diff --git a/test/for/syntax.wren b/test/language/for/syntax.wren similarity index 100% rename from test/for/syntax.wren rename to test/language/for/syntax.wren diff --git a/test/for/truth.wren b/test/language/for/truth.wren similarity index 100% rename from test/for/truth.wren rename to test/language/for/truth.wren diff --git a/test/function/empty_body.wren b/test/language/function/empty_body.wren similarity index 100% rename from test/function/empty_body.wren rename to test/language/function/empty_body.wren diff --git a/test/function/newline_body.wren b/test/language/function/newline_body.wren similarity index 100% rename from test/function/newline_body.wren rename to test/language/function/newline_body.wren diff --git a/test/function/newline_in_expression_block.wren b/test/language/function/newline_in_expression_block.wren similarity index 100% rename from test/function/newline_in_expression_block.wren rename to test/language/function/newline_in_expression_block.wren diff --git a/test/function/no_newline_before_close.wren b/test/language/function/no_newline_before_close.wren similarity index 100% rename from test/function/no_newline_before_close.wren rename to test/language/function/no_newline_before_close.wren diff --git a/test/function/no_parameters.wren b/test/language/function/no_parameters.wren similarity index 100% rename from test/function/no_parameters.wren rename to test/language/function/no_parameters.wren diff --git a/test/function/parameters.wren b/test/language/function/parameters.wren similarity index 100% rename from test/function/parameters.wren rename to test/language/function/parameters.wren diff --git a/test/function/syntax.wren b/test/language/function/syntax.wren similarity index 100% rename from test/function/syntax.wren rename to test/language/function/syntax.wren diff --git a/test/if/dangling_else.wren b/test/language/if/dangling_else.wren similarity index 100% rename from test/if/dangling_else.wren rename to test/language/if/dangling_else.wren diff --git a/test/if/else.wren b/test/language/if/else.wren similarity index 100% rename from test/if/else.wren rename to test/language/if/else.wren diff --git a/test/if/if.wren b/test/language/if/if.wren similarity index 100% rename from test/if/if.wren rename to test/language/if/if.wren diff --git a/test/if/newline_after_else.wren b/test/language/if/newline_after_else.wren similarity index 100% rename from test/if/newline_after_else.wren rename to test/language/if/newline_after_else.wren diff --git a/test/if/newline_after_if.wren b/test/language/if/newline_after_if.wren similarity index 100% rename from test/if/newline_after_if.wren rename to test/language/if/newline_after_if.wren diff --git a/test/if/truth.wren b/test/language/if/truth.wren similarity index 100% rename from test/if/truth.wren rename to test/language/if/truth.wren diff --git a/test/ignore_carriage_returns.wren b/test/language/ignore_carriage_returns.wren similarity index 100% rename from test/ignore_carriage_returns.wren rename to test/language/ignore_carriage_returns.wren diff --git a/test/implicit_receiver/inherited_methods.wren b/test/language/implicit_receiver/inherited_methods.wren similarity index 100% rename from test/implicit_receiver/inherited_methods.wren rename to test/language/implicit_receiver/inherited_methods.wren diff --git a/test/implicit_receiver/instance_methods.wren b/test/language/implicit_receiver/instance_methods.wren similarity index 100% rename from test/implicit_receiver/instance_methods.wren rename to test/language/implicit_receiver/instance_methods.wren diff --git a/test/implicit_receiver/locals_shadow_getter.wren b/test/language/implicit_receiver/locals_shadow_getter.wren similarity index 100% rename from test/implicit_receiver/locals_shadow_getter.wren rename to test/language/implicit_receiver/locals_shadow_getter.wren diff --git a/test/implicit_receiver/locals_shadow_setter.wren b/test/language/implicit_receiver/locals_shadow_setter.wren similarity index 100% rename from test/implicit_receiver/locals_shadow_setter.wren rename to test/language/implicit_receiver/locals_shadow_setter.wren diff --git a/test/implicit_receiver/nested_class.wren b/test/language/implicit_receiver/nested_class.wren similarity index 100% rename from test/implicit_receiver/nested_class.wren rename to test/language/implicit_receiver/nested_class.wren diff --git a/test/implicit_receiver/static_methods.wren b/test/language/implicit_receiver/static_methods.wren similarity index 100% rename from test/implicit_receiver/static_methods.wren rename to test/language/implicit_receiver/static_methods.wren diff --git a/test/inheritance/do_not_inherit_static_methods.wren b/test/language/inheritance/do_not_inherit_static_methods.wren similarity index 100% rename from test/inheritance/do_not_inherit_static_methods.wren rename to test/language/inheritance/do_not_inherit_static_methods.wren diff --git a/test/inheritance/inherit_fields.wren b/test/language/inheritance/inherit_fields.wren similarity index 100% rename from test/inheritance/inherit_fields.wren rename to test/language/inheritance/inherit_fields.wren diff --git a/test/inheritance/inherit_from_class.wren b/test/language/inheritance/inherit_from_class.wren similarity index 100% rename from test/inheritance/inherit_from_class.wren rename to test/language/inheritance/inherit_from_class.wren diff --git a/test/inheritance/inherit_from_closure.wren b/test/language/inheritance/inherit_from_closure.wren similarity index 100% rename from test/inheritance/inherit_from_closure.wren rename to test/language/inheritance/inherit_from_closure.wren diff --git a/test/inheritance/inherit_from_fiber.wren b/test/language/inheritance/inherit_from_fiber.wren similarity index 100% rename from test/inheritance/inherit_from_fiber.wren rename to test/language/inheritance/inherit_from_fiber.wren diff --git a/test/inheritance/inherit_from_fn.wren b/test/language/inheritance/inherit_from_fn.wren similarity index 100% rename from test/inheritance/inherit_from_fn.wren rename to test/language/inheritance/inherit_from_fn.wren diff --git a/test/inheritance/inherit_from_list.wren b/test/language/inheritance/inherit_from_list.wren similarity index 100% rename from test/inheritance/inherit_from_list.wren rename to test/language/inheritance/inherit_from_list.wren diff --git a/test/inheritance/inherit_from_map.wren b/test/language/inheritance/inherit_from_map.wren similarity index 100% rename from test/inheritance/inherit_from_map.wren rename to test/language/inheritance/inherit_from_map.wren diff --git a/test/inheritance/inherit_from_nonclass.wren b/test/language/inheritance/inherit_from_nonclass.wren similarity index 100% rename from test/inheritance/inherit_from_nonclass.wren rename to test/language/inheritance/inherit_from_nonclass.wren diff --git a/test/inheritance/inherit_from_range.wren b/test/language/inheritance/inherit_from_range.wren similarity index 100% rename from test/inheritance/inherit_from_range.wren rename to test/language/inheritance/inherit_from_range.wren diff --git a/test/inheritance/inherit_from_string.wren b/test/language/inheritance/inherit_from_string.wren similarity index 100% rename from test/inheritance/inherit_from_string.wren rename to test/language/inheritance/inherit_from_string.wren diff --git a/test/inheritance/inherit_methods.wren b/test/language/inheritance/inherit_methods.wren similarity index 100% rename from test/inheritance/inherit_methods.wren rename to test/language/inheritance/inherit_methods.wren diff --git a/test/inheritance/inherited_fields_in_closure.wren b/test/language/inheritance/inherited_fields_in_closure.wren similarity index 100% rename from test/inheritance/inherited_fields_in_closure.wren rename to test/language/inheritance/inherited_fields_in_closure.wren diff --git a/test/inheritance/is.wren b/test/language/inheritance/is.wren similarity index 100% rename from test/inheritance/is.wren rename to test/language/inheritance/is.wren diff --git a/test/is/is.wren b/test/language/is/is.wren similarity index 100% rename from test/is/is.wren rename to test/language/is/is.wren diff --git a/test/is/nonclass_on_right.wren b/test/language/is/nonclass_on_right.wren similarity index 100% rename from test/is/nonclass_on_right.wren rename to test/language/is/nonclass_on_right.wren diff --git a/test/list/eof_after_comma.wren b/test/language/list/eof_after_comma.wren similarity index 100% rename from test/list/eof_after_comma.wren rename to test/language/list/eof_after_comma.wren diff --git a/test/list/eof_after_element.wren b/test/language/list/eof_after_element.wren similarity index 100% rename from test/list/eof_after_element.wren rename to test/language/list/eof_after_element.wren diff --git a/test/list/grow_shrink.wren b/test/language/list/grow_shrink.wren similarity index 100% rename from test/list/grow_shrink.wren rename to test/language/list/grow_shrink.wren diff --git a/test/list/newline_before_comma.wren b/test/language/list/newline_before_comma.wren similarity index 100% rename from test/list/newline_before_comma.wren rename to test/language/list/newline_before_comma.wren diff --git a/test/list/newlines.wren b/test/language/list/newlines.wren similarity index 100% rename from test/list/newlines.wren rename to test/language/list/newlines.wren diff --git a/test/logical_operator/and.wren b/test/language/logical_operator/and.wren similarity index 100% rename from test/logical_operator/and.wren rename to test/language/logical_operator/and.wren diff --git a/test/logical_operator/and_truth.wren b/test/language/logical_operator/and_truth.wren similarity index 100% rename from test/logical_operator/and_truth.wren rename to test/language/logical_operator/and_truth.wren diff --git a/test/logical_operator/or.wren b/test/language/logical_operator/or.wren similarity index 100% rename from test/logical_operator/or.wren rename to test/language/logical_operator/or.wren diff --git a/test/logical_operator/or_truth.wren b/test/language/logical_operator/or_truth.wren similarity index 100% rename from test/logical_operator/or_truth.wren rename to test/language/logical_operator/or_truth.wren diff --git a/test/map/eof_after_colon.wren b/test/language/map/eof_after_colon.wren similarity index 100% rename from test/map/eof_after_colon.wren rename to test/language/map/eof_after_colon.wren diff --git a/test/map/eof_after_comma.wren b/test/language/map/eof_after_comma.wren similarity index 100% rename from test/map/eof_after_comma.wren rename to test/language/map/eof_after_comma.wren diff --git a/test/map/eof_after_key.wren b/test/language/map/eof_after_key.wren similarity index 100% rename from test/map/eof_after_key.wren rename to test/language/map/eof_after_key.wren diff --git a/test/map/eof_after_value.wren b/test/language/map/eof_after_value.wren similarity index 100% rename from test/map/eof_after_value.wren rename to test/language/map/eof_after_value.wren diff --git a/test/map/grow_and_shrink.wren b/test/language/map/grow_and_shrink.wren similarity index 100% rename from test/map/grow_and_shrink.wren rename to test/language/map/grow_and_shrink.wren diff --git a/test/method/arity.wren b/test/language/method/arity.wren similarity index 100% rename from test/method/arity.wren rename to test/language/method/arity.wren diff --git a/test/method/call_name_too_long.wren b/test/language/method/call_name_too_long.wren similarity index 100% rename from test/method/call_name_too_long.wren rename to test/language/method/call_name_too_long.wren diff --git a/test/method/empty_block.wren b/test/language/method/empty_block.wren similarity index 100% rename from test/method/empty_block.wren rename to test/language/method/empty_block.wren diff --git a/test/method/empty_subscript_call.wren b/test/language/method/empty_subscript_call.wren similarity index 100% rename from test/method/empty_subscript_call.wren rename to test/language/method/empty_subscript_call.wren diff --git a/test/method/empty_subscript_definition.wren b/test/language/method/empty_subscript_definition.wren similarity index 100% rename from test/method/empty_subscript_definition.wren rename to test/language/method/empty_subscript_definition.wren diff --git a/test/method/long_name.wren b/test/language/method/long_name.wren similarity index 100% rename from test/method/long_name.wren rename to test/language/method/long_name.wren diff --git a/test/method/many_methods.wren b/test/language/method/many_methods.wren similarity index 100% rename from test/method/many_methods.wren rename to test/language/method/many_methods.wren diff --git a/test/method/name_too_long.wren b/test/language/method/name_too_long.wren similarity index 100% rename from test/method/name_too_long.wren rename to test/language/method/name_too_long.wren diff --git a/test/method/newlines.wren b/test/language/method/newlines.wren similarity index 100% rename from test/method/newlines.wren rename to test/language/method/newlines.wren diff --git a/test/method/not_found.wren b/test/language/method/not_found.wren similarity index 100% rename from test/method/not_found.wren rename to test/language/method/not_found.wren diff --git a/test/method/not_found_eleven_arguments.wren b/test/language/method/not_found_eleven_arguments.wren similarity index 100% rename from test/method/not_found_eleven_arguments.wren rename to test/language/method/not_found_eleven_arguments.wren diff --git a/test/method/not_found_multiple_arguments.wren b/test/language/method/not_found_multiple_arguments.wren similarity index 100% rename from test/method/not_found_multiple_arguments.wren rename to test/language/method/not_found_multiple_arguments.wren diff --git a/test/method/not_found_one_argument.wren b/test/language/method/not_found_one_argument.wren similarity index 100% rename from test/method/not_found_one_argument.wren rename to test/language/method/not_found_one_argument.wren diff --git a/test/method/operators.wren b/test/language/method/operators.wren similarity index 100% rename from test/method/operators.wren rename to test/language/method/operators.wren diff --git a/test/method/static.wren b/test/language/method/static.wren similarity index 100% rename from test/method/static.wren rename to test/language/method/static.wren diff --git a/test/method/static_method_not_found.wren b/test/language/method/static_method_not_found.wren similarity index 100% rename from test/method/static_method_not_found.wren rename to test/language/method/static_method_not_found.wren diff --git a/test/method/subscript_operators.wren b/test/language/method/subscript_operators.wren similarity index 100% rename from test/method/subscript_operators.wren rename to test/language/method/subscript_operators.wren diff --git a/test/method/subscript_setter_too_many_arguments.wren b/test/language/method/subscript_setter_too_many_arguments.wren similarity index 100% rename from test/method/subscript_setter_too_many_arguments.wren rename to test/language/method/subscript_setter_too_many_arguments.wren diff --git a/test/method/subscript_too_many_arguments.wren b/test/language/method/subscript_too_many_arguments.wren similarity index 100% rename from test/method/subscript_too_many_arguments.wren rename to test/language/method/subscript_too_many_arguments.wren diff --git a/test/method/too_many_arguments.wren b/test/language/method/too_many_arguments.wren similarity index 100% rename from test/method/too_many_arguments.wren rename to test/language/method/too_many_arguments.wren diff --git a/test/method/too_many_parameters.wren b/test/language/method/too_many_parameters.wren similarity index 100% rename from test/method/too_many_parameters.wren rename to test/language/method/too_many_parameters.wren diff --git a/test/module/change_imported_value/change_imported_value.wren b/test/language/module/change_imported_value/change_imported_value.wren similarity index 100% rename from test/module/change_imported_value/change_imported_value.wren rename to test/language/module/change_imported_value/change_imported_value.wren diff --git a/test/module/change_imported_value/module.wren b/test/language/module/change_imported_value/module.wren similarity index 100% rename from test/module/change_imported_value/module.wren rename to test/language/module/change_imported_value/module.wren diff --git a/test/module/cyclic_import/a.wren b/test/language/module/cyclic_import/a.wren similarity index 100% rename from test/module/cyclic_import/a.wren rename to test/language/module/cyclic_import/a.wren diff --git a/test/module/cyclic_import/b.wren b/test/language/module/cyclic_import/b.wren similarity index 100% rename from test/module/cyclic_import/b.wren rename to test/language/module/cyclic_import/b.wren diff --git a/test/module/cyclic_import/cyclic_import.wren b/test/language/module/cyclic_import/cyclic_import.wren similarity index 100% rename from test/module/cyclic_import/cyclic_import.wren rename to test/language/module/cyclic_import/cyclic_import.wren diff --git a/test/module/implicitly_imports_core/implicitly_imports_core.wren b/test/language/module/implicitly_imports_core/implicitly_imports_core.wren similarity index 100% rename from test/module/implicitly_imports_core/implicitly_imports_core.wren rename to test/language/module/implicitly_imports_core/implicitly_imports_core.wren diff --git a/test/module/implicitly_imports_core/module.wren b/test/language/module/implicitly_imports_core/module.wren similarity index 100% rename from test/module/implicitly_imports_core/module.wren rename to test/language/module/implicitly_imports_core/module.wren diff --git a/test/module/inside_block/inside_block.wren b/test/language/module/inside_block/inside_block.wren similarity index 100% rename from test/module/inside_block/inside_block.wren rename to test/language/module/inside_block/inside_block.wren diff --git a/test/module/inside_block/module.wren b/test/language/module/inside_block/module.wren similarity index 100% rename from test/module/inside_block/module.wren rename to test/language/module/inside_block/module.wren diff --git a/test/module/missing_for.wren b/test/language/module/missing_for.wren similarity index 100% rename from test/module/missing_for.wren rename to test/language/module/missing_for.wren diff --git a/test/module/missing_string_after_import.wren b/test/language/module/missing_string_after_import.wren similarity index 100% rename from test/module/missing_string_after_import.wren rename to test/language/module/missing_string_after_import.wren diff --git a/test/module/multiple_variables/module.wren b/test/language/module/multiple_variables/module.wren similarity index 100% rename from test/module/multiple_variables/module.wren rename to test/language/module/multiple_variables/module.wren diff --git a/test/module/multiple_variables/multiple_variables.wren b/test/language/module/multiple_variables/multiple_variables.wren similarity index 100% rename from test/module/multiple_variables/multiple_variables.wren rename to test/language/module/multiple_variables/multiple_variables.wren diff --git a/test/module/name_collision.wren b/test/language/module/name_collision.wren similarity index 100% rename from test/module/name_collision.wren rename to test/language/module/name_collision.wren diff --git a/test/module/no_variable/module.wren b/test/language/module/no_variable/module.wren similarity index 100% rename from test/module/no_variable/module.wren rename to test/language/module/no_variable/module.wren diff --git a/test/module/no_variable/no_variable.wren b/test/language/module/no_variable/no_variable.wren similarity index 100% rename from test/module/no_variable/no_variable.wren rename to test/language/module/no_variable/no_variable.wren diff --git a/test/module/shared_import/a.wren b/test/language/module/shared_import/a.wren similarity index 100% rename from test/module/shared_import/a.wren rename to test/language/module/shared_import/a.wren diff --git a/test/module/shared_import/b.wren b/test/language/module/shared_import/b.wren similarity index 100% rename from test/module/shared_import/b.wren rename to test/language/module/shared_import/b.wren diff --git a/test/module/shared_import/shared.wren b/test/language/module/shared_import/shared.wren similarity index 100% rename from test/module/shared_import/shared.wren rename to test/language/module/shared_import/shared.wren diff --git a/test/module/shared_import/shared_import.wren b/test/language/module/shared_import/shared_import.wren similarity index 100% rename from test/module/shared_import/shared_import.wren rename to test/language/module/shared_import/shared_import.wren diff --git a/test/module/simple_import/module.wren b/test/language/module/simple_import/module.wren similarity index 100% rename from test/module/simple_import/module.wren rename to test/language/module/simple_import/module.wren diff --git a/test/module/simple_import/simple_import.wren b/test/language/module/simple_import/simple_import.wren similarity index 100% rename from test/module/simple_import/simple_import.wren rename to test/language/module/simple_import/simple_import.wren diff --git a/test/module/unknown_module.wren b/test/language/module/unknown_module.wren similarity index 100% rename from test/module/unknown_module.wren rename to test/language/module/unknown_module.wren diff --git a/test/module/unknown_variable/module.wren b/test/language/module/unknown_variable/module.wren similarity index 100% rename from test/module/unknown_variable/module.wren rename to test/language/module/unknown_variable/module.wren diff --git a/test/module/unknown_variable/unknown_variable.wren b/test/language/module/unknown_variable/unknown_variable.wren similarity index 100% rename from test/module/unknown_variable/unknown_variable.wren rename to test/language/module/unknown_variable/unknown_variable.wren diff --git a/test/new/new_on_nonclass.wren b/test/language/new/new_on_nonclass.wren similarity index 100% rename from test/new/new_on_nonclass.wren rename to test/language/new/new_on_nonclass.wren diff --git a/test/new/newline_after_new.wren b/test/language/new/newline_after_new.wren similarity index 100% rename from test/new/newline_after_new.wren rename to test/language/new/newline_after_new.wren diff --git a/test/no_trailing_newline.wren b/test/language/no_trailing_newline.wren similarity index 100% rename from test/no_trailing_newline.wren rename to test/language/no_trailing_newline.wren diff --git a/test/nonlocal/assignment.wren b/test/language/nonlocal/assignment.wren similarity index 100% rename from test/nonlocal/assignment.wren rename to test/language/nonlocal/assignment.wren diff --git a/test/nonlocal/duplicate_nonlocal.wren b/test/language/nonlocal/duplicate_nonlocal.wren similarity index 100% rename from test/nonlocal/duplicate_nonlocal.wren rename to test/language/nonlocal/duplicate_nonlocal.wren diff --git a/test/nonlocal/in_block_scope.wren b/test/language/nonlocal/in_block_scope.wren similarity index 100% rename from test/nonlocal/in_block_scope.wren rename to test/language/nonlocal/in_block_scope.wren diff --git a/test/nonlocal/mutual_recursion.wren b/test/language/nonlocal/mutual_recursion.wren similarity index 100% rename from test/nonlocal/mutual_recursion.wren rename to test/language/nonlocal/mutual_recursion.wren diff --git a/test/nonlocal/null_before_defined.wren b/test/language/nonlocal/null_before_defined.wren similarity index 100% rename from test/nonlocal/null_before_defined.wren rename to test/language/nonlocal/null_before_defined.wren diff --git a/test/nonlocal/undefined.wren b/test/language/nonlocal/undefined.wren similarity index 100% rename from test/nonlocal/undefined.wren rename to test/language/nonlocal/undefined.wren diff --git a/test/nonlocal/use_in_function.wren b/test/language/nonlocal/use_in_function.wren similarity index 100% rename from test/nonlocal/use_in_function.wren rename to test/language/nonlocal/use_in_function.wren diff --git a/test/nonlocal/use_in_function_before_definition.wren b/test/language/nonlocal/use_in_function_before_definition.wren similarity index 100% rename from test/nonlocal/use_in_function_before_definition.wren rename to test/language/nonlocal/use_in_function_before_definition.wren diff --git a/test/nonlocal/use_in_method.wren b/test/language/nonlocal/use_in_method.wren similarity index 100% rename from test/nonlocal/use_in_method.wren rename to test/language/nonlocal/use_in_method.wren diff --git a/test/nonlocal/use_in_method_before_definition.wren b/test/language/nonlocal/use_in_method_before_definition.wren similarity index 100% rename from test/nonlocal/use_in_method_before_definition.wren rename to test/language/nonlocal/use_in_method_before_definition.wren diff --git a/test/null/literal.wren b/test/language/null/literal.wren similarity index 100% rename from test/null/literal.wren rename to test/language/null/literal.wren diff --git a/test/number/hex_literals.wren b/test/language/number/hex_literals.wren similarity index 100% rename from test/number/hex_literals.wren rename to test/language/number/hex_literals.wren diff --git a/test/number/hex_too_large.wren b/test/language/number/hex_too_large.wren similarity index 100% rename from test/number/hex_too_large.wren rename to test/language/number/hex_too_large.wren diff --git a/test/number/literal_too_large.wren b/test/language/number/literal_too_large.wren similarity index 100% rename from test/number/literal_too_large.wren rename to test/language/number/literal_too_large.wren diff --git a/test/number/literals.wren b/test/language/number/literals.wren similarity index 100% rename from test/number/literals.wren rename to test/language/number/literals.wren diff --git a/test/precedence.wren b/test/language/precedence.wren similarity index 100% rename from test/precedence.wren rename to test/language/precedence.wren diff --git a/test/return/after_else.wren b/test/language/return/after_else.wren similarity index 100% rename from test/return/after_else.wren rename to test/language/return/after_else.wren diff --git a/test/return/after_if.wren b/test/language/return/after_if.wren similarity index 100% rename from test/return/after_if.wren rename to test/language/return/after_if.wren diff --git a/test/return/after_while.wren b/test/language/return/after_while.wren similarity index 100% rename from test/return/after_while.wren rename to test/language/return/after_while.wren diff --git a/test/return/in_function.wren b/test/language/return/in_function.wren similarity index 100% rename from test/return/in_function.wren rename to test/language/return/in_function.wren diff --git a/test/return/in_method.wren b/test/language/return/in_method.wren similarity index 100% rename from test/return/in_method.wren rename to test/language/return/in_method.wren diff --git a/test/return/return_null_if_newline.wren b/test/language/return/return_null_if_newline.wren similarity index 100% rename from test/return/return_null_if_newline.wren rename to test/language/return/return_null_if_newline.wren diff --git a/test/semicolon.wren b/test/language/semicolon.wren similarity index 100% rename from test/semicolon.wren rename to test/language/semicolon.wren diff --git a/test/setter/associativity.wren b/test/language/setter/associativity.wren similarity index 100% rename from test/setter/associativity.wren rename to test/language/setter/associativity.wren diff --git a/test/setter/grouping.wren b/test/language/setter/grouping.wren similarity index 100% rename from test/setter/grouping.wren rename to test/language/setter/grouping.wren diff --git a/test/setter/infix_operator.wren b/test/language/setter/infix_operator.wren similarity index 100% rename from test/setter/infix_operator.wren rename to test/language/setter/infix_operator.wren diff --git a/test/setter/instance.wren b/test/language/setter/instance.wren similarity index 100% rename from test/setter/instance.wren rename to test/language/setter/instance.wren diff --git a/test/setter/is.wren b/test/language/setter/is.wren similarity index 100% rename from test/setter/is.wren rename to test/language/setter/is.wren diff --git a/test/setter/prefix_operator.wren b/test/language/setter/prefix_operator.wren similarity index 100% rename from test/setter/prefix_operator.wren rename to test/language/setter/prefix_operator.wren diff --git a/test/setter/result.wren b/test/language/setter/result.wren similarity index 100% rename from test/setter/result.wren rename to test/language/setter/result.wren diff --git a/test/setter/same_name_as_method.wren b/test/language/setter/same_name_as_method.wren similarity index 100% rename from test/setter/same_name_as_method.wren rename to test/language/setter/same_name_as_method.wren diff --git a/test/setter/static.wren b/test/language/setter/static.wren similarity index 100% rename from test/setter/static.wren rename to test/language/setter/static.wren diff --git a/test/shebang/shebang.wren b/test/language/shebang/shebang.wren similarity index 100% rename from test/shebang/shebang.wren rename to test/language/shebang/shebang.wren diff --git a/test/shebang/shebang_at_eof.wren b/test/language/shebang/shebang_at_eof.wren similarity index 100% rename from test/shebang/shebang_at_eof.wren rename to test/language/shebang/shebang_at_eof.wren diff --git a/test/shebang/shebang_at_other_line.wren b/test/language/shebang/shebang_at_other_line.wren similarity index 100% rename from test/shebang/shebang_at_other_line.wren rename to test/language/shebang/shebang_at_other_line.wren diff --git a/test/shebang/shebang_invalid.wren b/test/language/shebang/shebang_invalid.wren similarity index 100% rename from test/shebang/shebang_invalid.wren rename to test/language/shebang/shebang_invalid.wren diff --git a/test/static_field/closure.wren b/test/language/static_field/closure.wren similarity index 100% rename from test/static_field/closure.wren rename to test/language/static_field/closure.wren diff --git a/test/static_field/default_to_null.wren b/test/language/static_field/default_to_null.wren similarity index 100% rename from test/static_field/default_to_null.wren rename to test/language/static_field/default_to_null.wren diff --git a/test/static_field/in_instance_method.wren b/test/language/static_field/in_instance_method.wren similarity index 100% rename from test/static_field/in_instance_method.wren rename to test/language/static_field/in_instance_method.wren diff --git a/test/static_field/multiple.wren b/test/language/static_field/multiple.wren similarity index 100% rename from test/static_field/multiple.wren rename to test/language/static_field/multiple.wren diff --git a/test/static_field/nested_class.wren b/test/language/static_field/nested_class.wren similarity index 100% rename from test/static_field/nested_class.wren rename to test/language/static_field/nested_class.wren diff --git a/test/static_field/outside_class.wren b/test/language/static_field/outside_class.wren similarity index 100% rename from test/static_field/outside_class.wren rename to test/language/static_field/outside_class.wren diff --git a/test/static_field/use_before_set.wren b/test/language/static_field/use_before_set.wren similarity index 100% rename from test/static_field/use_before_set.wren rename to test/language/static_field/use_before_set.wren diff --git a/test/string/escapes.wren b/test/language/string/escapes.wren similarity index 100% rename from test/string/escapes.wren rename to test/language/string/escapes.wren diff --git a/test/string/incomplete_unicode_escape.wren b/test/language/string/incomplete_unicode_escape.wren similarity index 100% rename from test/string/incomplete_unicode_escape.wren rename to test/language/string/incomplete_unicode_escape.wren diff --git a/test/string/incomplete_unicode_escape_at_eof.wren b/test/language/string/incomplete_unicode_escape_at_eof.wren similarity index 100% rename from test/string/incomplete_unicode_escape_at_eof.wren rename to test/language/string/incomplete_unicode_escape_at_eof.wren diff --git a/test/string/invalid_escape.wren b/test/language/string/invalid_escape.wren similarity index 100% rename from test/string/invalid_escape.wren rename to test/language/string/invalid_escape.wren diff --git a/test/string/invalid_unicode_escape.wren b/test/language/string/invalid_unicode_escape.wren similarity index 100% rename from test/string/invalid_unicode_escape.wren rename to test/language/string/invalid_unicode_escape.wren diff --git a/test/string/literals.wren b/test/language/string/literals.wren similarity index 100% rename from test/string/literals.wren rename to test/language/string/literals.wren diff --git a/test/string/unicode_escapes.wren b/test/language/string/unicode_escapes.wren similarity index 100% rename from test/string/unicode_escapes.wren rename to test/language/string/unicode_escapes.wren diff --git a/test/string/unterminated.wren b/test/language/string/unterminated.wren similarity index 100% rename from test/string/unterminated.wren rename to test/language/string/unterminated.wren diff --git a/test/super/call_different_arity.wren b/test/language/super/call_different_arity.wren similarity index 100% rename from test/super/call_different_arity.wren rename to test/language/super/call_different_arity.wren diff --git a/test/super/call_other_method.wren b/test/language/super/call_other_method.wren similarity index 100% rename from test/super/call_other_method.wren rename to test/language/super/call_other_method.wren diff --git a/test/super/call_same_method.wren b/test/language/super/call_same_method.wren similarity index 100% rename from test/super/call_same_method.wren rename to test/language/super/call_same_method.wren diff --git a/test/super/closure.wren b/test/language/super/closure.wren similarity index 100% rename from test/super/closure.wren rename to test/language/super/closure.wren diff --git a/test/super/implicit_name.wren b/test/language/super/implicit_name.wren similarity index 100% rename from test/super/implicit_name.wren rename to test/language/super/implicit_name.wren diff --git a/test/super/indirectly_inherited.wren b/test/language/super/indirectly_inherited.wren similarity index 100% rename from test/super/indirectly_inherited.wren rename to test/language/super/indirectly_inherited.wren diff --git a/test/super/no_superclass_method.wren b/test/language/super/no_superclass_method.wren similarity index 100% rename from test/super/no_superclass_method.wren rename to test/language/super/no_superclass_method.wren diff --git a/test/super/super_at_top_level.wren b/test/language/super/super_at_top_level.wren similarity index 100% rename from test/super/super_at_top_level.wren rename to test/language/super/super_at_top_level.wren diff --git a/test/super/super_in_static_method.wren b/test/language/super/super_in_static_method.wren similarity index 100% rename from test/super/super_in_static_method.wren rename to test/language/super/super_in_static_method.wren diff --git a/test/super/super_in_top_level_function.wren b/test/language/super/super_in_top_level_function.wren similarity index 100% rename from test/super/super_in_top_level_function.wren rename to test/language/super/super_in_top_level_function.wren diff --git a/test/this/closure.wren b/test/language/this/closure.wren similarity index 100% rename from test/this/closure.wren rename to test/language/this/closure.wren diff --git a/test/this/nested_class.wren b/test/language/this/nested_class.wren similarity index 100% rename from test/this/nested_class.wren rename to test/language/this/nested_class.wren diff --git a/test/this/nested_closure.wren b/test/language/this/nested_closure.wren similarity index 100% rename from test/this/nested_closure.wren rename to test/language/this/nested_closure.wren diff --git a/test/this/this_at_top_level.wren b/test/language/this/this_at_top_level.wren similarity index 100% rename from test/this/this_at_top_level.wren rename to test/language/this/this_at_top_level.wren diff --git a/test/this/this_in_method.wren b/test/language/this/this_in_method.wren similarity index 100% rename from test/this/this_in_method.wren rename to test/language/this/this_in_method.wren diff --git a/test/this/this_in_static_method.wren b/test/language/this/this_in_static_method.wren similarity index 100% rename from test/this/this_in_static_method.wren rename to test/language/this/this_in_static_method.wren diff --git a/test/this/this_in_top_level_function.wren b/test/language/this/this_in_top_level_function.wren similarity index 100% rename from test/this/this_in_top_level_function.wren rename to test/language/this/this_in_top_level_function.wren diff --git a/test/unexpected_character.wren b/test/language/unexpected_character.wren similarity index 100% rename from test/unexpected_character.wren rename to test/language/unexpected_character.wren diff --git a/test/variable/duplicate_local.wren b/test/language/variable/duplicate_local.wren similarity index 100% rename from test/variable/duplicate_local.wren rename to test/language/variable/duplicate_local.wren diff --git a/test/variable/duplicate_parameter.wren b/test/language/variable/duplicate_parameter.wren similarity index 100% rename from test/variable/duplicate_parameter.wren rename to test/language/variable/duplicate_parameter.wren diff --git a/test/variable/global_in_initializer.wren b/test/language/variable/global_in_initializer.wren similarity index 100% rename from test/variable/global_in_initializer.wren rename to test/language/variable/global_in_initializer.wren diff --git a/test/variable/global_without_initializer.wren b/test/language/variable/global_without_initializer.wren similarity index 100% rename from test/variable/global_without_initializer.wren rename to test/language/variable/global_without_initializer.wren diff --git a/test/variable/local_collide_with_function_parameter.wren b/test/language/variable/local_collide_with_function_parameter.wren similarity index 100% rename from test/variable/local_collide_with_function_parameter.wren rename to test/language/variable/local_collide_with_function_parameter.wren diff --git a/test/variable/local_collide_with_method_parameter.wren b/test/language/variable/local_collide_with_method_parameter.wren similarity index 100% rename from test/variable/local_collide_with_method_parameter.wren rename to test/language/variable/local_collide_with_method_parameter.wren diff --git a/test/variable/local_in_initializer.wren b/test/language/variable/local_in_initializer.wren similarity index 100% rename from test/variable/local_in_initializer.wren rename to test/language/variable/local_in_initializer.wren diff --git a/test/variable/local_in_middle_of_block.wren b/test/language/variable/local_in_middle_of_block.wren similarity index 100% rename from test/variable/local_in_middle_of_block.wren rename to test/language/variable/local_in_middle_of_block.wren diff --git a/test/variable/local_in_nested_block.wren b/test/language/variable/local_in_nested_block.wren similarity index 100% rename from test/variable/local_in_nested_block.wren rename to test/language/variable/local_in_nested_block.wren diff --git a/test/variable/local_without_initializer.wren b/test/language/variable/local_without_initializer.wren similarity index 100% rename from test/variable/local_without_initializer.wren rename to test/language/variable/local_without_initializer.wren diff --git a/test/variable/many_locals.wren b/test/language/variable/many_locals.wren similarity index 100% rename from test/variable/many_locals.wren rename to test/language/variable/many_locals.wren diff --git a/test/variable/many_nonsimultaneous_locals.wren b/test/language/variable/many_nonsimultaneous_locals.wren similarity index 100% rename from test/variable/many_nonsimultaneous_locals.wren rename to test/language/variable/many_nonsimultaneous_locals.wren diff --git a/test/variable/newline_after_var.wren b/test/language/variable/newline_after_var.wren similarity index 100% rename from test/variable/newline_after_var.wren rename to test/language/variable/newline_after_var.wren diff --git a/test/variable/outside_method.wren b/test/language/variable/outside_method.wren similarity index 100% rename from test/variable/outside_method.wren rename to test/language/variable/outside_method.wren diff --git a/test/variable/scope_if.wren b/test/language/variable/scope_if.wren similarity index 100% rename from test/variable/scope_if.wren rename to test/language/variable/scope_if.wren diff --git a/test/variable/scope_reuse_in_different_blocks.wren b/test/language/variable/scope_reuse_in_different_blocks.wren similarity index 100% rename from test/variable/scope_reuse_in_different_blocks.wren rename to test/language/variable/scope_reuse_in_different_blocks.wren diff --git a/test/variable/scope_while.wren b/test/language/variable/scope_while.wren similarity index 100% rename from test/variable/scope_while.wren rename to test/language/variable/scope_while.wren diff --git a/test/variable/shadow_and_local.wren b/test/language/variable/shadow_and_local.wren similarity index 100% rename from test/variable/shadow_and_local.wren rename to test/language/variable/shadow_and_local.wren diff --git a/test/variable/shadow_global.wren b/test/language/variable/shadow_global.wren similarity index 100% rename from test/variable/shadow_global.wren rename to test/language/variable/shadow_global.wren diff --git a/test/variable/shadow_in_initializer.wren b/test/language/variable/shadow_in_initializer.wren similarity index 100% rename from test/variable/shadow_in_initializer.wren rename to test/language/variable/shadow_in_initializer.wren diff --git a/test/variable/shadow_local.wren b/test/language/variable/shadow_local.wren similarity index 100% rename from test/variable/shadow_local.wren rename to test/language/variable/shadow_local.wren diff --git a/test/variable/too_many_locals.wren b/test/language/variable/too_many_locals.wren similarity index 100% rename from test/variable/too_many_locals.wren rename to test/language/variable/too_many_locals.wren diff --git a/test/variable/too_many_locals_nested.wren b/test/language/variable/too_many_locals_nested.wren similarity index 100% rename from test/variable/too_many_locals_nested.wren rename to test/language/variable/too_many_locals_nested.wren diff --git a/test/variable/undefined_global.wren b/test/language/variable/undefined_global.wren similarity index 100% rename from test/variable/undefined_global.wren rename to test/language/variable/undefined_global.wren diff --git a/test/variable/undefined_local.wren b/test/language/variable/undefined_local.wren similarity index 100% rename from test/variable/undefined_local.wren rename to test/language/variable/undefined_local.wren diff --git a/test/variable/use_false_as_var.wren b/test/language/variable/use_false_as_var.wren similarity index 100% rename from test/variable/use_false_as_var.wren rename to test/language/variable/use_false_as_var.wren diff --git a/test/variable/use_field_as_var.wren b/test/language/variable/use_field_as_var.wren similarity index 100% rename from test/variable/use_field_as_var.wren rename to test/language/variable/use_field_as_var.wren diff --git a/test/variable/use_null_as_var.wren b/test/language/variable/use_null_as_var.wren similarity index 100% rename from test/variable/use_null_as_var.wren rename to test/language/variable/use_null_as_var.wren diff --git a/test/variable/use_this_as_var.wren b/test/language/variable/use_this_as_var.wren similarity index 100% rename from test/variable/use_this_as_var.wren rename to test/language/variable/use_this_as_var.wren diff --git a/test/variable/use_true_as_var.wren b/test/language/variable/use_true_as_var.wren similarity index 100% rename from test/variable/use_true_as_var.wren rename to test/language/variable/use_true_as_var.wren diff --git a/test/while/closure_in_body.wren b/test/language/while/closure_in_body.wren similarity index 100% rename from test/while/closure_in_body.wren rename to test/language/while/closure_in_body.wren diff --git a/test/while/newline_after_while.wren b/test/language/while/newline_after_while.wren similarity index 100% rename from test/while/newline_after_while.wren rename to test/language/while/newline_after_while.wren diff --git a/test/while/return_closure.wren b/test/language/while/return_closure.wren similarity index 100% rename from test/while/return_closure.wren rename to test/language/while/return_closure.wren diff --git a/test/while/return_inside.wren b/test/language/while/return_inside.wren similarity index 100% rename from test/while/return_inside.wren rename to test/language/while/return_inside.wren diff --git a/test/while/syntax.wren b/test/language/while/syntax.wren similarity index 100% rename from test/while/syntax.wren rename to test/language/while/syntax.wren diff --git a/test/while/truth.wren b/test/language/while/truth.wren similarity index 100% rename from test/while/truth.wren rename to test/language/while/truth.wren diff --git a/test/whitespace.wren b/test/language/whitespace.wren similarity index 100% rename from test/whitespace.wren rename to test/language/whitespace.wren diff --git a/test/function/too_many_parameters.wren b/test/limit/too_many_function_parameters.wren similarity index 100% rename from test/function/too_many_parameters.wren rename to test/limit/too_many_function_parameters.wren