parent
3ee473b2f4
commit
c6a3c2534c
@ -1,32 +1,187 @@
|
|||||||
## Grading
|
# CORE TESTS
|
||||||
|
Reading pa3-tests/core/stmt_while.py.ast.typed
|
||||||
|
+ Test: pa3-tests/core/stmt_while.py.ast.typed passed
|
||||||
|
Reading pa3-tests/core/op_div_mod.py.ast.typed
|
||||||
|
+ Test: pa3-tests/core/op_div_mod.py.ast.typed passed
|
||||||
|
Reading pa3-tests/core/object_attr_get_none.py.ast.typed
|
||||||
|
+ Test: pa3-tests/core/object_attr_get_none.py.ast.typed passed
|
||||||
|
Reading pa3-tests/core/call.py.ast.typed
|
||||||
|
+ Test: pa3-tests/core/call.py.ast.typed passed
|
||||||
|
Reading pa3-tests/core/id_local.py.ast.typed
|
||||||
|
+ Test: pa3-tests/core/id_local.py.ast.typed passed
|
||||||
|
Reading pa3-tests/core/list_get_element.py.ast.typed
|
||||||
|
+ Test: pa3-tests/core/list_get_element.py.ast.typed passed
|
||||||
|
Reading pa3-tests/core/list_set_element_none.py.ast.typed
|
||||||
|
+ Test: pa3-tests/core/list_set_element_none.py.ast.typed passed
|
||||||
|
Reading pa3-tests/core/object_method_none.py.ast.typed
|
||||||
|
+ Test: pa3-tests/core/object_method_none.py.ast.typed passed
|
||||||
|
Reading pa3-tests/core/nested.py.ast.typed
|
||||||
|
+ Test: pa3-tests/core/nested.py.ast.typed passed
|
||||||
|
Reading pa3-tests/core/str_cat.py.ast.typed
|
||||||
|
+ Test: pa3-tests/core/str_cat.py.ast.typed passed
|
||||||
|
Reading pa3-tests/core/literal_bool.py.ast.typed
|
||||||
|
+ Test: pa3-tests/core/literal_bool.py.ast.typed passed
|
||||||
|
Reading pa3-tests/core/list_set_element_oob_1.py.ast.typed
|
||||||
|
+ Test: pa3-tests/core/list_set_element_oob_1.py.ast.typed passed
|
||||||
|
Reading pa3-tests/core/stmt_for_list.py.ast.typed
|
||||||
|
+ Test: pa3-tests/core/stmt_for_list.py.ast.typed passed
|
||||||
|
Reading pa3-tests/core/object_attr_set_none.py.ast.typed
|
||||||
|
+ Test: pa3-tests/core/object_attr_set_none.py.ast.typed passed
|
||||||
|
Reading pa3-tests/core/error_invalid_print.py.ast.typed
|
||||||
|
+ Test: pa3-tests/core/error_invalid_print.py.ast.typed passed
|
||||||
|
Reading pa3-tests/core/id_global.py.ast.typed
|
||||||
|
+ Test: pa3-tests/core/id_global.py.ast.typed passed
|
||||||
|
Reading pa3-tests/core/pass.py.ast.typed
|
||||||
|
+ Test: pa3-tests/core/pass.py.ast.typed passed
|
||||||
|
Reading pa3-tests/core/len_invalid_1.py.ast.typed
|
||||||
|
+ Test: pa3-tests/core/len_invalid_1.py.ast.typed passed
|
||||||
|
Reading pa3-tests/core/stmt_for_str_eval.py.ast.typed
|
||||||
|
+ Test: pa3-tests/core/stmt_for_str_eval.py.ast.typed passed
|
||||||
|
Reading pa3-tests/core/literal_str.py.ast.typed
|
||||||
|
+ Test: pa3-tests/core/literal_str.py.ast.typed passed
|
||||||
|
Reading pa3-tests/core/op_cmp_int.py.ast.typed
|
||||||
|
+ Test: pa3-tests/core/op_cmp_int.py.ast.typed passed
|
||||||
|
Reading pa3-tests/core/str_cat_2.py.ast.typed
|
||||||
|
+ Test: pa3-tests/core/str_cat_2.py.ast.typed passed
|
||||||
|
Reading pa3-tests/core/op_sub.py.ast.typed
|
||||||
|
+ Test: pa3-tests/core/op_sub.py.ast.typed passed
|
||||||
|
Reading pa3-tests/core/object_method_nested.py.ast.typed
|
||||||
|
+ Test: pa3-tests/core/object_method_nested.py.ast.typed passed
|
||||||
|
Reading pa3-tests/core/list_len_empty.py.ast.typed
|
||||||
|
+ Test: pa3-tests/core/list_len_empty.py.ast.typed passed
|
||||||
|
Reading pa3-tests/core/str_get_element_oob_1.py.ast.typed
|
||||||
|
+ Test: pa3-tests/core/str_get_element_oob_1.py.ast.typed passed
|
||||||
|
Reading pa3-tests/core/op_negate.py.ast.typed
|
||||||
|
+ Test: pa3-tests/core/op_negate.py.ast.typed passed
|
||||||
|
Reading pa3-tests/core/list_get_element_oob_1.py.ast.typed
|
||||||
|
+ Test: pa3-tests/core/list_get_element_oob_1.py.ast.typed passed
|
||||||
|
Reading pa3-tests/core/var_assign.py.ast.typed
|
||||||
|
+ Test: pa3-tests/core/var_assign.py.ast.typed passed
|
||||||
|
Reading pa3-tests/core/literal_int.py.ast.typed
|
||||||
|
+ Test: pa3-tests/core/literal_int.py.ast.typed passed
|
||||||
|
Reading pa3-tests/core/object_attr_get.py.ast.typed
|
||||||
|
+ Test: pa3-tests/core/object_attr_get.py.ast.typed passed
|
||||||
|
Reading pa3-tests/core/stmt_for_list_nested.py.ast.typed
|
||||||
|
+ Test: pa3-tests/core/stmt_for_list_nested.py.ast.typed passed
|
||||||
|
Reading pa3-tests/core/list_get_element_complex.py.ast.typed
|
||||||
|
+ Test: pa3-tests/core/list_get_element_complex.py.ast.typed passed
|
||||||
|
Reading pa3-tests/core/stmt_return_early.py.ast.typed
|
||||||
|
+ Test: pa3-tests/core/stmt_return_early.py.ast.typed passed
|
||||||
|
Reading pa3-tests/core/stmt_for_list_nested_same_var.py.ast.typed
|
||||||
|
+ Test: pa3-tests/core/stmt_for_list_nested_same_var.py.ast.typed passed
|
||||||
|
Reading pa3-tests/core/op_logical.py.ast.typed
|
||||||
|
+ Test: pa3-tests/core/op_logical.py.ast.typed passed
|
||||||
|
Reading pa3-tests/core/expr_if.py.ast.typed
|
||||||
|
+ Test: pa3-tests/core/expr_if.py.ast.typed passed
|
||||||
|
Reading pa3-tests/core/error_mod_zero.py.ast.typed
|
||||||
|
+ Test: pa3-tests/core/error_mod_zero.py.ast.typed passed
|
||||||
|
Reading pa3-tests/core/stmt_for_str_same_var.py.ast.typed
|
||||||
|
+ Test: pa3-tests/core/stmt_for_str_same_var.py.ast.typed passed
|
||||||
|
Reading pa3-tests/core/str_cmp.py.ast.typed
|
||||||
|
+ Test: pa3-tests/core/str_cmp.py.ast.typed passed
|
||||||
|
Reading pa3-tests/core/op_mul.py.ast.typed
|
||||||
|
+ Test: pa3-tests/core/op_mul.py.ast.typed passed
|
||||||
|
Reading pa3-tests/core/list_concat_2.py.ast.typed
|
||||||
|
+ Test: pa3-tests/core/list_concat_2.py.ast.typed passed
|
||||||
|
Reading pa3-tests/core/list_get_element_oob_2.py.ast.typed
|
||||||
|
+ Test: pa3-tests/core/list_get_element_oob_2.py.ast.typed passed
|
||||||
|
Reading pa3-tests/core/list_len.py.ast.typed
|
||||||
|
+ Test: pa3-tests/core/list_len.py.ast.typed passed
|
||||||
|
Reading pa3-tests/core/input.py.ast.typed
|
||||||
|
+ Test: pa3-tests/core/input.py.ast.typed passed
|
||||||
|
Reading pa3-tests/core/stmt_for_str.py.ast.typed
|
||||||
|
+ Test: pa3-tests/core/stmt_for_str.py.ast.typed passed
|
||||||
|
Reading pa3-tests/core/str_get_element_oob_2.py.ast.typed
|
||||||
|
+ Test: pa3-tests/core/str_get_element_oob_2.py.ast.typed passed
|
||||||
|
Reading pa3-tests/core/object_method.py.ast.typed
|
||||||
|
+ Test: pa3-tests/core/object_method.py.ast.typed passed
|
||||||
|
Reading pa3-tests/core/call_with_args.py.ast.typed
|
||||||
|
+ Test: pa3-tests/core/call_with_args.py.ast.typed passed
|
||||||
|
Reading pa3-tests/core/nested2.py.ast.typed
|
||||||
|
+ Test: pa3-tests/core/nested2.py.ast.typed passed
|
||||||
|
Reading pa3-tests/core/str_get_element_oob_3.py.ast.typed
|
||||||
|
+ Test: pa3-tests/core/str_get_element_oob_3.py.ast.typed passed
|
||||||
|
Reading pa3-tests/core/op_add.py.ast.typed
|
||||||
|
+ Test: pa3-tests/core/op_add.py.ast.typed passed
|
||||||
|
Reading pa3-tests/core/op_cmp_bool.py.ast.typed
|
||||||
|
+ Test: pa3-tests/core/op_cmp_bool.py.ast.typed passed
|
||||||
|
Reading pa3-tests/core/stmt_for_list_return.py.ast.typed
|
||||||
|
+ Test: pa3-tests/core/stmt_for_list_return.py.ast.typed passed
|
||||||
|
Reading pa3-tests/core/stmt_for_str_empty.py.ast.typed
|
||||||
|
+ Test: pa3-tests/core/stmt_for_str_empty.py.ast.typed passed
|
||||||
|
Reading pa3-tests/core/object_attr_set.py.ast.typed
|
||||||
|
+ Test: pa3-tests/core/object_attr_set.py.ast.typed passed
|
||||||
|
Reading pa3-tests/core/list_concat_none.py.ast.typed
|
||||||
|
+ Test: pa3-tests/core/list_concat_none.py.ast.typed passed
|
||||||
|
Reading pa3-tests/core/predef_constructors.py.ast.typed
|
||||||
|
+ Test: pa3-tests/core/predef_constructors.py.ast.typed passed
|
||||||
|
Reading pa3-tests/core/list_get_element_oob_3.py.ast.typed
|
||||||
|
+ Test: pa3-tests/core/list_get_element_oob_3.py.ast.typed passed
|
||||||
|
Reading pa3-tests/core/stmt_if.py.ast.typed
|
||||||
|
+ Test: pa3-tests/core/stmt_if.py.ast.typed passed
|
||||||
|
Reading pa3-tests/core/list_set_element.py.ast.typed
|
||||||
|
+ Test: pa3-tests/core/list_set_element.py.ast.typed passed
|
||||||
|
Reading pa3-tests/core/stmt_for_list_modify.py.ast.typed
|
||||||
|
+ Test: pa3-tests/core/stmt_for_list_modify.py.ast.typed passed
|
||||||
|
Reading pa3-tests/core/stmt_for_list_nonlocal.py.ast.typed
|
||||||
|
+ Test: pa3-tests/core/stmt_for_list_nonlocal.py.ast.typed passed
|
||||||
|
Reading pa3-tests/core/object_attr_set_eval_order.py.ast.typed
|
||||||
|
+ Test: pa3-tests/core/object_attr_set_eval_order.py.ast.typed passed
|
||||||
|
Reading pa3-tests/core/error_div_zero.py.ast.typed
|
||||||
|
+ Test: pa3-tests/core/error_div_zero.py.ast.typed passed
|
||||||
|
Reading pa3-tests/core/op_is.py.ast.typed
|
||||||
|
+ Test: pa3-tests/core/op_is.py.ast.typed passed
|
||||||
|
Reading pa3-tests/core/list_set_element_oob_3.py.ast.typed
|
||||||
|
+ Test: pa3-tests/core/list_set_element_oob_3.py.ast.typed passed
|
||||||
|
Reading pa3-tests/core/object_init.py.ast.typed
|
||||||
|
+ Test: pa3-tests/core/object_init.py.ast.typed passed
|
||||||
|
Reading pa3-tests/core/list_concat.py.ast.typed
|
||||||
|
+ Test: pa3-tests/core/list_concat.py.ast.typed passed
|
||||||
|
Reading pa3-tests/core/stmt_for_list_eval.py.ast.typed
|
||||||
|
+ Test: pa3-tests/core/stmt_for_list_eval.py.ast.typed passed
|
||||||
|
Reading pa3-tests/core/len_invalid_2.py.ast.typed
|
||||||
|
+ Test: pa3-tests/core/len_invalid_2.py.ast.typed passed
|
||||||
|
Reading pa3-tests/core/object_method_override.py.ast.typed
|
||||||
|
+ Test: pa3-tests/core/object_method_override.py.ast.typed passed
|
||||||
|
Reading pa3-tests/core/stmt_for_list_none.py.ast.typed
|
||||||
|
+ Test: pa3-tests/core/stmt_for_list_none.py.ast.typed passed
|
||||||
|
Reading pa3-tests/core/stmt_for_list_empty.py.ast.typed
|
||||||
|
+ Test: pa3-tests/core/stmt_for_list_empty.py.ast.typed passed
|
||||||
|
Reading pa3-tests/core/str_get_element.py.ast.typed
|
||||||
|
+ Test: pa3-tests/core/str_get_element.py.ast.typed passed
|
||||||
|
Reading pa3-tests/core/stmt_for_str_nested.py.ast.typed
|
||||||
|
+ Test: pa3-tests/core/stmt_for_str_nested.py.ast.typed passed
|
||||||
|
Reading pa3-tests/core/object_method_complex_call.py.ast.typed
|
||||||
|
+ Test: pa3-tests/core/object_method_complex_call.py.ast.typed passed
|
||||||
|
Reading pa3-tests/core/list_set_element_oob_2.py.ast.typed
|
||||||
|
+ Test: pa3-tests/core/list_set_element_oob_2.py.ast.typed passed
|
||||||
|
Reading pa3-tests/core/str_len.py.ast.typed
|
||||||
|
+ Test: pa3-tests/core/str_len.py.ast.typed passed
|
||||||
|
Reading pa3-tests/core/list_get_element_none.py.ast.typed
|
||||||
|
+ Test: pa3-tests/core/list_get_element_none.py.ast.typed passed
|
||||||
|
Tests: 80 passed, 0 failed, and 0 ignored.
|
||||||
|
|
||||||
Core Tests: 59/59
|
# BENCHMARK CORRECTNESS TESTS
|
||||||
|
Reading pa3-tests/benchmarks/prime.py.ast.typed
|
||||||
|
+ Test: pa3-tests/benchmarks/prime.py.ast.typed passed
|
||||||
|
Reading pa3-tests/benchmarks/sieve.py.ast.typed
|
||||||
|
+ Test: pa3-tests/benchmarks/sieve.py.ast.typed passed
|
||||||
|
Reading pa3-tests/benchmarks/exp.py.ast.typed
|
||||||
|
+ Test: pa3-tests/benchmarks/exp.py.ast.typed passed
|
||||||
|
Reading pa3-tests/benchmarks/tree.py.ast.typed
|
||||||
|
+ Test: pa3-tests/benchmarks/tree.py.ast.typed passed
|
||||||
|
Reading pa3-tests/benchmarks/stdlib.py.ast.typed
|
||||||
|
+ Test: pa3-tests/benchmarks/stdlib.py.ast.typed passed
|
||||||
|
Tests: 5 passed, 0 failed, and 0 ignored.
|
||||||
|
|
||||||
Extra: 21/21
|
# BENCHMARK PERFORMANCE TESTS
|
||||||
|
Reading pa3-tests/benchmarks/prime.py.ast.typed
|
||||||
=========================
|
Cycles executed = 65741
|
||||||
|
Reading pa3-tests/benchmarks/sieve.py.ast.typed
|
||||||
Standard tests: 80/80
|
Cycles executed = 65720
|
||||||
|
Reading pa3-tests/benchmarks/exp.py.ast.typed
|
||||||
Work Log: 10/10
|
Cycles executed = 29039
|
||||||
|
Reading pa3-tests/benchmarks/tree.py.ast.typed
|
||||||
Additional Tests: 10/10
|
Cycles executed = 239089
|
||||||
|
Reading pa3-tests/benchmarks/stdlib.py.ast.typed
|
||||||
Code style: 10/10
|
Cycles executed = 34689
|
||||||
|
|
||||||
Improvements: +1
|
|
||||||
|
|
||||||
Overall: 111/110
|
|
||||||
|
|
||||||
Congratulations! Your analyzer has solved every test case correctly again. Your improvement is solid and easy to verify. The two-passes design is clear and direct.
|
|
||||||
|
|
||||||
## Testing
|
|
||||||
|
|
||||||
The additional test cases provided in the `student_contributed` directory are carefully selected and well structured. I am surprised that you managed to reproduce those error messages from reference-implementation. Some of them are weird and probably not worth reproducing, but thanks for reducing the workload on my end.
|
|
||||||
|
|
||||||
## Miscellaneous
|
|
||||||
The Code structure is clear and consistent but could still be improved by removing commented codes (at least in the final version).
|
|
||||||
|
|
||||||
The automatic test shell scripts are very helpful. It would be even better if you could organize them with CI tools like travis.ci or gitflow. It is totally optional but it would be fun to construct a CI pipeline.
|
|
||||||
|
|
||||||
The worklog contains some typos that could be avoided by adding a spellchecker to the IDE or CI.
|
|
||||||
|
Loading…
Reference in new issue