2021-05-16 18:27:01 +08:00

121 lines
3.0 KiB
Python
Executable File

#!/usr/bin/env python3
import re
from gradelib import *
r = Runner(save("chcore.out"),
stop_breakpoint("break_point"))
@test(0)
def test_badinsn():
r.make_kernel("badinsn")
r.run_qemu(10)
@test(15, parent=test_badinsn)
def test_badinsn_output():
r.match("\[INFO\] UnKnown")
r.match("\[INFO\] sys_exit with value -12")
@test(0, parent=test_badinsn_output)
def test_badinsn2():
r.make_kernel("badinsn2")
r.run_qemu(10)
@test(15, parent=test_badinsn2)
def test_badinsn2_output():
r.match("\[INFO\] UnKnown")
r.match("\[INFO\] sys_exit with value -12")
@test(0, parent=test_badinsn_output)
def test_hello():
r.make_kernel("hello")
r.run_qemu(10)
@test(15, parent=test_hello)
def test_hello_output():
r.match("hello, world")
r.match("\[INFO\] sys_exit with value 0")
@test(0, parent=test_hello_output)
def test_putc():
r.make_kernel("testputc")
r.run_qemu(10)
@test(5, parent=test_putc)
def test_putc_output():
r.match("&")
r.match("\[INFO\] sys_exit with value 0")
@test(0, parent=test_putc_output)
def test_createpmo():
r.make_kernel("testcreatepmo")
r.run_qemu(10)
@test(5, parent=test_createpmo)
def test_createpmo_output():
r.match("\[INFO\] sys_create_pmo called")
r.match("\[INFO\] sys_exit with value 0")
@test(0, parent=test_createpmo_output)
def test_mappmo():
r.make_kernel("testmappmo")
r.run_qemu(10)
@test(5, parent=test_mappmo)
def test_mappmo_output():
r.match("\[INFO\] sys_map_pmo called")
r.match("\[INFO\] sys_exit with value 0")
@test(0, parent=test_mappmo_output)
def test_mappmoerr():
r.make_kernel("testmappmoerr")
r.run_qemu(10)
@test(5, parent=test_mappmoerr)
def test_mappmoerr_output():
r.match("\[INFO\] sys_map_pmo called")
r.match("\[INFO\] sys_exit with value -1")
@test(0, parent=test_mappmoerr_output)
def test_brk():
r.make_kernel("testsbrk")
r.run_qemu(10)
@test(10, parent=test_brk)
def test_brk_output():
r.match("0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,")
r.match("SBRK_TEST: ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUV.*")
r.match("\[INFO\] sys_exit with value 0")
@test(0, parent=test_brk_output)
def test_faultread():
r.make_kernel("faultread")
r.run_qemu(10)
@test(5, parent=test_faultread)
def test_faultread_output():
r.match("\[INFO\] pgfault at 0x1 failed")
r.match("\[INFO\] sys_exit with value -14")
@test(0, parent=test_faultread_output)
def test_faultwrite():
r.make_kernel("faultwrite")
r.run_qemu(10)
@test(5, parent=test_faultwrite)
def test_faultwrite_output():
r.match("\[INFO\] pgfault at 0x1 failed")
r.match("\[INFO\] sys_exit with value -14")
@test(0, parent=test_faultwrite_output)
def test_pf():
r.make_kernel("testpf")
r.run_qemu(10)
@test(15, parent=test_pf)
def test_pf_output():
r.match("value is deadbeef")
r.match("\[INFO\] sys_exit with value 0")
run_tests()