Commit e5533fce authored by Anders Blomdell's avatar Anders Blomdell
Browse files

Added java to tests

parent 46cfde75
......@@ -11,17 +11,18 @@ clean:
rm -rf gen
.PHONY: test_%
test_%: gen/%/c_relay \
gen/%/cs_code.cs \
test_%: gen/%/signatures.py \
gen/%/c_relay \
gen/%/cs_relay.exe \
gen/%/signatures.py \
gen/%/java_relay.class \
gen/%/java_code
PYTHONPATH=../lib/python ./test_encoder_decoder.py \
--signatures=gen/$*/signatures.py \
--test /bin/tee gen/$*/testdata \
--test gen/$*/c_relay /dev/stdin /dev/stdout \
--test mono gen/$*/cs_relay.exe /dev/stdin /dev/stdout
--test mono gen/$*/cs_relay.exe /dev/stdin /dev/stdout \
--test java \\-cp gen/$*:../lib/java/labcomm.jar java_relay \
/dev/stdin /dev/stdout
.PRECIOUS: gen/%/
gen/%/:
mkdir -p $@
......@@ -77,3 +78,10 @@ gen/%/java_code: %.lc | gen/%/
mkdir -p $@
$(LABCOMM) --java=$@ $<
.PRECIOUS: gen/%/java_relay.java
gen/%/java_relay.java: gen/%/typeinfo relay_gen_java.py Makefile
./relay_gen_java.py $< > $@
.PRECIOUS: gen/%/java_relay.class
gen/%/java_relay.class: gen/%/java_relay.java gen/%/java_code Makefile
javac -d gen/$* -cp ../lib/java/labcomm.jar:gen/$*/java_code $<
#!/usr/bin/python
import re
import sys
def split_match(pattern, multiline):
def match(s):
m = re.match(pattern, s)
if m:
return m.group(1)
pass
return filter(lambda s: s != None, map(match, multiline.split('\n')))
if __name__ == '__main__':
f = open(sys.argv[1])
sample = []
for l in map(lambda s: s.strip(), f):
lang,kind,func,arg = l[1:].split(l[0])
if lang == 'Java' and kind == 'sample':
sample.append((func, arg))
pass
pass
result = []
result.extend(split_match('^[^|]*\|(.*)$', """
|import java.io.FileInputStream;
|import java.io.FileOutputStream;
|import java.io.IOException;
|import se.lth.control.labcomm.LabCommDecoderChannel;
|import se.lth.control.labcomm.LabCommEncoderChannel;
|
|public class java_relay implements
"""))
for func,arg in sample[0:-1]:
result.append(' %s.Handler,' % func)
pass
result.append(' %s.Handler' % sample[-1][0])
result.extend(split_match('^[^|]*\|(.*)$', """
|{
| LabCommEncoderChannel encoder;
"""))
for func,arg in sample:
if arg == 'void':
result.extend(split_match('^[^|]*\|(.*)$', """
| public void handle_%(func)s() throws IOException {
| %(func)s.encode(encoder);
| }
""" % { 'func': func}))
pass
else:
result.extend(split_match('^[^|]*\|(.*)$', """
| public void handle_%(func)s(%(arg)s data) throws IOException {
| %(func)s.encode(encoder, data);
| }
""" % { 'func': func, 'arg': arg}))
pass
pass
result.extend(split_match('^[^|]*\|(.*)$', """
| public java_relay(String InName, String OutName) throws Exception {
| FileInputStream InFile = new FileInputStream(InName);
| LabCommDecoderChannel d = new LabCommDecoderChannel(InFile);
| FileOutputStream OutFile = new FileOutputStream(OutName);
| encoder = new LabCommEncoderChannel(OutFile);
|
"""))
for func,arg in sample:
result.append(' %s.register(d, this);' % func)
pass
for func,arg in sample:
result.append(' %s.register(encoder);' % func)
pass
result.extend(split_match('^[^|]*\|(.*)$', """
| try {
| d.run();
| } catch (java.io.EOFException e) {
| }
| }
| public static void main(String[] arg) throws Exception {
| new java_relay(arg[0], arg[1]);
| }
|}
"""))
print "\n".join(result)
pass
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment