diff --git a/judge/scripts/test/engine_test.rb b/judge/scripts/test/engine_test.rb deleted file mode 100644 --- a/judge/scripts/test/engine_test.rb +++ /dev/null @@ -1,152 +0,0 @@ -require 'test/unit' -require 'rubygems' -require 'mocha' - -require File.join(File.dirname(__FILE__),'test_helper') - -class GraderEngineTest < UnitTest.TestCase - - def setup - @@lang_c = stub(:name => 'c', :ext => 'c') - @@lang_cpp = stub(:name => 'cpp', :ext => 'cpp') - @@lang_pas = stub(:name => 'pas', :ext => 'pas') - - @config = Grader::Configuration.get_instance - - @problem_test1 = stub(:id => 1, :name => 'test1', :full_score => 135) - @user_user1 = stub(:id => 1, :login => 'user1') - - @engine = Grader::Engine.new - - init_sandbox - end - - def teardown - end - - def test_grade_oldest_task_with_no_submission - Task.expects(:get_inqueue_and_change_status).returns(nil) - assert_equal nil, @engine.grade_oldest_task, 'should return nil when there is no task' - end - - def test_normal_submission - submission = create_test1_submission_mock_from_file("test1_correct.c") - - submission.expects(:graded_at=) - submission.expects(:points=).with(135) - submission.expects(:grader_comment=).with do |value| - /^PASSED/.match(value) - end - submission.expects(:compiler_message=).with('') - submission.expects(:save) - - @engine.grade(submission) - end - - def test_compile_error_submission - submission = create_test1_submission_mock_from_file("test1_compile_error.c") - - submission.expects(:graded_at=) - submission.expects(:points=).with(0) - submission.expects(:grader_comment=).with('FAILED: compile error') - submission.expects(:compiler_message=) do |value| - /[Ee]rror/.match value - end - submission.expects(:save) - - @engine.grade(submission) - end - - def test_timeout_submission - @problem_test2 = stub(:id => 1, :name => 'test2', :full_score => 10) - @user_user1 = stub(:id => 1, :login => 'user1') - - submission = create_submission_from_file(1, @user_user1, @problem_test2, - "test2_timeout.c") - - submission.expects(:graded_at=) - submission.expects(:points=).with(0) - submission.expects(:grader_comment=).with do |value| - /^FAILED: TT$/.match value - end - submission.expects(:compiler_message=).with('') - submission.expects(:save) - - @engine.grade(submission) - end - - def test_timeout_submission_running_one_and_a_half_second - @problem_test2 = stub(:id => 1, :name => 'test2', :full_score => 20) - @user_user1 = stub(:id => 1, :login => 'user1') - - submission = create_submission_from_file(1, @user_user1, @problem_test2, - "test2_1-5sec.c") - - submission.expects(:graded_at=) - submission.expects(:points=).with(10) - submission.expects(:grader_comment=).with do |value| - /^FAILED: TP$/.match value - end - submission.expects(:compiler_message=).with('') - submission.expects(:save) - - @engine.grade(submission) - end - - def test_grade_oldest_task - # mock submission - submission = create_test1_submission_mock_from_file("test1_correct.c") - - submission.expects(:graded_at=) - submission.expects(:points=).with(135) - submission.expects(:grader_comment=).with do |value| - /^PASSED/.match(value) - end - submission.expects(:compiler_message=).with('') - submission.expects(:save) - - # mock task - task = stub(:id => 1, :submission_id => submission.id) - Task.expects(:get_inqueue_and_change_status).returns(task) - task.expects(:status_complete!) - - # mock Submission - Submission.expects(:find).with(task.submission_id).returns(submission) - - @engine.grade_oldest_task - end - - def test_grade_oldest_task_with_grader_process - grader_process = stub - grader_process.expects(:report_active) - - @engine = Grader::Engine.new(grader_process) - - test_grade_oldest_task - end - - protected - - def clear_sandbox - clear_cmd = "rm -rf #{@config.test_sandbox_dir}/*" - system(clear_cmd) - end - - def init_sandbox - clear_sandbox - Dir.mkdir @config.user_result_dir - cp_cmd = "cp -R #{@config.test_data_dir}/ev #{@config.test_sandbox_dir}" - system(cp_cmd) - end - - def create_submission_from_file(id, user, problem, source_fname, language = @@lang_c) - source = File.open(@config.test_data_dir + "/" + source_fname).read - stub(:id => id, :user => user, :problem => problem, - :source => source, :language => language) - end - - def create_test1_submission_mock_from_file(source_fname) - create_submission_from_file(1, @user_user1, @problem_test1, source_fname) - end - -end