More elaborate test structure
This commit is contained in:
parent
8328fee2e4
commit
ced7c7786f
32
run_tests.py
32
run_tests.py
|
@ -9,7 +9,12 @@ REGEXES_DATA = [ #TODO
|
|||
[r"a|b", r"a"],
|
||||
]
|
||||
|
||||
def make_test(regexes, idx):
|
||||
EXAMPLE_TESTS = { #Mapping from test name to executable and number of available test input files
|
||||
"keywords" : ("examples/keywords/keywords", 1),
|
||||
"highlighter": ("examples/SyntaxHighlighter/highlighter", 1),
|
||||
}
|
||||
|
||||
def make_pipeline_test(regexes, idx):
|
||||
def test(self):
|
||||
p = subprocess.Popen([os.path.join(args.builddir, "src", "Lexesis-test"), "test_%s" % idx, data_dir], stdin=subprocess.PIPE)
|
||||
p.communicate(bytes("\n".join(regexes), "utf-8"))
|
||||
|
@ -22,6 +27,24 @@ def make_test(regexes, idx):
|
|||
|
||||
return test
|
||||
|
||||
def make_functional_test(name, prog, idx):
|
||||
def test(self):
|
||||
inpath = os.path.join(REFERENCE_DIR, "%s_%s.in" % (name, idx))
|
||||
infile = open(inpath)
|
||||
outpath = os.path.join(data_dir, "%s_%s.out" % (name, idx))
|
||||
outfile = open(outpath, "w")
|
||||
checkpath = os.path.join(REFERENCE_DIR, "%s_%s.exp" % (name, idx))
|
||||
|
||||
p = subprocess.Popen([prog], stdin=infile, stdout=outfile)
|
||||
p.communicate()
|
||||
|
||||
infile.close()
|
||||
outfile.close()
|
||||
|
||||
self.assertTrue(filecmp.cmp(checkpath, outpath), "Testcase %s for example program %s failed" % (idx, name))
|
||||
|
||||
return test
|
||||
|
||||
class Tests(unittest.TestCase):
|
||||
pass
|
||||
|
||||
|
@ -38,7 +61,12 @@ if __name__ == "__main__":
|
|||
os.mkdir(data_dir)
|
||||
|
||||
for i, regexes in enumerate(REGEXES_DATA):
|
||||
t = make_test(regexes, i)
|
||||
t = make_pipeline_test(regexes, i)
|
||||
setattr(Tests, "test_%s" % i, t)
|
||||
|
||||
for test, (prog, num) in EXAMPLE_TESTS.items():
|
||||
for i in range(num):
|
||||
t = make_functional_test(test, os.path.join(args.builddir, prog), i)
|
||||
setattr(Tests, "test_%s_%s" % (test, i), t)
|
||||
|
||||
unittest.main()
|
||||
|
|
|
@ -0,0 +1,61 @@
|
|||
[1;34m<[0m[1;34m![0m[1;33mDOCTYPE [0m[1;33mhtml[0m[1;34m>[0m[1;37m
|
||||
[0m[1;34m<html[0m[1;34m>[0m[1;37m
|
||||
[0m[1;34m<head[0m[1;34m>[0m[1;37m
|
||||
[0m[1;34m<link[0m[1;30m [0m[1;33mrel=[0m[1;32m"shortcut icon"[0m[1;30m [0m[1;33mhref=[0m[1;32m"/static/images/logo.png"[0m[1;30m [0m[1;33mtype=[0m[1;32m"image/x-icon"[0m[1;34m>[0m[1;37m
|
||||
[0m[1;34m<link[0m[1;30m [0m[1;33mrel=[0m[1;32m"stylesheet"[0m[1;30m [0m[1;33mtype=[0m[1;32m"text/css"[0m[1;30m [0m[1;33mhref=[0m[1;32m"/static/css/style.css"[0m[1;34m>[0m[1;37m
|
||||
[0m[1;34m<title[0m[1;34m>[0m[1;37mSyntaxHighligter example[0m[1;34m</title[0m[1;34m>[0m[1;37m
|
||||
[0m[1;34m<meta[0m[1;30m [0m[1;33mhttp-equiv=[0m[1;32m"content-type"[0m[1;30m [0m[1;33mcontent=[0m[1;32m"text/html; charset=UTF-8"[0m[1;30m [0m[1;34m>[0m[1;37m
|
||||
[0m[1;34m<meta[0m[1;30m [0m[1;33mname=[0m[1;32m"author"[0m[1;30m [0m[1;33mcontent=[0m[1;32m"Thomas Avé"[0m[1;30m [0m[1;34m>[0m[1;37m
|
||||
[0m[1;34m<script[0m[1;30m [0m[1;33mtype=[0m[1;32m"text/javascript"[0m[1;30m [0m[1;33msrc=[0m[1;32m"/static/js/jquery-1.7.1.min.js"[0m[1;34m>[0m[1;34m</script[0m[1;34m>[0m[1;37m
|
||||
[0m[1;34m<script[0m[1;30m [0m[1;33mtype=[0m[1;32m"text/javascript"[0m[1;30m [0m[1;33msrc=[0m[1;32m"/static/js/jquery.slidertron-1.1.js"[0m[1;34m>[0m[1;34m</script[0m[1;34m>[0m[1;37m
|
||||
[0m[1;34m</head[0m[1;34m>[0m[1;37m
|
||||
[0m[1;34m<body[0m[1;30m [0m[1;33monload=[0m[1;32m"javascript:doStuff()"[0m[1;34m>[0m[1;37m
|
||||
[0m[1;30m<!-- This is a comment -->[0m[1;37m
|
||||
[0m[1;34m<div[0m[1;30m [0m[1;33mid=[0m[1;32m"logotextname"[0m[1;34m>[0m[1;37mPellentesque lacus neque, rutrum ut ante et, posuere consequat elit.[0m[1;34m</div[0m[1;34m>[0m[1;37m
|
||||
[0m[1;34m<div[0m[1;30m [0m[1;33mid=[0m[1;32m"logotextfunction"[0m[1;30m [0m[1;33mstyle=[0m[1;32m"letter-spacing:9px;"[0m[1;34m>[0m[1;37mLorem ipsum dolor sit amet, consectetur adipiscing elit.[0m[1;34m</div[0m[1;34m>[0m[1;37m
|
||||
[0m[1;34m<a[0m[1;30m [0m[1;33mhref=[0m[1;32m"/"[0m[1;34m>[0m[1;34m<img[0m[1;30m [0m[1;33msrc=[0m[1;32m"/static/images/logo.png"[0m[1;30m [0m[1;33malt=[0m[1;32m"Logo"[0m[1;30m [0m[1;33mid=[0m[1;32m"logo"[0m[1;34m>[0m[1;34m</a[0m[1;34m>[0m[1;37m
|
||||
[0m[1;34m<nav[0m[1;34m>[0m[1;37m
|
||||
[0m[1;34m<ul[0m[1;30m [0m[1;33mclass=[0m[1;32m"nav"[0m[1;34m>[0m[1;37m
|
||||
[0m[1;34m<li[0m[1;30m [0m[1;33mclass=[0m[1;32m"nav"[0m[1;34m>[0m[1;34m<a[0m[1;30m [0m[1;33mhref=[0m[1;32m"/welkom"[0m[1;30m [0m[1;33mclass=[0m[1;32m"nav"[0m[1;30m [0m[1;33mid=[0m[1;32m"linkwelkom"[0m[1;34m>[0m[1;37mWELKOM[0m[1;34m</a[0m[1;34m>[0m[1;34m</li[0m[1;34m>[0m[1;37m
|
||||
[0m[1;34m<li[0m[1;30m [0m[1;33mclass=[0m[1;32m"nav"[0m[1;34m>[0m[1;34m<a[0m[1;30m [0m[1;33mhref=[0m[1;32m"/werkwijze"[0m[1;30m [0m[1;33mclass=[0m[1;32m"nav"[0m[1;30m [0m[1;33mid=[0m[1;32m"linkwerkwijze"[0m[1;34m>[0m[1;37mWERKWIJZE[0m[1;34m</a[0m[1;34m>[0m[1;34m</li[0m[1;34m>[0m[1;37m
|
||||
[0m[1;34m<li[0m[1;30m [0m[1;33mclass=[0m[1;32m"nav"[0m[1;34m>[0m[1;34m<a[0m[1;30m [0m[1;33mhref=[0m[1;32m"/praktisch"[0m[1;30m [0m[1;33mclass=[0m[1;32m"nav"[0m[1;30m [0m[1;33mid=[0m[1;32m"linkpraktisch"[0m[1;34m>[0m[1;37mPRAKTISCH[0m[1;34m</a[0m[1;34m>[0m[1;34m</li[0m[1;34m>[0m[1;37m
|
||||
[0m[1;34m<li[0m[1;30m [0m[1;33mclass=[0m[1;32m"nav"[0m[1;34m>[0m[1;34m<a[0m[1;30m [0m[1;33mhref=[0m[1;32m"/contact"[0m[1;30m [0m[1;33mclass=[0m[1;32m"nav"[0m[1;30m [0m[1;33mid=[0m[1;32m"linkcontact"[0m[1;34m>[0m[1;37mCONTACT[0m[1;34m</a[0m[1;34m>[0m[1;34m</li[0m[1;34m>[0m[1;37m
|
||||
[0m[1;34m<li[0m[1;30m [0m[1;33mclass=[0m[1;32m"nav"[0m[1;34m>[0m[1;34m<a[0m[1;30m [0m[1;33mclass=[0m[1;32m"nav"[0m[1;30m [0m[1;33mid=[0m[1;32m"login"[0m[1;30m [0m[1;33mhref=[0m[1;32m"javascript:toggle();"[0m[1;34m>[0m[1;37mLOGIN[0m[1;34m</a[0m[1;34m>[0m[1;34m</li[0m[1;34m>[0m[1;37m
|
||||
[0m[1;34m</ul[0m[1;34m>[0m[1;37m
|
||||
[0m[1;34m</nav[0m[1;34m>[0m[1;37m
|
||||
[0m[1;34m<div[0m[1;30m [0m[1;33mid=[0m[1;32m"toggleText"[0m[1;34m>[0m[1;37m
|
||||
[0m[1;34m<form[0m[1;30m [0m[1;33maction=[0m[1;32m"/login"[0m[1;30m [0m[1;33mmethod=[0m[1;32m"POST"[0m[1;34m>[0m[1;37m
|
||||
[0m[1;34m<div[0m[1;30m [0m[1;33mclass=[0m[1;32m"login"[0m[1;30m [0m[1;33mstyle=[0m[1;32m"margin-top:25px;"[0m[1;34m>[0m[1;37mGebruikersnaam:[0m[1;34m</div[0m[1;34m>[0m[1;37m
|
||||
[0m[1;34m<input[0m[1;30m [0m[1;33mtype=[0m[1;32m"text"[0m[1;30m [0m[1;33mname=[0m[1;32m"username"[0m[1;30m [0m[1;33mid=[0m[1;32m"username"[0m[1;30m [0m[1;33mclass=[0m[1;32m"login"[0m[1;30m [0m[1;33mstyle=[0m[1;32m"width:80%;border:1px solid rgba(120, 120, 120, 0.7);border-radius:5px;height:18px;"[0m[1;34m>[0m[1;37m
|
||||
[0m[1;34m<br[0m[1;34m>[0m[1;37m
|
||||
[0m[1;34m<div[0m[1;30m [0m[1;33mclass=[0m[1;32m"login"[0m[1;30m [0m[1;33mstyle=[0m[1;32m"margin-top:15px;"[0m[1;34m>[0m[1;37mWachtwoord:[0m[1;34m</div[0m[1;34m>[0m[1;37m
|
||||
[0m[1;34m<input[0m[1;30m [0m[1;33mtype=[0m[1;32m"password"[0m[1;30m [0m[1;33mname=[0m[1;32m"password"[0m[1;30m [0m[1;33mclass=[0m[1;32m"login"[0m[1;30m [0m[1;33mstyle=[0m[1;32m"width:80%;border:1px solid rgba(120, 120, 120, 0.7);border-radius:5px;height:18px;"[0m[1;34m>[0m[1;37m
|
||||
[0m[1;34m<input[0m[1;30m [0m[1;33mtype=[0m[1;32m"hidden"[0m[1;30m [0m[1;33mname=[0m[1;32m"submit"[0m[1;30m [0m[1;33mvalue=[0m[1;32m"1"[0m[1;34m>[0m[1;37m
|
||||
[0m[1;34m<input[0m[1;30m [0m[1;33mtype=[0m[1;32m"submit"[0m[1;30m [0m[1;33mvalue=[0m[1;32m"Login"[0m[1;30m [0m[1;33mstyle=[0m[1;32m"height:0;width:0;background:none;border:none;"[0m[1;34m>[0m[1;37m
|
||||
[0m[1;34m</form[0m[1;34m>[0m[1;37m
|
||||
[0m[1;34m</div[0m[1;34m>[0m[1;37m
|
||||
[0m[1;34m<div[0m[1;30m [0m[1;33mid=[0m[1;32m"content"[0m[1;34m>[0m[1;37m
|
||||
[0m[1;34m<video[0m[1;30m [0m[1;33mid=[0m[1;32m"video"[0m[1;30m [0m[1;33mautoplay [0m[1;33mloop[0m[1;34m>[0m[1;37m
|
||||
[0m[1;34m<source[0m[1;30m [0m[1;33msrc=[0m[1;32m"/static/video/root.mp4"[0m[1;30m [0m[1;33mtype=[0m[1;32m"video/mp4"[0m[1;34m>[0m[1;37m
|
||||
[0m[1;34m<source[0m[1;30m [0m[1;33msrc=[0m[1;32m"/static/video/root.webm"[0m[1;30m [0m[1;33mtype=[0m[1;32m"video/webm"[0m[1;34m>[0m[1;37m
|
||||
[0m[1;34m</video[0m[1;34m>[0m[1;37m
|
||||
[0m[1;34m</div[0m[1;34m>[0m[1;37m
|
||||
[0m[1;34m<form[0m[1;30m [0m[1;33maction=[0m[1;32m"javascript:search();"[0m[1;30m [0m[1;33mmethod=[0m[1;32m"get"[0m[1;34m>[0m[1;37m
|
||||
[0m[1;34m<input[0m[1;30m [0m[1;33mtype=[0m[1;32m"text"[0m[1;30m [0m[1;33mname=[0m[1;32m"query"[0m[1;30m [0m[1;33mid=[0m[1;32m"search"[0m[1;30m [0m[1;33msize=[0m[1;32m"40"[0m[1;30m [0m[1;33mvalue=[0m[1;32m" "[0m[1;30m [0m[1;33mautocomplete=[0m[1;32m"off"[0m[1;34m>[0m[1;37m
|
||||
[0m[1;34m<input[0m[1;30m [0m[1;33mtype=[0m[1;32m"submit"[0m[1;30m [0m[1;33mvalue=[0m[1;32m"Search"[0m[1;30m [0m[1;33mstyle=[0m[1;32m"height:0;width:0;background:none;border:none;"[0m[1;34m>[0m[1;37m
|
||||
[0m[1;34m<input[0m[1;30m [0m[1;33mtype=[0m[1;32m"hidden"[0m[1;30m [0m[1;33mname=[0m[1;32m"search"[0m[1;30m [0m[1;33mvalue=[0m[1;32m"1"[0m[1;34m>[0m[1;37m
|
||||
[0m[1;34m</form[0m[1;34m>[0m[1;37m
|
||||
[0m[1;34m<div[0m[1;30m [0m[1;33mid=[0m[1;32m"logindowndiv"[0m[1;34m>[0m[1;37m
|
||||
[0m[1;34m<form[0m[1;30m [0m[1;33maction=[0m[1;32m"/login"[0m[1;30m [0m[1;33mmethod=[0m[1;32m"POST"[0m[1;34m>[0m[1;37m
|
||||
[0m[1;34m<div[0m[1;30m [0m[1;33mclass=[0m[1;32m"login"[0m[1;30m [0m[1;33mstyle=[0m[1;32m"margin-top:25px;"[0m[1;34m>[0m[1;37mGebruikersnaam:[0m[1;34m</div[0m[1;34m>[0m[1;37m
|
||||
[0m[1;34m<input[0m[1;30m [0m[1;33mtype=[0m[1;32m"text"[0m[1;30m [0m[1;33mname=[0m[1;32m"user"[0m[1;30m [0m[1;33mclass=[0m[1;32m"login"[0m[1;30m [0m[1;33mstyle=[0m[1;32m"width:80%;border:1px solid rgba(120, 120, 120, 0.7);border-radius:5px;height:18px;"[0m[1;34m>[0m[1;37m
|
||||
[0m[1;34m<br[0m[1;34m>[0m[1;37m
|
||||
[0m[1;34m<div[0m[1;30m [0m[1;33mclass=[0m[1;32m"login"[0m[1;30m [0m[1;33mstyle=[0m[1;32m"margin-top:15px;"[0m[1;34m>[0m[1;37mWachtwoord:[0m[1;34m</div[0m[1;34m>[0m[1;37m
|
||||
[0m[1;34m<input[0m[1;30m [0m[1;33mtype=[0m[1;32m"password"[0m[1;30m [0m[1;33mname=[0m[1;32m"pass"[0m[1;30m [0m[1;33mclass=[0m[1;32m"login"[0m[1;30m [0m[1;33mstyle=[0m[1;32m"width:80%;border:1px solid rgba(120, 120, 120, 0.7);border-radius:5px;height:18px;"[0m[1;34m>[0m[1;37m
|
||||
[0m[1;34m<input[0m[1;30m [0m[1;33mtype=[0m[1;32m"hidden"[0m[1;30m [0m[1;33mname=[0m[1;32m"sublogin"[0m[1;30m [0m[1;33mvalue=[0m[1;32m"1"[0m[1;34m>[0m[1;37m
|
||||
[0m[1;34m</form[0m[1;34m>[0m[1;37m
|
||||
[0m[1;34m</div[0m[1;34m>[0m[1;37m
|
||||
[0m[1;34m</body[0m[1;34m>[0m[1;37m
|
||||
[0m[1;30m<!-- End of the document -->[0m[1;37m
|
||||
[0m[1;34m</html[0m[1;34m>[0m[1;37m
|
||||
[0m
|
|
@ -0,0 +1,60 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<link rel="shortcut icon" href="/static/images/logo.png" type="image/x-icon">
|
||||
<link rel="stylesheet" type="text/css" href="/static/css/style.css">
|
||||
<title>SyntaxHighligter example</title>
|
||||
<meta http-equiv="content-type" content="text/html; charset=UTF-8" >
|
||||
<meta name="author" content="Thomas Avé" >
|
||||
<script type="text/javascript" src="/static/js/jquery-1.7.1.min.js"></script>
|
||||
<script type="text/javascript" src="/static/js/jquery.slidertron-1.1.js"></script>
|
||||
</head>
|
||||
<body onload="javascript:doStuff()">
|
||||
<!-- This is a comment -->
|
||||
<div id="logotextname">Pellentesque lacus neque, rutrum ut ante et, posuere consequat elit.</div>
|
||||
<div id="logotextfunction" style="letter-spacing:9px;">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</div>
|
||||
<a href="/"><img src="/static/images/logo.png" alt="Logo" id="logo"></a>
|
||||
<nav>
|
||||
<ul class="nav">
|
||||
<li class="nav"><a href="/welkom" class="nav" id="linkwelkom">WELKOM</a></li>
|
||||
<li class="nav"><a href="/werkwijze" class="nav" id="linkwerkwijze">WERKWIJZE</a></li>
|
||||
<li class="nav"><a href="/praktisch" class="nav" id="linkpraktisch">PRAKTISCH</a></li>
|
||||
<li class="nav"><a href="/contact" class="nav" id="linkcontact">CONTACT</a></li>
|
||||
<li class="nav"><a class="nav" id="login" href="javascript:toggle();">LOGIN</a></li>
|
||||
</ul>
|
||||
</nav>
|
||||
<div id="toggleText">
|
||||
<form action="/login" method="POST">
|
||||
<div class="login" style="margin-top:25px;">Gebruikersnaam:</div>
|
||||
<input type="text" name="username" id="username" class="login" style="width:80%;border:1px solid rgba(120, 120, 120, 0.7);border-radius:5px;height:18px;">
|
||||
<br>
|
||||
<div class="login" style="margin-top:15px;">Wachtwoord:</div>
|
||||
<input type="password" name="password" class="login" style="width:80%;border:1px solid rgba(120, 120, 120, 0.7);border-radius:5px;height:18px;">
|
||||
<input type="hidden" name="submit" value="1">
|
||||
<input type="submit" value="Login" style="height:0;width:0;background:none;border:none;">
|
||||
</form>
|
||||
</div>
|
||||
<div id="content">
|
||||
<video id="video" autoplay loop>
|
||||
<source src="/static/video/root.mp4" type="video/mp4">
|
||||
<source src="/static/video/root.webm" type="video/webm">
|
||||
</video>
|
||||
</div>
|
||||
<form action="javascript:search();" method="get">
|
||||
<input type="text" name="query" id="search" size="40" value=" " autocomplete="off">
|
||||
<input type="submit" value="Search" style="height:0;width:0;background:none;border:none;">
|
||||
<input type="hidden" name="search" value="1">
|
||||
</form>
|
||||
<div id="logindowndiv">
|
||||
<form action="/login" method="POST">
|
||||
<div class="login" style="margin-top:25px;">Gebruikersnaam:</div>
|
||||
<input type="text" name="user" class="login" style="width:80%;border:1px solid rgba(120, 120, 120, 0.7);border-radius:5px;height:18px;">
|
||||
<br>
|
||||
<div class="login" style="margin-top:15px;">Wachtwoord:</div>
|
||||
<input type="password" name="pass" class="login" style="width:80%;border:1px solid rgba(120, 120, 120, 0.7);border-radius:5px;height:18px;">
|
||||
<input type="hidden" name="sublogin" value="1">
|
||||
</form>
|
||||
</div>
|
||||
</body>
|
||||
<!-- End of the document -->
|
||||
</html>
|
|
@ -0,0 +1,12 @@
|
|||
MODULE: "Module"
|
||||
MODULE: "module"
|
||||
IDENT: "MODULE"
|
||||
IDENT: "END"
|
||||
END: "end"
|
||||
END: "End"
|
||||
IF: "if"
|
||||
IDENT: "IF"
|
||||
IF: "If"
|
||||
IDENT: "something"
|
||||
IDENT: "random"
|
||||
DONE
|
|
@ -0,0 +1,11 @@
|
|||
Module
|
||||
module
|
||||
MODULE
|
||||
END
|
||||
end
|
||||
End
|
||||
if
|
||||
IF
|
||||
If
|
||||
something random
|
||||
|
Loading…
Reference in New Issue